📄 hal_led.lst
字号:
\ 000041 7003 JNZ $+5
\ 000043 02.... LJMP ??HalLedBlink_0 & 0xFFFF
188 {
189 if (percent < 100)
\ 000046 85..82 MOV DPL,?XSP + 0
\ 000049 85..83 MOV DPH,?XSP + 1
\ 00004C E0 MOVX A,@DPTR
\ 00004D C3 CLR C
\ 00004E 9464 SUBB A,#0x64
\ 000050 4003 JC $+5
\ 000052 02.... LJMP ??HalLedBlink_2 & 0xFFFF
190 {
191 led = HAL_LED_1;
\ 000055 75..01 MOV ?V0 + 1,#0x1
192 leds &= HAL_LED_ALL;
\ 000058 53..0F ANL ?V0 + 0,#0xf
193 sts = HalLedStatusControl.HalLedControlTable;
\ 00005B 75.... MOV ?V0 + 2,#(??HalLedStatusControl & 0xff)
\ 00005E 75.... MOV ?V0 + 3,#((??HalLedStatusControl >> 8) & 0xff)
\ 000061 02.... LJMP ??HalLedBlink_3 & 0xFFFF
194
195 while (leds)
196 {
197 if (leds & led)
\ ??HalLedBlink_4:
\ 000064 E5.. MOV A,?V0 + 1
\ 000066 55.. ANL A,?V0 + 0
\ 000068 607E JZ ??HalLedBlink_5
198 {
199 /* Store the current state of the led before going to blinking */
200 preBlinkState |= (led & HalLedState);
\ 00006A 90.... MOV DPTR,#??HalLedState
\ 00006D E0 MOVX A,@DPTR
\ 00006E 55.. ANL A,?V0 + 1
\ 000070 FA MOV R2,A
\ 000071 90.... MOV DPTR,#??preBlinkState
\ 000074 E0 MOVX A,@DPTR
\ 000075 4A ORL A,R2
\ 000076 F0 MOVX @DPTR,A
201
202 sts->mode = HAL_LED_MODE_OFF; /* Stop previous blink */
\ 000077 E4 CLR A
\ 000078 85..82 MOV DPL,?V0 + 2
\ 00007B 85..83 MOV DPH,?V0 + 3
\ 00007E F0 MOVX @DPTR,A
203 sts->time = period; /* Time for one on/off cycle */
\ 00007F 7402 MOV A,#0x2
\ 000081 12.... LCALL ?XSTACK_DISP0_8
\ 000084 E0 MOVX A,@DPTR
\ 000085 F8 MOV R0,A
\ 000086 A3 INC DPTR
\ 000087 E0 MOVX A,@DPTR
\ 000088 F9 MOV R1,A
\ 000089 85..82 MOV DPL,?V0 + 2
\ 00008C 85..83 MOV DPH,?V0 + 3
\ 00008F A3 INC DPTR
\ 000090 A3 INC DPTR
\ 000091 A3 INC DPTR
\ 000092 E8 MOV A,R0
\ 000093 F0 MOVX @DPTR,A
\ 000094 A3 INC DPTR
\ 000095 E9 MOV A,R1
\ 000096 F0 MOVX @DPTR,A
204 sts->onPct = percent; /* % of cycle LED is on */
\ 000097 85..82 MOV DPL,?XSP + 0
\ 00009A 85..83 MOV DPH,?XSP + 1
\ 00009D 12.... LCALL ?Subroutine6 & 0xFFFF
\ ??CrossCallReturnLabel_10:
\ 0000A0 A3 INC DPTR
\ 0000A1 F0 MOVX @DPTR,A
205 sts->todo = numBlinks; /* Number of blink cycles */
\ 0000A2 7401 MOV A,#0x1
\ 0000A4 12.... LCALL ?XSTACK_DISP0_8
\ 0000A7 12.... LCALL ?Subroutine6 & 0xFFFF
\ ??CrossCallReturnLabel_11:
\ 0000AA F0 MOVX @DPTR,A
206 if (!numBlinks) sts->mode |= HAL_LED_MODE_FLASH; /* Continuous */
\ 0000AB 7401 MOV A,#0x1
\ 0000AD 12.... LCALL ?XSTACK_DISP0_8
\ 0000B0 E0 MOVX A,@DPTR
\ 0000B1 7009 JNZ ??HalLedBlink_6
\ 0000B3 7404 MOV A,#0x4
\ 0000B5 85..82 MOV DPL,?V0 + 2
\ 0000B8 85..83 MOV DPH,?V0 + 3
\ 0000BB F0 MOVX @DPTR,A
207 sts->next = osal_GetSystemClock(); /* Start now */
\ ??HalLedBlink_6:
\ 0000BC ; Setup parameters for call to function osal_GetSystemClock
\ 0000BC 90.... MOV DPTR,#(osal_GetSystemClock & 0xffff)
\ 0000BF 74.. MOV A,#((osal_GetSystemClock >> 16) & 0xff)
\ 0000C1 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000C4 85..82 MOV DPL,?V0 + 2
\ 0000C7 85..83 MOV DPH,?V0 + 3
\ 0000CA A3 INC DPTR
\ 0000CB A3 INC DPTR
\ 0000CC A3 INC DPTR
\ 0000CD A3 INC DPTR
\ 0000CE A3 INC DPTR
\ 0000CF EA MOV A,R2
\ 0000D0 F0 MOVX @DPTR,A
\ 0000D1 A3 INC DPTR
\ 0000D2 EB MOV A,R3
\ 0000D3 F0 MOVX @DPTR,A
\ 0000D4 A3 INC DPTR
\ 0000D5 EC MOV A,R4
\ 0000D6 F0 MOVX @DPTR,A
\ 0000D7 A3 INC DPTR
\ 0000D8 ED MOV A,R5
\ 0000D9 F0 MOVX @DPTR,A
208 sts->mode |= HAL_LED_MODE_BLINK; /* Enable blinking */
\ 0000DA 85..82 MOV DPL,?V0 + 2
\ 0000DD 85..83 MOV DPH,?V0 + 3
\ 0000E0 E0 MOVX A,@DPTR
\ 0000E1 D2E1 SETB 0xE0 /* A */.1
\ 0000E3 F0 MOVX @DPTR,A
209 leds ^= led;
\ 0000E4 E5.. MOV A,?V0 + 1
\ 0000E6 62.. XRL ?V0 + 0,A
210 }
211 led <<= 1;
\ ??HalLedBlink_5:
\ 0000E8 E5.. MOV A,?V0 + 1
\ 0000EA C3 CLR C
\ 0000EB 33 RLC A
\ 0000EC F5.. MOV ?V0 + 1,A
212 sts++;
\ 0000EE E5.. MOV A,?V0 + 2
\ 0000F0 2409 ADD A,#0x9
\ 0000F2 F5.. MOV ?V0 + 2,A
\ 0000F4 E5.. MOV A,?V0 + 3
\ 0000F6 3400 ADDC A,#0x0
\ 0000F8 F5.. MOV ?V0 + 3,A
213 }
\ ??HalLedBlink_3:
\ 0000FA E5.. MOV A,?V0 + 0
\ 0000FC 6003 JZ $+5
\ 0000FE 02.... LJMP ??HalLedBlink_4 & 0xFFFF
214 osal_set_event (Hal_TaskID, HAL_LED_BLINK_EVENT);
\ 000101 ; Setup parameters for call to function osal_set_event
\ 000101 7A02 MOV R2,#0x2
\ 000103 7B00 MOV R3,#0x0
\ 000105 90.... MOV DPTR,#Hal_TaskID
\ 000108 E0 MOVX A,@DPTR
\ 000109 F9 MOV R1,A
\ 00010A 90.... MOV DPTR,#(osal_set_event & 0xffff)
\ 00010D 74.. MOV A,#((osal_set_event >> 16) & 0xff)
\ 00010F 800B SJMP ??HalLedBlink_7
215 }
216 else
217 {
218 HalLedSet (leds, HAL_LED_MODE_ON); /* >= 100%, turn on */
\ ??HalLedBlink_2:
\ 000111 ; Setup parameters for call to function HalLedSet
\ 000111 7A01 MOV R2,#0x1
\ 000113 8002 SJMP ??HalLedBlink_8
219 }
220 }
221 else
222 {
223 HalLedSet (leds, HAL_LED_MODE_OFF); /* No on time, turn off */
\ ??HalLedBlink_0:
\ 000115 ; Setup parameters for call to function HalLedSet
\ 000115 7A00 MOV R2,#0x0
\ ??HalLedBlink_8:
\ 000117 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 00011A 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ ??HalLedBlink_7:
\ 00011C 12.... LCALL ?BCALL ; Banked call to: DPTR()
224 }
225 #elif (HAL_LED == TRUE)
226 percent = (leds & HalLedState) ? HAL_LED_MODE_OFF : HAL_LED_MODE_ON;
227 HalLedOnOff (leds, percent); /* Toggle */
228 #endif /* BLINK_LEDS && HAL_LED */
229 }
\ 00011F 7404 MOV A,#0x4
\ 000121 REQUIRE ?Subroutine11
\ 000121 ; // Fall through to label ?Subroutine11
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine11:
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
\ 000003 7F08 MOV R7,#0x8
\ 000005 02.... LJMP ?BANKED_LEAVE_XDATA
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine6:
\ 000000 E0 MOVX A,@DPTR
\ 000001 85..82 MOV DPL,?V0 + 2
\ 000004 85..83 MOV DPH,?V0 + 3
\ 000007 A3 INC DPTR
\ 000008 22 RET
230
231 #if (HAL_LED == TRUE)
232 /***************************************************************************************************
233 * @fn HalLedUpdate
234 *
235 * @brief Update leds to work with blink
236 *
237 * @param none
238 *
239 * @return none
240 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
241 void HalLedUpdate (void)
\ HalLedUpdate:
242 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 10
\ 000005 74F6 MOV A,#-0xa
\ 000007 12.... LCALL ?ALLOC_XSTACK8
243 uint8 led;
244 uint8 pct;
245 uint8 leds;
246 HalLedControl_t *sts;
247 uint32 time;
248 uint16 next;
249 uint16 wait;
250
251 next = 0;
\ 00000A 7404 MOV A,#0x4
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
\ 00000F E4 CLR A
\ 000010 F0 MOVX @DPTR,A
\ 000011 A3 INC DPTR
\ 000012 F0 MOVX @DPTR,A
252 led = HAL_LED_1;
\ 000013 7401 MOV A,#0x1
\ 000015 85..82 MOV DPL,?XSP + 0
\ 000018 85..83 MOV DPH,?XSP + 1
\ 00001B F0 MOVX @DPTR,A
253 leds = HAL_LED_ALL;
\ 00001C 7403 MOV A,#0x3
\ 00001E 12.... LCALL ?XSTACK_DISP0_8
\ 000021 740F MOV A,#0xf
\ 000023 F0 MOVX @DPTR,A
254 sts = HalLedStatusControl.HalLedControlTable;
\ 000024 7401 MOV A,#0x1
\ 000026 12.... LCALL ?XSTACK_DISP0_8
\ 000029 74.. MOV A,#(??HalLedStatusControl & 0xff)
\ 00002B F0 MOVX @DPTR,A
\ 00002C A3 INC DPTR
\ 00002D 74.. MOV A,#((??HalLedStatusControl >> 8) & 0xff)
\ 00002F F0 MOVX @DPTR,A
255
256 /* Check if sleep is active or not */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -