New

Dependents:   main

Committer:
ndiaz6
Date:
Mon Nov 11 18:34:01 2013 +0000
Revision:
0:168c04989363
Yes;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ndiaz6 0:168c04989363 1 AREA segment_driver, CODE, READONLY
ndiaz6 0:168c04989363 2 ;--------------------OVERVIEW------------------------
ndiaz6 0:168c04989363 3 ; This file contains ARM Assembly language functions to
ndiaz6 0:168c04989363 4 ; drive a 7-segment LED Display (Kingbright SA03-11HDB).
ndiaz6 0:168c04989363 5 ; This library uses a switch statement on the input
ndiaz6 0:168c04989363 6 ; register (R0) to set or clear each corresponding lead
ndiaz6 0:168c04989363 7 ; of the display. NOTE: The 7 Segments of the LED display
ndiaz6 0:168c04989363 8 ; must be connected to pins p11 - p17 of the mbed digital
ndiaz6 0:168c04989363 9 ; I/O. For further help with understanding this file,
ndiaz6 0:168c04989363 10 ; please refer to files:
ndiaz6 0:168c04989363 11 ; dig_in.s
ndiaz6 0:168c04989363 12 ; dig_out.s
ndiaz6 0:168c04989363 13 ;------------------------------------------------------
ndiaz6 0:168c04989363 14 ; Import function locations so that C compiler can find it and link
ndiaz6 0:168c04989363 15 IMPORT dig_out_P11
ndiaz6 0:168c04989363 16 IMPORT P11_write
ndiaz6 0:168c04989363 17 IMPORT dig_out_P12
ndiaz6 0:168c04989363 18 IMPORT P12_write
ndiaz6 0:168c04989363 19 IMPORT dig_out_P13
ndiaz6 0:168c04989363 20 IMPORT P13_write
ndiaz6 0:168c04989363 21 IMPORT dig_out_P14
ndiaz6 0:168c04989363 22 IMPORT P14_write
ndiaz6 0:168c04989363 23 IMPORT dig_out_P15
ndiaz6 0:168c04989363 24 IMPORT P15_write
ndiaz6 0:168c04989363 25 IMPORT dig_out_P16
ndiaz6 0:168c04989363 26 IMPORT P16_write
ndiaz6 0:168c04989363 27 IMPORT dig_out_P17
ndiaz6 0:168c04989363 28 IMPORT P17_write
ndiaz6 0:168c04989363 29 ; Export function location so that C compiler can find it and link
ndiaz6 0:168c04989363 30 EXPORT seg_driver_initialize
ndiaz6 0:168c04989363 31 seg_driver_initialize ;CLEAR DISPLAY
ndiaz6 0:168c04989363 32 PUSH {LR}
ndiaz6 0:168c04989363 33 BL dig_out_P11
ndiaz6 0:168c04989363 34 BL dig_out_P12
ndiaz6 0:168c04989363 35 BL dig_out_P13
ndiaz6 0:168c04989363 36 BL dig_out_P14
ndiaz6 0:168c04989363 37 BL dig_out_P15
ndiaz6 0:168c04989363 38 BL dig_out_P16
ndiaz6 0:168c04989363 39 BL dig_out_P17
ndiaz6 0:168c04989363 40 MOV R0,#1
ndiaz6 0:168c04989363 41 BL P11_write
ndiaz6 0:168c04989363 42 BL P12_write
ndiaz6 0:168c04989363 43 BL P13_write
ndiaz6 0:168c04989363 44 BL P14_write
ndiaz6 0:168c04989363 45 BL P15_write
ndiaz6 0:168c04989363 46 BL P16_write
ndiaz6 0:168c04989363 47 BL P17_write
ndiaz6 0:168c04989363 48 POP {LR}
ndiaz6 0:168c04989363 49 BX LR
ndiaz6 0:168c04989363 50
ndiaz6 0:168c04989363 51 ; Export function location so that C compiler can find it and link
ndiaz6 0:168c04989363 52 EXPORT seg_driver
ndiaz6 0:168c04989363 53 seg_driver ;SWITCH STATEMENT
ndiaz6 0:168c04989363 54 PUSH {LR}
ndiaz6 0:168c04989363 55 ADR R2,switchpool
ndiaz6 0:168c04989363 56 LDR PC,[R2,R0,LSL #2]
ndiaz6 0:168c04989363 57 ALIGN
ndiaz6 0:168c04989363 58 switchpool
ndiaz6 0:168c04989363 59 DCD case0
ndiaz6 0:168c04989363 60 DCD case1
ndiaz6 0:168c04989363 61 DCD case2
ndiaz6 0:168c04989363 62 DCD case3
ndiaz6 0:168c04989363 63 DCD case4
ndiaz6 0:168c04989363 64 DCD case5
ndiaz6 0:168c04989363 65 DCD case6
ndiaz6 0:168c04989363 66 DCD case7
ndiaz6 0:168c04989363 67 DCD case8
ndiaz6 0:168c04989363 68 DCD case9
ndiaz6 0:168c04989363 69 case0
ndiaz6 0:168c04989363 70 MOV R0,#0
ndiaz6 0:168c04989363 71 BL P11_write
ndiaz6 0:168c04989363 72 BL P12_write
ndiaz6 0:168c04989363 73 BL P13_write
ndiaz6 0:168c04989363 74 BL P14_write
ndiaz6 0:168c04989363 75 BL P15_write
ndiaz6 0:168c04989363 76 BL P16_write
ndiaz6 0:168c04989363 77 MOV R0,#1
ndiaz6 0:168c04989363 78 BL P17_write
ndiaz6 0:168c04989363 79 B end
ndiaz6 0:168c04989363 80 case1
ndiaz6 0:168c04989363 81 MOV R0,#0
ndiaz6 0:168c04989363 82 BL P12_write
ndiaz6 0:168c04989363 83 BL P13_write
ndiaz6 0:168c04989363 84 MOV R0,#1
ndiaz6 0:168c04989363 85 BL P11_write
ndiaz6 0:168c04989363 86 BL P14_write
ndiaz6 0:168c04989363 87 BL P15_write
ndiaz6 0:168c04989363 88 BL P16_write
ndiaz6 0:168c04989363 89 BL P17_write
ndiaz6 0:168c04989363 90 B end
ndiaz6 0:168c04989363 91 case2
ndiaz6 0:168c04989363 92 MOV R0,#0
ndiaz6 0:168c04989363 93 BL P11_write
ndiaz6 0:168c04989363 94 BL P12_write
ndiaz6 0:168c04989363 95 BL P14_write
ndiaz6 0:168c04989363 96 BL P15_write
ndiaz6 0:168c04989363 97 BL P17_write
ndiaz6 0:168c04989363 98 MOV R0,#1
ndiaz6 0:168c04989363 99 BL P13_write
ndiaz6 0:168c04989363 100 BL P16_write
ndiaz6 0:168c04989363 101 B end
ndiaz6 0:168c04989363 102 case3
ndiaz6 0:168c04989363 103 MOV R0,#0
ndiaz6 0:168c04989363 104 BL P11_write
ndiaz6 0:168c04989363 105 BL P12_write
ndiaz6 0:168c04989363 106 BL P13_write
ndiaz6 0:168c04989363 107 BL P14_write
ndiaz6 0:168c04989363 108 BL P17_write
ndiaz6 0:168c04989363 109 MOV R0,#1
ndiaz6 0:168c04989363 110 BL P15_write
ndiaz6 0:168c04989363 111 BL P16_write
ndiaz6 0:168c04989363 112 B end
ndiaz6 0:168c04989363 113 case4
ndiaz6 0:168c04989363 114 MOV R0,#0
ndiaz6 0:168c04989363 115 BL P12_write
ndiaz6 0:168c04989363 116 BL P13_write
ndiaz6 0:168c04989363 117 BL P16_write
ndiaz6 0:168c04989363 118 BL P17_write
ndiaz6 0:168c04989363 119 MOV R0,#1
ndiaz6 0:168c04989363 120 BL P11_write
ndiaz6 0:168c04989363 121 BL P14_write
ndiaz6 0:168c04989363 122 BL P15_write
ndiaz6 0:168c04989363 123 B end
ndiaz6 0:168c04989363 124 case5
ndiaz6 0:168c04989363 125 MOV R0,#0
ndiaz6 0:168c04989363 126 BL P11_write
ndiaz6 0:168c04989363 127 BL P13_write
ndiaz6 0:168c04989363 128 BL P14_write
ndiaz6 0:168c04989363 129 BL P16_write
ndiaz6 0:168c04989363 130 BL P17_write
ndiaz6 0:168c04989363 131 MOV R0,#1
ndiaz6 0:168c04989363 132 BL P12_write
ndiaz6 0:168c04989363 133 BL P15_write
ndiaz6 0:168c04989363 134 B end
ndiaz6 0:168c04989363 135 case6
ndiaz6 0:168c04989363 136 MOV R0,#0
ndiaz6 0:168c04989363 137 BL P11_write
ndiaz6 0:168c04989363 138 BL P13_write
ndiaz6 0:168c04989363 139 BL P14_write
ndiaz6 0:168c04989363 140 BL P15_write
ndiaz6 0:168c04989363 141 BL P16_write
ndiaz6 0:168c04989363 142 BL P17_write
ndiaz6 0:168c04989363 143 MOV R0,#1
ndiaz6 0:168c04989363 144 BL P12_write
ndiaz6 0:168c04989363 145 B end
ndiaz6 0:168c04989363 146 case7
ndiaz6 0:168c04989363 147 MOV R0,#0
ndiaz6 0:168c04989363 148 BL P11_write
ndiaz6 0:168c04989363 149 BL P12_write
ndiaz6 0:168c04989363 150 BL P13_write
ndiaz6 0:168c04989363 151 MOV R0,#1
ndiaz6 0:168c04989363 152 BL P14_write
ndiaz6 0:168c04989363 153 BL P15_write
ndiaz6 0:168c04989363 154 BL P16_write
ndiaz6 0:168c04989363 155 BL P17_write
ndiaz6 0:168c04989363 156 B end
ndiaz6 0:168c04989363 157 case8
ndiaz6 0:168c04989363 158 MOV R0,#0
ndiaz6 0:168c04989363 159 BL P11_write
ndiaz6 0:168c04989363 160 BL P12_write
ndiaz6 0:168c04989363 161 BL P13_write
ndiaz6 0:168c04989363 162 BL P14_write
ndiaz6 0:168c04989363 163 BL P15_write
ndiaz6 0:168c04989363 164 BL P16_write
ndiaz6 0:168c04989363 165 BL P17_write
ndiaz6 0:168c04989363 166 B end
ndiaz6 0:168c04989363 167 case9
ndiaz6 0:168c04989363 168 MOV R0,#0
ndiaz6 0:168c04989363 169 BL P11_write
ndiaz6 0:168c04989363 170 BL P12_write
ndiaz6 0:168c04989363 171 BL P13_write
ndiaz6 0:168c04989363 172 BL P16_write
ndiaz6 0:168c04989363 173 BL P17_write
ndiaz6 0:168c04989363 174 MOV R0,#1
ndiaz6 0:168c04989363 175 BL P14_write
ndiaz6 0:168c04989363 176 BL P15_write
ndiaz6 0:168c04989363 177 B end
ndiaz6 0:168c04989363 178 end
ndiaz6 0:168c04989363 179 POP {LR}
ndiaz6 0:168c04989363 180 BX LR
ndiaz6 0:168c04989363 181 ;
ndiaz6 0:168c04989363 182 END
ndiaz6 0:168c04989363 183