New
segment_driver.s@0:168c04989363, 2013-11-11 (annotated)
- Committer:
- ndiaz6
- Date:
- Mon Nov 11 18:34:01 2013 +0000
- Revision:
- 0:168c04989363
Yes;
Who changed what in which revision?
User | Revision | Line number | New 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 |