📄 led.lst
字号:
\ 00000028 901421E0 MLA R1,R0,R4,R1
\ 0000002C 0900D1E5 LDRB R0,[R1, #+9]
\ 00000030 030050E3 CMP R0,#+3
\ 00000034 0400001A BNE ??LED_Set_2
101
102 PIO_Set(&pinsLeds[led]);
\ 00000038 0C10A0E3 MOV R1,#+12
\ 0000003C ........ LDR R0,??DataTable13 ;; pinsLeds
\ 00000040 910420E0 MLA R0,R1,R4,R0
\ 00000044 ........ BL PIO_Set
\ 00000048 030000EA B ??LED_Set_3
103 }
104 else {
105
106 PIO_Clear(&pinsLeds[led]);
\ ??LED_Set_2:
\ 0000004C 0C10A0E3 MOV R1,#+12
\ 00000050 ........ LDR R0,??DataTable13 ;; pinsLeds
\ 00000054 910420E0 MLA R0,R1,R4,R0
\ 00000058 ........ BL PIO_Clear
107 }
108
109 return 1;
\ ??LED_Set_3:
\ 0000005C 0100A0E3 MOV R0,#+1
\ ??LED_Set_1:
\ 00000060 1040BDE8 POP {R4,LR}
\ 00000064 1EFF2FE1 BX LR ;; return
110 }
111
112 /*
113 Function: LED_Clear
114 Turns a LED off.
115
116 Parameters:
117 led - Number of the LED to turn off.
118
119 Returns:
120 1 if the LED has been turned off; 0 otherwise.
121 */
\ In section .text, align 4, keep-with-next
122 unsigned char LED_Clear(unsigned int led)
123 {
\ LED_Clear:
\ 00000000 10402DE9 PUSH {R4,LR}
\ 00000004 0040B0E1 MOVS R4,R0
124 // Check if LED exists
125 if (led >= numLeds) {
\ 00000008 ........ LDR R0,??DataTable10 ;; numLeds
\ 0000000C 000090E5 LDR R0,[R0, #+0]
\ 00000010 000054E1 CMP R4,R0
\ 00000014 0100003A BCC ??LED_Clear_0
126
127 return 0;
\ 00000018 0000A0E3 MOV R0,#+0
\ 0000001C 0F0000EA B ??LED_Clear_1
128 }
129
130 // Turn LED off
131 if (pinsLeds[led].type == PIO_OUTPUT_0) {
\ ??LED_Clear_0:
\ 00000020 0C00A0E3 MOV R0,#+12
\ 00000024 ........ LDR R1,??DataTable13 ;; pinsLeds
\ 00000028 901421E0 MLA R1,R0,R4,R1
\ 0000002C 0900D1E5 LDRB R0,[R1, #+9]
\ 00000030 030050E3 CMP R0,#+3
\ 00000034 0400001A BNE ??LED_Clear_2
132
133 PIO_Clear(&pinsLeds[led]);
\ 00000038 0C10A0E3 MOV R1,#+12
\ 0000003C ........ LDR R0,??DataTable13 ;; pinsLeds
\ 00000040 910420E0 MLA R0,R1,R4,R0
\ 00000044 ........ BL PIO_Clear
\ 00000048 030000EA B ??LED_Clear_3
134 }
135 else {
136
137 PIO_Set(&pinsLeds[led]);
\ ??LED_Clear_2:
\ 0000004C 0C10A0E3 MOV R1,#+12
\ 00000050 ........ LDR R0,??DataTable13 ;; pinsLeds
\ 00000054 910420E0 MLA R0,R1,R4,R0
\ 00000058 ........ BL PIO_Set
138 }
139
140 return 1;
\ ??LED_Clear_3:
\ 0000005C 0100A0E3 MOV R0,#+1
\ ??LED_Clear_1:
\ 00000060 1040BDE8 POP {R4,LR}
\ 00000064 1EFF2FE1 BX LR ;; return
141 }
142
143 /*
144 Function: LED_Toggle
145 Toggles the current state of a LED.
146
147 Parameters:
148 led - Number of the LED to toggle.
149
150 Returns:
151 1 if the LED has been toggled; otherwise 0.
152 */
\ In section .text, align 4, keep-with-next
153 unsigned char LED_Toggle(unsigned int led)
154 {
\ LED_Toggle:
\ 00000000 10402DE9 PUSH {R4,LR}
\ 00000004 0040B0E1 MOVS R4,R0
155 // Check if LED exists
156 if (led >= numLeds) {
\ 00000008 ........ LDR R0,??DataTable10 ;; numLeds
\ 0000000C 000090E5 LDR R0,[R0, #+0]
\ 00000010 000054E1 CMP R4,R0
\ 00000014 0100003A BCC ??LED_Toggle_0
157
158 return 0;
\ 00000018 0000A0E3 MOV R0,#+0
\ 0000001C 0F0000EA B ??LED_Toggle_1
159 }
160
161 // Toggle LED
162 if (PIO_GetOutputDataStatus(&pinsLeds[led])) {
\ ??LED_Toggle_0:
\ 00000020 0C10A0E3 MOV R1,#+12
\ 00000024 ........ LDR R0,??DataTable13 ;; pinsLeds
\ 00000028 910420E0 MLA R0,R1,R4,R0
\ 0000002C ........ BL PIO_GetOutputDataStatus
\ 00000030 000050E3 CMP R0,#+0
\ 00000034 0400000A BEQ ??LED_Toggle_2
163
164 PIO_Clear(&pinsLeds[led]);
\ 00000038 0C10A0E3 MOV R1,#+12
\ 0000003C ........ LDR R0,??DataTable13 ;; pinsLeds
\ 00000040 910420E0 MLA R0,R1,R4,R0
\ 00000044 ........ BL PIO_Clear
\ 00000048 030000EA B ??LED_Toggle_3
165 }
166 else {
167
168 PIO_Set(&pinsLeds[led]);
\ ??LED_Toggle_2:
\ 0000004C 0C10A0E3 MOV R1,#+12
\ 00000050 ........ LDR R0,??DataTable13 ;; pinsLeds
\ 00000054 910420E0 MLA R0,R1,R4,R0
\ 00000058 ........ BL PIO_Set
169 }
170
171 return 1;
\ ??LED_Toggle_3:
\ 0000005C 0100A0E3 MOV R0,#+1
\ ??LED_Toggle_1:
\ 00000060 1040BDE8 POP {R4,LR}
\ 00000064 1EFF2FE1 BX LR ;; return
172 }
\ In section .text, align 4, keep-with-next
\ ??DataTable10:
\ 00000000 ........ DC32 numLeds
\ In section .text, align 4, keep-with-next
\ ??DataTable13:
\ 00000000 ........ DC32 pinsLeds
173
Maximum stack usage in bytes:
Function .cstack
-------- -------
LED_Clear 8
LED_Configure 8
LED_Set 8
LED_Toggle 8
Section sizes:
Function/Label Bytes
-------------- -----
pinsLeds 36
numLeds 4
LED_Configure 60
LED_Set 104
LED_Clear 104
LED_Toggle 104
??DataTable10 4
??DataTable13 4
40 bytes in section .rodata
380 bytes in section .text
380 bytes of CODE memory
40 bytes of CONST memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -