📄 hal_led.s51
字号:
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 20)
CFI Block cfiCond5 Using cfiCommon0
CFI (cfiCond5) NoFunction
CFI (cfiCond5) Conditional ??CrossCallReturnLabel_11
CFI (cfiCond5) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI (cfiCond5) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond5) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond5) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond5) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond5) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond5) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond5) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond5) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond5) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond5) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond5) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond5) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond5) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond5) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond5) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond5) CFA_SP SP+0
CFI (cfiCond5) CFA_XSP16 add(XSP16, 20)
CFI Block cfiPicker6 Using cfiCommon1
CFI (cfiPicker6) NoFunction
CFI (cfiPicker6) Picker
MOVX A,@DPTR
MOV DPL,?V0 + 2
MOV DPH,?V0 + 3
INC DPTR
RET
CFI EndBlock cfiCond4
CFI EndBlock cfiCond5
CFI EndBlock cfiPicker6
// 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 ***************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 241 void HalLedUpdate (void)
HalLedUpdate:
CFI Block cfiBlock7 Using cfiCommon0
CFI Function HalLedUpdate
// 242 {
FUNCALL HalLedUpdate, osal_GetSystemClock
LOCFRAME XSTACK, 26, STACK
ARGFRAME XSTACK, 26, STACK
FUNCALL HalLedUpdate, HalLedOnOff
LOCFRAME XSTACK, 26, STACK
ARGFRAME XSTACK, 26, STACK
FUNCALL HalLedUpdate, HalLedOnOff
LOCFRAME XSTACK, 26, STACK
ARGFRAME XSTACK, 26, STACK
FUNCALL HalLedUpdate, HalLedSet
LOCFRAME XSTACK, 26, STACK
ARGFRAME XSTACK, 26, STACK
FUNCALL HalLedUpdate, osal_start_timer
LOCFRAME XSTACK, 26, STACK
ARGFRAME XSTACK, 26, STACK
MOV A,#-0x10
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 10
MOV A,#-0xa
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 26)
// 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;
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 252 led = HAL_LED_1;
MOV A,#0x1
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX @DPTR,A
// 253 leds = HAL_LED_ALL;
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOV A,#0xf
MOVX @DPTR,A
// 254 sts = HalLedStatusControl.HalLedControlTable;
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOV A,#(??HalLedStatusControl & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((??HalLedStatusControl >> 8) & 0xff)
MOVX @DPTR,A
// 255
// 256 /* Check if sleep is active or not */
// 257 if (!HalLedStatusControl.sleepActive)
MOV DPTR,#(??HalLedStatusControl + 36)
MOVX A,@DPTR
JZ $+5
LJMP ??HalLedUpdate_0 & 0xFFFF
// 258 {
// 259 while (leds)
// 260 {
// 261 if (leds & led)
??HalLedUpdate_1:
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
MOV R2,A
MOVX A,@DPTR
ANL A,R2
JNZ $+5
LJMP ??HalLedUpdate_2 & 0xFFFF
// 262 {
// 263 if (sts->mode & HAL_LED_MODE_BLINK)
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_5:
JC $+5
LJMP ??HalLedUpdate_3 & 0xFFFF
// 264 {
// 265 time = osal_GetSystemClock();
; Setup parameters for call to function osal_GetSystemClock
MOV DPTR,#(osal_GetSystemClock & 0xffff)
MOV A,#((osal_GetSystemClock >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV ?V0 + 2,R4
MOV ?V0 + 3,R5
MOV A,#0x6
LCALL ?XSTACK_DISP0_8
MOV R0,#?V0 + 0
LCALL ?L_MOV_TO_X
// 266 if (time >= sts->next)
MOV A,#0x6
LCALL ?XSTACK_DISP0_8
PUSH DPL
CFI CFA_SP SP+-1
PUSH DPH
CFI CFA_SP SP+-2
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_0:
LCALL ?L_MOV_X
POP DPH
CFI CFA_SP SP+-1
POP DPL
CFI CFA_SP SP+0
MOV R0,#?V0 + 0
LCALL ?UL_GT_X
JNC $+5
LJMP ??HalLedUpdate_4 & 0xFFFF
// 267 {
// 268 if (sts->mode & HAL_LED_MODE_ON)
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_7:
MOV C,0xE0 /* A */.0
MOV A,#0x1
JNC ??HalLedUpdate_5
// 269 {
// 270 pct = 100 - sts->onPct; /* Percentage of cycle for off */
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_12:
MOV R2,A
MOV A,#0x64
CLR C
SUBB A,R2
MOV ?V0 + 4,A
// 271 sts->mode &= ~HAL_LED_MODE_ON; /* Say it's not on */
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_14:
CLR 0xE0 /* A */.0
MOVX @DPTR,A
// 272 HalLedOnOff (led, HAL_LED_MODE_OFF); /* Turn it off */
; Setup parameters for call to function HalLedOnOff
MOV R2,#0x0
LCALL ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_2:
LCALL ?BCALL ; Banked call to: DPTR()
// 273
// 274 if (!(sts->mode & HAL_LED_MODE_FLASH))
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_8:
MOV C,0xE0 /* A */.2
JC ??HalLedUpdate_6
// 275 {
// 276 sts->todo--; /* Not continuous, reduce count */
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
ADD A,#0x1
INC R0
INC DPTR
MOVX A,@DPTR
ADDC A,#0x0
MOV R1,A
MOV DPL,R0
MOV DPH,R1
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
// 277 if (!sts->todo)
JNZ ??HalLedUpdate_6
// 278 {
// 279 sts->mode ^= HAL_LED_MODE_BLINK; /* No more blinks */
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_9:
XRL A,#0x2
MOVX @DPTR,A
SJMP ??HalLedUpdate_6
// 280 }
// 281 }
// 282 }
// 283 else
// 284 {
// 285 pct = sts->onPct; /* Percentage of cycle for on */
??HalLedUpdate_5:
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_13:
MOV ?V0 + 4,A
// 286 sts->mode |= HAL_LED_MODE_ON; /* Say it's on */
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_15:
SETB 0xE0 /* A */.0
MOVX @DPTR,A
// 287 HalLedOnOff (led, HAL_LED_MODE_ON); /* Turn it on */
; Setup parameters for call to function HalLedOnOff
MOV R2,#0x1
LCALL ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_3:
LCALL ?BCALL ; Banked call to: DPTR()
// 288 }
// 289
// 290 if (sts->mode & HAL_LED_MODE_BLINK)
??HalLedUpdate_6:
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_6:
JNC ??HalLedUpdate_7
// 291 {
// 292 wait = (((uint32)pct * (uint32)sts->time) / 100);
MOV ?V0 + 5,#0x0
MOV ?V0 + 6,#0x0
MOV ?V0 + 7,#0x0
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine9 & 0xFFFF
??CrossCallReturnLabel_18:
MOVX A,@DPTR
MOV ?V0 + 0,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 1,A
MOV ?V0 + 2,#0x0
MOV ?V0 + 3,#0x0
MOV R0,#?V0 + 4
MOV R1,#?V0 + 0
LCALL ?L_MUL
MOV DPTR,#__Constant_64
MOV R0,#?V0 + 0
LCALL ?L_MOV_X
MOV R0,#?V0 + 4
MOV R1,#?V0 + 0
LCALL ?UL_DIV_MOD
MOV R6,?V0 + 4
MOV R7,?V0 + 5
// 293 sts->next = time + wait;
MOV A,#0x6
LCALL ?XSTACK_DISP0_8
MOV ?V0 + 0,R6
MOV ?V0 + 1,R7
MOV ?V0 + 2,#0x0
MOV ?V0 + 3,#0x0
MOV R0,#?V0 + 0
LCALL ?L_ADD_X
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine2 & 0xFFFF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -