hal_led.lst
来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,209 行 · 第 1/5 页
LST
1,209 行
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 */
257 if (!HalLedStatusControl.sleepActive)
\ 000030 90.... MOV DPTR,#(??HalLedStatusControl + 36)
\ 000033 E0 MOVX A,@DPTR
\ 000034 6003 JZ $+5
\ 000036 02.... LJMP ??HalLedUpdate_0 & 0xFFFF
258 {
259 while (leds)
260 {
261 if (leds & led)
\ ??HalLedUpdate_1:
\ 000039 85..82 MOV DPL,?XSP + 0
\ 00003C 85..83 MOV DPH,?XSP + 1
\ 00003F E0 MOVX A,@DPTR
\ 000040 C0E0 PUSH A
\ 000042 7403 MOV A,#0x3
\ 000044 12.... LCALL ?XSTACK_DISP0_8
\ 000047 D0E0 POP A
\ 000049 FA MOV R2,A
\ 00004A E0 MOVX A,@DPTR
\ 00004B 5A ANL A,R2
\ 00004C 7003 JNZ $+5
\ 00004E 02.... LJMP ??HalLedUpdate_2 & 0xFFFF
262 {
263 if (sts->mode & HAL_LED_MODE_BLINK)
\ 000051 7401 MOV A,#0x1
\ 000053 12.... LCALL ?XSTACK_DISP0_8
\ 000056 12.... LCALL ?Subroutine4 & 0xFFFF
\ ??CrossCallReturnLabel_5:
\ 000059 4003 JC $+5
\ 00005B 02.... LJMP ??HalLedUpdate_3 & 0xFFFF
264 {
265 time = osal_GetSystemClock();
\ 00005E ; Setup parameters for call to function osal_GetSystemClock
\ 00005E 90.... MOV DPTR,#(osal_GetSystemClock & 0xffff)
\ 000061 74.. MOV A,#((osal_GetSystemClock >> 16) & 0xff)
\ 000063 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000066 8A.. MOV ?V0 + 0,R2
\ 000068 8B.. MOV ?V0 + 1,R3
\ 00006A 8C.. MOV ?V0 + 2,R4
\ 00006C 8D.. MOV ?V0 + 3,R5
\ 00006E 7406 MOV A,#0x6
\ 000070 12.... LCALL ?XSTACK_DISP0_8
\ 000073 78.. MOV R0,#?V0 + 0
\ 000075 12.... LCALL ?L_MOV_TO_X
266 if (time >= sts->next)
\ 000078 7406 MOV A,#0x6
\ 00007A 12.... LCALL ?XSTACK_DISP0_8
\ 00007D C082 PUSH DPL
\ 00007F C083 PUSH DPH
\ 000081 7401 MOV A,#0x1
\ 000083 12.... LCALL ?XSTACK_DISP0_8
\ 000086 12.... LCALL ?Subroutine2 & 0xFFFF
\ ??CrossCallReturnLabel_0:
\ 000089 12.... LCALL ?L_MOV_X
\ 00008C D083 POP DPH
\ 00008E D082 POP DPL
\ 000090 78.. MOV R0,#?V0 + 0
\ 000092 12.... LCALL ?UL_GT_X
\ 000095 5003 JNC $+5
\ 000097 02.... LJMP ??HalLedUpdate_4 & 0xFFFF
267 {
268 if (sts->mode & HAL_LED_MODE_ON)
\ 00009A 7401 MOV A,#0x1
\ 00009C 12.... LCALL ?XSTACK_DISP0_8
\ 00009F 12.... LCALL ?Subroutine5 & 0xFFFF
\ ??CrossCallReturnLabel_7:
\ 0000A2 A2E0 MOV C,0xE0 /* A */.0
\ 0000A4 7401 MOV A,#0x1
\ 0000A6 5050 JNC ??HalLedUpdate_5
269 {
270 pct = 100 - sts->onPct; /* Percentage of cycle for off */
\ 0000A8 12.... LCALL ?XSTACK_DISP0_8
\ 0000AB 12.... LCALL ?Subroutine7 & 0xFFFF
\ ??CrossCallReturnLabel_12:
\ 0000AE FA MOV R2,A
\ 0000AF 7464 MOV A,#0x64
\ 0000B1 C3 CLR C
\ 0000B2 9A SUBB A,R2
\ 0000B3 F5.. MOV ?V0 + 4,A
271 sts->mode &= ~HAL_LED_MODE_ON; /* Say it's not on */
\ 0000B5 7401 MOV A,#0x1
\ 0000B7 12.... LCALL ?XSTACK_DISP0_8
\ 0000BA 12.... LCALL ??Subroutine8_0 & 0xFFFF
\ ??CrossCallReturnLabel_14:
\ 0000BD C2E0 CLR 0xE0 /* A */.0
\ 0000BF F0 MOVX @DPTR,A
272 HalLedOnOff (led, HAL_LED_MODE_OFF); /* Turn it off */
\ 0000C0 ; Setup parameters for call to function HalLedOnOff
\ 0000C0 7A00 MOV R2,#0x0
\ 0000C2 12.... LCALL ?Subroutine3 & 0xFFFF
\ ??CrossCallReturnLabel_2:
\ 0000C5 12.... LCALL ?BCALL ; Banked call to: DPTR()
273
274 if (!(sts->mode & HAL_LED_MODE_FLASH))
\ 0000C8 7401 MOV A,#0x1
\ 0000CA 12.... LCALL ?XSTACK_DISP0_8
\ 0000CD 12.... LCALL ?Subroutine5 & 0xFFFF
\ ??CrossCallReturnLabel_8:
\ 0000D0 A2E2 MOV C,0xE0 /* A */.2
\ 0000D2 403F JC ??HalLedUpdate_6
275 {
276 sts->todo--; /* Not continuous, reduce count */
\ 0000D4 7401 MOV A,#0x1
\ 0000D6 12.... LCALL ?XSTACK_DISP0_8
\ 0000D9 E0 MOVX A,@DPTR
\ 0000DA 2401 ADD A,#0x1
\ 0000DC 08 INC R0
\ 0000DD A3 INC DPTR
\ 0000DE E0 MOVX A,@DPTR
\ 0000DF 3400 ADDC A,#0x0
\ 0000E1 F9 MOV R1,A
\ 0000E2 8882 MOV DPL,R0
\ 0000E4 8983 MOV DPH,R1
\ 0000E6 E0 MOVX A,@DPTR
\ 0000E7 14 DEC A
\ 0000E8 F0 MOVX @DPTR,A
277 if (!sts->todo)
\ 0000E9 7028 JNZ ??HalLedUpdate_6
278 {
279 sts->mode ^= HAL_LED_MODE_BLINK; /* No more blinks */
\ 0000EB 7401 MOV A,#0x1
\ 0000ED 12.... LCALL ?XSTACK_DISP0_8
\ 0000F0 12.... LCALL ?Subroutine5 & 0xFFFF
\ ??CrossCallReturnLabel_9:
\ 0000F3 6402 XRL A,#0x2
\ 0000F5 F0 MOVX @DPTR,A
\ 0000F6 801B SJMP ??HalLedUpdate_6
280 }
281 }
282 }
283 else
284 {
285 pct = sts->onPct; /* Percentage of cycle for on */
\ ??HalLedUpdate_5:
\ 0000F8 12.... LCALL ?XSTACK_DISP0_8
\ 0000FB 12.... LCALL ?Subroutine7 & 0xFFFF
\ ??CrossCallReturnLabel_13:
\ 0000FE F5.. MOV ?V0 + 4,A
286 sts->mode |= HAL_LED_MODE_ON; /* Say it's on */
\ 000100 7401 MOV A,#0x1
\ 000102 12.... LCALL ?XSTACK_DISP0_8
\ 000105 12.... LCALL ??Subroutine8_0 & 0xFFFF
\ ??CrossCallReturnLabel_15:
\ 000108 D2E0 SETB 0xE0 /* A */.0
\ 00010A F0 MOVX @DPTR,A
287 HalLedOnOff (led, HAL_LED_MODE_ON); /* Turn it on */
\ 00010B ; Setup parameters for call to function HalLedOnOff
\ 00010B 7A01 MOV R2,#0x1
\ 00010D 12.... LCALL ?Subroutine3 & 0xFFFF
\ ??CrossCallReturnLabel_3:
\ 000110 12.... LCALL ?BCALL ; Banked call to: DPTR()
288 }
289
290 if (sts->mode & HAL_LED_MODE_BLINK)
\ ??HalLedUpdate_6:
\ 000113 7401 MOV A,#0x1
\ 000115 12.... LCALL ?XSTACK_DISP0_8
\ 000118 12.... LCALL ?Subroutine4 & 0xFFFF
\ ??CrossCallReturnLabel_6:
\ 00011B 5059 JNC ??HalLedUpdate_7
291 {
292 wait = (((uint32)pct * (uint32)sts->time) / 100);
\ 00011D 75..00 MOV ?V0 + 5,#0x0
\ 000120 75..00 MOV ?V0 + 6,#0x0
\ 000123 75..00 MOV ?V0 + 7,#0x0
\ 000126 7401 MOV A,#0x1
\ 000128 12.... LCALL ?XSTACK_DISP0_8
\ 00012B 12.... LCALL ?Subroutine9 & 0xFFFF
\ ??CrossCallReturnLabel_18:
\ 00012E E0 MOVX A,@DPTR
\ 00012F F5.. MOV ?V0 + 0,A
\ 000131 A3 INC DPTR
\ 000132 E0 MOVX A,@DPTR
\ 000133 F5.. MOV ?V0 + 1,A
\ 000135 75..00 MOV ?V0 + 2,#0x0
\ 000138 75..00 MOV ?V0 + 3,#0x0
\ 00013B 78.. MOV R0,#?V0 + 4
\ 00013D 79.. MOV R1,#?V0 + 0
\ 00013F 12.... LCALL ?L_MUL
\ 000142 90.... MOV DPTR,#__Constant_64
\ 000145 78.. MOV R0,#?V0 + 0
\ 000147 12.... LCALL ?L_MOV_X
\ 00014A 78.. MOV R0,#?V0 + 4
\ 00014C 79.. MOV R1,#?V0 + 0
\ 00014E 12.... LCALL ?UL_DIV_MOD
\ 000151 AE.. MOV R6,?V0 + 4
\ 000153 AF.. MOV R7,?V0 + 5
293 sts->next = time + wait;
\ 000155 7406 MOV A,#0x6
\ 000157 12.... LCALL ?XSTACK_DISP0_8
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?