📄 hal_timer.s51
字号:
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock16
// 341
// 342 /***************************************************************************************************
// 343 * @fn HalTimerTick
// 344 *
// 345 * @brief Check the counter for expired counter.
// 346 *
// 347 * @param None
// 348 *
// 349 * @return None
// 350 ***************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 351 void HalTimerTick (void)
HalTimerTick:
CFI Block cfiBlock17 Using cfiCommon0
CFI Function HalTimerTick
// 352 {
FUNCALL HalTimerTick, halProcessTimer1
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL HalTimerTick, halProcessTimer3
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL HalTimerTick, halProcessTimer4
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 353 if (!halTimerRecord[HW_TIMER_1].intEnable)
MOV DPTR,#(??halTimerRecord + 1)
MOVX A,@DPTR
JNZ ??HalTimerTick_0
// 354 {
// 355 halProcessTimer1 ();
; Setup parameters for call to function halProcessTimer1
MOV DPTR,#(halProcessTimer1 & 0xffff)
MOV A,#((halProcessTimer1 >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 356 }
// 357
// 358 if (!halTimerRecord[HW_TIMER_3].intEnable)
??HalTimerTick_0:
MOV DPTR,#(??halTimerRecord + 12)
MOVX A,@DPTR
JNZ ??HalTimerTick_1
// 359 {
// 360 halProcessTimer3 ();
; Setup parameters for call to function halProcessTimer3
MOV DPTR,#(halProcessTimer3 & 0xffff)
MOV A,#((halProcessTimer3 >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 361 }
// 362
// 363 if (!halTimerRecord[HW_TIMER_4].intEnable)
??HalTimerTick_1:
MOV DPTR,#(??halTimerRecord + 23)
MOVX A,@DPTR
JNZ ??HalTimerTick_2
// 364 {
// 365 halProcessTimer4 ();
; Setup parameters for call to function halProcessTimer4
MOV DPTR,#(halProcessTimer4 & 0xffff)
MOV A,#((halProcessTimer4 >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 366 }
// 367 }
??HalTimerTick_2:
LJMP ?Subroutine13 & 0xFFFF
CFI EndBlock cfiBlock17
// 368
// 369 /***************************************************************************************************
// 370 * @fn HalTimerStop
// 371 *
// 372 * @brief Stop the Timer Service
// 373 *
// 374 * @param timerId - ID of the timer
// 375 *
// 376 * @return Status - OK or Not OK
// 377 ***************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 378 uint8 HalTimerStop (uint8 timerId)
HalTimerStop:
CFI Block cfiBlock18 Using cfiCommon0
CFI Function HalTimerStop
// 379 {
FUNCALL HalTimerStop, halTimerRemap
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL HalTimerStop, halTimerSetOpMode
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 380 uint8 hwtimerid;
// 381
// 382 hwtimerid = halTimerRemap (timerId);
// 383
// 384 switch (hwtimerid)
; Setup parameters for call to function halTimerRemap
MOV DPTR,#(halTimerRemap & 0xffff)
MOV A,#((halTimerRemap >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
LCALL ?UC_SWITCH_DENSE
`?<Jumptable for HalTimerStop>_0`:
DB 0
DB 2
DW ??HalTimerStop_0
DW ??HalTimerStop_1
DW ??HalTimerStop_2
DW ??HalTimerStop_3
// 385 {
// 386 case HW_TIMER_1:
// 387 halTimerSetOpMode(HW_TIMER_1, HAL_TIMER_MODE_STOP);
??HalTimerStop_1:
; Setup parameters for call to function halTimerSetOpMode
MOV R2,#0x3
MOV R1,#0x0
MOV DPTR,#(halTimerSetOpMode & 0xffff)
MOV A,#((halTimerSetOpMode >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 388 break;
// 389 case HW_TIMER_3:
// 390 T3CTL &= ~(HAL_TIMER34_START);
// 391 break;
// 392 case HW_TIMER_4:
// 393 T4CTL &= ~(HAL_TIMER34_START);
// 394 break;
// 395 default:
// 396 return HAL_TIMER_INVALID_ID;
// 397 }
// 398 return HAL_TIMER_OK;
??HalTimerStop_4:
MOV R1,#0x0
??HalTimerStop_5:
LJMP ?Subroutine13 & 0xFFFF
??HalTimerStop_2:
ANL 0xcb,#0xef
SJMP ??HalTimerStop_4
??HalTimerStop_3:
ANL 0xeb,#0xef
SJMP ??HalTimerStop_4
??HalTimerStop_0:
MOV R1,#0x4
SJMP ??HalTimerStop_5
CFI EndBlock cfiBlock18
// 399 }
// 400
// 401 /***************************************************************************************************
// 402 * @fn halTimerSetCount
// 403 *
// 404 * @brief Stop the Timer Service
// 405 *
// 406 * @param hwtimerid - ID of the timer
// 407 * timerPerTick - Number micro sec per ticks
// 408 *
// 409 * @return Status - OK or Not OK
// 410 ***************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 411 uint8 halTimerSetCount (uint8 hwtimerid, uint32 timePerTick)
halTimerSetCount:
CFI Block cfiBlock19 Using cfiCommon0
CFI Function halTimerSetCount
// 412 {
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: 0
MOV ?V0 + 4,R2
MOV ?V0 + 5,R3
MOV ?V0 + 6,R4
MOV ?V0 + 7,R5
// 413 uint16 count;
// 414 uint8 high, low;
// 415
// 416 /* Load count = ((sec/tick) x clock) / prescale */
// 417 count = (uint16)((timePerTick * halTimerRecord[hwtimerid].clock) / halTimerRecord[hwtimerid].prescaleVal);
MOV DPL,R1
MOV R2,DPL
MOV A,R2
MOV B,#0xb
MUL AB
ADD A,#(??halTimerRecord & 0xff)
MOV R4,A
MOV A,B
ADDC A,#((??halTimerRecord >> 8) & 0xff)
MOV R5,A
MOV DPL,R4
MOV DPH,R5
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 0,A
MOV ?V0 + 1,#0x0
MOV ?V0 + 2,#0x0
MOV ?V0 + 3,#0x0
MOV R0,#?V0 + 4
MOV R1,#?V0 + 0
LCALL ?L_MUL
MOV DPL,R4
MOV DPH,R5
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 0,A
MOV R0,#?V0 + 4
MOV R1,#?V0 + 0
LCALL ?UL_DIV_MOD
// 418 high = (uint8) (count >> 8);
// 419 low = (uint8) count;
// 420
// 421 *(halTimerChannel[hwtimerid].TxCCH) = high;
MOV A,R2
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_28:
INC DPTR
INC DPTR
LCALL ?Subroutine9 & 0xFFFF
??CrossCallReturnLabel_34:
MOV A,?V0 + 5
LCALL ?Subroutine1 & 0xFFFF
// 422 *(halTimerChannel[hwtimerid].TxCCL) = low;
??CrossCallReturnLabel_14:
LCALL ?Subroutine12 & 0xFFFF
??CrossCallReturnLabel_40:
MOV A,?V0 + 4
MOVX @DPTR,A
// 423
// 424 return HAL_TIMER_OK;
MOV R1,#0x0
LJMP ?Subroutine14 & 0xFFFF
CFI EndBlock cfiBlock19
// 425 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond20 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_14
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)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
CFI Block cfiCond21 Using cfiCommon0
CFI (cfiCond21) NoFunction
CFI (cfiCond21) Conditional ??CrossCallReturnLabel_13
CFI (cfiCond21) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond21) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond21) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond21) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond21) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond21) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond21) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond21) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond21) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond21) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond21) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond21) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond21) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond21) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond21) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond21) CFA_SP SP+0
CFI (cfiCond21) CFA_XSP16 add(XSP16, 15)
CFI Block cfiCond22 Using cfiCommon0
CFI (cfiCond22) NoFunction
CFI (cfiCond22) Conditional ??CrossCallReturnLabel_12
CFI (cfiCond22) R6 load(1, XDATA, add(CFA_XSP16, literal(-
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -