📄 led.lst
字号:
\ 00000008 0000A023 MOVCS R0,#+0
\ 0000000C 0C00002A BCS ??LED_Set_0
85 }
86
87 // Turn LED on
88 if (pinsLeds[led].type == PIO_OUTPUT_0) {
\ 00000010 0C10A0E3 MOV R1,#+12
\ 00000014 ........ LDR R2,??DataTable6 ;; pinsLeds
\ 00000018 912022E0 MLA R2,R1,R0,R2
\ 0000001C 0910D2E5 LDRB R1,[R2, #+9]
\ 00000020 030051E3 CMP R1,#+3
\ 00000024 0C10A0E3 MOV R1,#+12
\ 00000028 ........ LDR R2,??DataTable6 ;; pinsLeds
\ 0000002C 912020E0 MLA R0,R1,R0,R2
\ 00000030 0100001A BNE ??LED_Set_1
89
90 PIO_Set(&pinsLeds[led]);
\ 00000034 ........ BL PIO_Set
\ 00000038 000000EA B ??LED_Set_2
91 }
92 else {
93
94 PIO_Clear(&pinsLeds[led]);
\ ??LED_Set_1:
\ 0000003C ........ BL PIO_Clear
95 }
96
97 return 1;
\ ??LED_Set_2:
\ 00000040 0100A0E3 MOV R0,#+1
\ ??LED_Set_0:
\ 00000044 0240BDE8 POP {R1,LR}
\ 00000048 1EFF2FE1 BX LR ;; return
98 #else
99 return 0;
100 #endif
101 }
102
103 //------------------------------------------------------------------------------
104 /// Turns a LED off.
105 /// \param led Number of the LED to turn off.
106 /// \param 1 if the LED has been turned off; 0 otherwise.
107 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
108 unsigned char LED_Clear(unsigned int led)
109 {
\ LED_Clear:
\ 00000000 00502DE9 PUSH {R12,LR}
110 #ifdef PINS_LEDS
111 // Check if LED exists
112 if (led >= numLeds) {
\ 00000004 040050E3 CMP R0,#+4
113
114 return 0;
\ 00000008 0000A023 MOVCS R0,#+0
\ 0000000C 0C00002A BCS ??LED_Clear_0
115 }
116
117 // Turn LED off
118 if (pinsLeds[led].type == PIO_OUTPUT_0) {
\ 00000010 0C10A0E3 MOV R1,#+12
\ 00000014 ........ LDR R2,??DataTable6 ;; pinsLeds
\ 00000018 912022E0 MLA R2,R1,R0,R2
\ 0000001C 0910D2E5 LDRB R1,[R2, #+9]
\ 00000020 030051E3 CMP R1,#+3
\ 00000024 0C10A0E3 MOV R1,#+12
\ 00000028 ........ LDR R2,??DataTable6 ;; pinsLeds
\ 0000002C 912020E0 MLA R0,R1,R0,R2
\ 00000030 0100001A BNE ??LED_Clear_1
119
120 PIO_Clear(&pinsLeds[led]);
\ 00000034 ........ BL PIO_Clear
\ 00000038 000000EA B ??LED_Clear_2
121 }
122 else {
123
124 PIO_Set(&pinsLeds[led]);
\ ??LED_Clear_1:
\ 0000003C ........ BL PIO_Set
125 }
126
127 return 1;
\ ??LED_Clear_2:
\ 00000040 0100A0E3 MOV R0,#+1
\ ??LED_Clear_0:
\ 00000044 0240BDE8 POP {R1,LR}
\ 00000048 1EFF2FE1 BX LR ;; return
128 #else
129 return 0;
130 #endif
131 }
132
133 //------------------------------------------------------------------------------
134 /// Toggles the current state of a LED.
135 /// \param led Number of the LED to toggle.
136 /// \return 1 if the LED has been toggled; otherwise 0.
137 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
138 unsigned char LED_Toggle(unsigned int led)
139 {
\ LED_Toggle:
\ 00000000 10402DE9 PUSH {R4,LR}
\ 00000004 0040A0E1 MOV R4,R0
140 #ifdef PINS_LEDS
141 // Check if LED exists
142 if (led >= numLeds) {
\ 00000008 040054E3 CMP R4,#+4
143
144 return 0;
\ 0000000C 0000A023 MOVCS R0,#+0
\ 00000010 0C00002A BCS ??LED_Toggle_0
145 }
146
147 // Toggle LED
148 if (PIO_GetOutputDataStatus(&pinsLeds[led])) {
\ 00000014 0C10A0E3 MOV R1,#+12
\ 00000018 ........ LDR R0,??DataTable6 ;; pinsLeds
\ 0000001C 910420E0 MLA R0,R1,R4,R0
\ 00000020 ........ BL PIO_GetOutputDataStatus
\ 00000024 000050E3 CMP R0,#+0
\ 00000028 0C10A0E3 MOV R1,#+12
\ 0000002C ........ LDR R0,??DataTable6 ;; pinsLeds
\ 00000030 910420E0 MLA R0,R1,R4,R0
\ 00000034 0100000A BEQ ??LED_Toggle_1
149
150 PIO_Clear(&pinsLeds[led]);
\ 00000038 ........ BL PIO_Clear
\ 0000003C 000000EA B ??LED_Toggle_2
151 }
152 else {
153
154 PIO_Set(&pinsLeds[led]);
\ ??LED_Toggle_1:
\ 00000040 ........ BL PIO_Set
155 }
156
157 return 1;
\ ??LED_Toggle_2:
\ 00000044 0100A0E3 MOV R0,#+1
\ ??LED_Toggle_0:
\ 00000048 1040BDE8 POP {R4,LR}
\ 0000004C 1EFF2FE1 BX LR ;; return
158 #else
159 return 0;
160 #endif
161 }
\ In section .text, align 4, keep-with-next
\ ??DataTable6:
\ 00000000 ........ DC32 pinsLeds
162
Maximum stack usage in bytes:
Function .cstack
-------- -------
LED_Clear 0
LED_Configure 0
LED_Set 0
LED_Toggle 0
Section sizes:
Function/Label Bytes
-------------- -----
pinsLeds 48
LED_Configure 44
LED_Set 76
LED_Clear 76
LED_Toggle 80
??DataTable6 4
48 bytes in section .rodata
280 bytes in section .text
280 bytes of CODE memory
48 bytes of CONST memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -