📄 hal_led.s51
字号:
MOV A,#0x8
XRL A,?V0 + 1
MOV DPL,R6
MOV DPH,R7
JZ ??HalLedSet_6
MOV A,?V0 + 1
SJMP ??HalLedSet_7
CFI EndBlock cfiBlock1
// 165
// 166 }
// 167
// 168 /***************************************************************************************************
// 169 * @fn HalLedBlink
// 170 *
// 171 * @brief Blink the leds
// 172 *
// 173 * @param leds - bit mask value of leds to be blinked
// 174 * numBlinks - number of blinks
// 175 * percent - the percentage in each period where the led
// 176 * will be on
// 177 * period - length of each cycle in milliseconds
// 178 *
// 179 * @return None
// 180 ***************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 181 void HalLedBlink (uint8 leds, uint8 numBlinks, uint8 percent, uint16 period)
HalLedBlink:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function HalLedBlink
// 182 {
FUNCALL HalLedBlink, osal_GetSystemClock
LOCFRAME XSTACK, 20, STACK
ARGFRAME XSTACK, 20, STACK
FUNCALL HalLedBlink, osal_set_event
LOCFRAME XSTACK, 20, STACK
ARGFRAME XSTACK, 20, STACK
FUNCALL HalLedBlink, HalLedSet
LOCFRAME XSTACK, 20, STACK
ARGFRAME XSTACK, 20, STACK
FUNCALL HalLedBlink, HalLedSet
LOCFRAME XSTACK, 20, STACK
ARGFRAME XSTACK, 20, 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: 4
MOV A,#-0x4
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 20)
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOV A,R2
MOVX @DPTR,A
MOV A,R3
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX @DPTR,A
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
MOV ?V0 + 0,R1
// 183 #if (defined (BLINK_LEDS)) && (HAL_LED == TRUE)
// 184 uint8 led;
// 185 HalLedControl_t *sts;
// 186
// 187 if (leds && percent && period)
MOV A,R1
JNZ $+5
LJMP ??HalLedBlink_0 & 0xFFFF
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
JNZ $+5
LJMP ??HalLedBlink_0 & 0xFFFF
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
JNZ ??HalLedBlink_1
INC DPTR
MOVX A,@DPTR
??HalLedBlink_1:
JNZ $+5
LJMP ??HalLedBlink_0 & 0xFFFF
// 188 {
// 189 if (percent < 100)
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
CLR C
SUBB A,#0x64
JC $+5
LJMP ??HalLedBlink_2 & 0xFFFF
// 190 {
// 191 led = HAL_LED_1;
MOV ?V0 + 1,#0x1
// 192 leds &= HAL_LED_ALL;
ANL ?V0 + 0,#0xf
// 193 sts = HalLedStatusControl.HalLedControlTable;
MOV ?V0 + 2,#(??HalLedStatusControl & 0xff)
MOV ?V0 + 3,#((??HalLedStatusControl >> 8) & 0xff)
LJMP ??HalLedBlink_3 & 0xFFFF
// 194
// 195 while (leds)
// 196 {
// 197 if (leds & led)
??HalLedBlink_4:
MOV A,?V0 + 1
ANL A,?V0 + 0
JZ ??HalLedBlink_5
// 198 {
// 199 /* Store the current state of the led before going to blinking */
// 200 preBlinkState |= (led & HalLedState);
MOV DPTR,#??HalLedState
MOVX A,@DPTR
ANL A,?V0 + 1
MOV R2,A
MOV DPTR,#??preBlinkState
MOVX A,@DPTR
ORL A,R2
MOVX @DPTR,A
// 201
// 202 sts->mode = HAL_LED_MODE_OFF; /* Stop previous blink */
CLR A
MOV DPL,?V0 + 2
MOV DPH,?V0 + 3
MOVX @DPTR,A
// 203 sts->time = period; /* Time for one on/off cycle */
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPL,?V0 + 2
MOV DPH,?V0 + 3
INC DPTR
INC DPTR
INC DPTR
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
// 204 sts->onPct = percent; /* % of cycle LED is on */
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_10:
INC DPTR
MOVX @DPTR,A
// 205 sts->todo = numBlinks; /* Number of blink cycles */
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_11:
MOVX @DPTR,A
// 206 if (!numBlinks) sts->mode |= HAL_LED_MODE_FLASH; /* Continuous */
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
JNZ ??HalLedBlink_6
MOV A,#0x4
MOV DPL,?V0 + 2
MOV DPH,?V0 + 3
MOVX @DPTR,A
// 207 sts->next = osal_GetSystemClock(); /* Start now */
??HalLedBlink_6:
; 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 DPL,?V0 + 2
MOV DPH,?V0 + 3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
// 208 sts->mode |= HAL_LED_MODE_BLINK; /* Enable blinking */
MOV DPL,?V0 + 2
MOV DPH,?V0 + 3
MOVX A,@DPTR
SETB 0xE0 /* A */.1
MOVX @DPTR,A
// 209 leds ^= led;
MOV A,?V0 + 1
XRL ?V0 + 0,A
// 210 }
// 211 led <<= 1;
??HalLedBlink_5:
MOV A,?V0 + 1
CLR C
RLC A
MOV ?V0 + 1,A
// 212 sts++;
MOV A,?V0 + 2
ADD A,#0x9
MOV ?V0 + 2,A
MOV A,?V0 + 3
ADDC A,#0x0
MOV ?V0 + 3,A
// 213 }
??HalLedBlink_3:
MOV A,?V0 + 0
JZ $+5
LJMP ??HalLedBlink_4 & 0xFFFF
// 214 osal_set_event (Hal_TaskID, HAL_LED_BLINK_EVENT);
; Setup parameters for call to function osal_set_event
MOV R2,#0x2
MOV R3,#0x0
MOV DPTR,#Hal_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(osal_set_event & 0xffff)
MOV A,#((osal_set_event >> 16) & 0xff)
SJMP ??HalLedBlink_7
// 215 }
// 216 else
// 217 {
// 218 HalLedSet (leds, HAL_LED_MODE_ON); /* >= 100%, turn on */
??HalLedBlink_2:
; Setup parameters for call to function HalLedSet
MOV R2,#0x1
SJMP ??HalLedBlink_8
// 219 }
// 220 }
// 221 else
// 222 {
// 223 HalLedSet (leds, HAL_LED_MODE_OFF); /* No on time, turn off */
??HalLedBlink_0:
; Setup parameters for call to function HalLedSet
MOV R2,#0x0
??HalLedBlink_8:
MOV DPTR,#(HalLedSet & 0xffff)
MOV A,#((HalLedSet >> 16) & 0xff)
??HalLedBlink_7:
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 }
MOV A,#0x4
CFI EndBlock cfiBlock2
REQUIRE ?Subroutine11
; // Fall through to label ?Subroutine11
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine11:
CFI Block cfiBlock3 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 20)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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 Invalid
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 16)
CFI Valid
MOV R7,#0x8
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock3
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine6:
CFI Block cfiCond4 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_10
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -