⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_timer.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        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 + -