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

📄 hal_timer.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
        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_13
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V6 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, 15)
        CFI Block cfiCond21 Using cfiCommon0
        CFI (cfiCond21) NoFunction
        CFI (cfiCond21) Conditional ??CrossCallReturnLabel_12
        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_14
        CFI (cfiCond22) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI (cfiCond22) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI (cfiCond22) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond22) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond22) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond22) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond22) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond22) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond22) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond22) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond22) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond22) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond22) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond22) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond22) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond22) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond22) CFA_SP SP+0
        CFI (cfiCond22) CFA_XSP16 add(XSP16, 16)
        CFI Block cfiPicker23 Using cfiCommon1
        CFI (cfiPicker23) NoFunction
        CFI (cfiPicker23) Picker
        LCALL	?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_39:
        INC	DPTR
        RET
        CFI EndBlock cfiCond20
        CFI EndBlock cfiCond21
        CFI EndBlock cfiCond22
        CFI EndBlock cfiPicker23

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine11:
        CFI Block cfiCond24 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_39, ??CrossCallReturnLabel_12
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -