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

📄 hal_timer.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
//  198 
//  199 /*********************************************************************
//  200  * FUNCTIONS - API
//  201  */
//  202 
//  203 /*********************************************************************
//  204  * @fn      HalTimerInit
//  205  *
//  206  * @brief   Initialize Timer Service
//  207  *
//  208  * @param   None
//  209  *
//  210  * @return  None
//  211  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  212 void HalTimerInit (void)
HalTimerInit:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function HalTimerInit
//  213 {
        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
//  214   T1CCTL0 = 0;    /* Make sure interrupts are disabled */
        MOV	0xe5,#0x0
//  215   T1CCTL1 = 0;    /* Make sure interrupts are disabled */
        MOV	0xe6,#0x0
//  216   T1CCTL2 = 0;    /* Make sure interrupts are disabled */
        MOV	0xe7,#0x0
//  217   T3CCTL0 = 0;    /* Make sure interrupts are disabled */
        MOV	0xcc,#0x0
//  218   T3CCTL1 = 0;    /* Make sure interrupts are disabled */
        MOV	0xce,#0x0
//  219   T4CCTL0 = 0;    /* Make sure interrupts are disabled */
        MOV	0xec,#0x0
//  220   T4CCTL1 = 0;    /* Make sure interrupts are disabled */
        MOV	0xee,#0x0
//  221 
//  222   /* Setup prescale & clock for timer0 */
//  223   halTimerRecord[HW_TIMER_1].prescale    = HAL_TIMER1_16_PRESCALE;
        MOV	A,#0xc
        MOV	DPTR,#(??halTimerRecord + 5)
        MOVX	@DPTR,A
//  224   halTimerRecord[HW_TIMER_1].clock       = HAL_TIMER_32MHZ;
        MOV	A,#0x20
        MOV	DPTR,#(??halTimerRecord + 7)
        MOVX	@DPTR,A
//  225   halTimerRecord[HW_TIMER_1].prescaleVal = HAL_TIMER1_16_PRESCALE_VAL;
        MOV	A,#-0x80
        MOV	DPTR,#(??halTimerRecord + 6)
        MOVX	@DPTR,A
//  226 
//  227   /* Setup prescale & clock for timer2 */
//  228   halTimerRecord[HW_TIMER_3].prescale    = HAL_TIMER3_8_PRESCALE;
        MOV	A,#-0x20
        MOV	DPTR,#(??halTimerRecord + 16)
        MOVX	@DPTR,A
//  229   halTimerRecord[HW_TIMER_3].clock       = HAL_TIMER_32MHZ;
        MOV	A,#0x20
        MOV	DPTR,#(??halTimerRecord + 18)
        MOVX	@DPTR,A
//  230   halTimerRecord[HW_TIMER_3].prescaleVal = HAL_TIMER3_8_PRESCALE_VAL;
        MOV	A,#-0x80
        MOV	DPTR,#(??halTimerRecord + 17)
        MOVX	@DPTR,A
//  231 
//  232   /* Setup prescale & clock for timer3 */
//  233   halTimerRecord[HW_TIMER_4].prescale    = HAL_TIMER4_8_PRESCALE;
        MOV	A,#-0x20
        MOV	DPTR,#(??halTimerRecord + 27)
        MOVX	@DPTR,A
//  234   halTimerRecord[HW_TIMER_4].clock       = HAL_TIMER_32MHZ;
        MOV	A,#0x20
        MOV	DPTR,#(??halTimerRecord + 29)
        MOVX	@DPTR,A
//  235   halTimerRecord[HW_TIMER_4].prescaleVal = HAL_TIMER4_8_PRESCALE_VAL;
        MOV	A,#-0x80
        MOV	DPTR,#(??halTimerRecord + 28)
        MOVX	@DPTR,A
//  236 
//  237   /* Setup Timer1 Channel structure */
//  238   halTimerChannel[HW_TIMER_1].TxCCTL =  TCHN_T1CCTL;
        MOV	DPTR,#??halTimerChannel
        MOV	A,#-0x1b
        LCALL	??Subroutine0_0 & 0xFFFF
//  239   halTimerChannel[HW_TIMER_1].TxCCL =   TCHN_T1CCL;
??CrossCallReturnLabel_0:
        MOV	DPTR,#(??halTimerChannel + 4)
        MOV	A,#-0x26
        LCALL	??Subroutine0_0 & 0xFFFF
//  240   halTimerChannel[HW_TIMER_1].TxCCH =   TCHN_T1CCH;
??CrossCallReturnLabel_1:
        MOV	DPTR,#(??halTimerChannel + 2)
        MOV	A,#-0x25
        LCALL	??Subroutine0_0 & 0xFFFF
//  241   halTimerChannel[HW_TIMER_1].TxOVF =   TCNH_T1OVF;
??CrossCallReturnLabel_2:
        MOV	DPTR,#(??halTimerChannel + 6)
        MOV	A,#-0x28
        LCALL	??Subroutine0_0 & 0xFFFF
//  242   halTimerChannel[HW_TIMER_1].ovfbit =  TCHN_T1OVFBIT;
??CrossCallReturnLabel_3:
        MOV	A,#0x40
        MOV	DPTR,#(??halTimerChannel + 8)
        MOVX	@DPTR,A
//  243   halTimerChannel[HW_TIMER_1].intbit =  TCHN_T1INTBIT;
        MOV	A,#0x2
        MOV	DPTR,#(??halTimerChannel + 9)
        MOVX	@DPTR,A
//  244 
//  245   /* Setup Timer3 Channel structure */
//  246   halTimerChannel[HW_TIMER_3].TxCCTL =  TCHN_T3CCTL;
        MOV	DPTR,#(??halTimerChannel + 10)
        MOV	A,#-0x34
        LCALL	??Subroutine0_0 & 0xFFFF
//  247   halTimerChannel[HW_TIMER_3].TxCCL =   TCHN_T3CCL;
??CrossCallReturnLabel_4:
        MOV	DPTR,#(??halTimerChannel + 14)
        LCALL	?Subroutine0 & 0xFFFF
//  248   halTimerChannel[HW_TIMER_3].TxCCH =   TCHN_T3CCH;
??CrossCallReturnLabel_5:
        MOV	DPTR,#(??halTimerChannel + 12)
        LCALL	?Subroutine0 & 0xFFFF
//  249   halTimerChannel[HW_TIMER_3].TxOVF =   TCNH_T3OVF;
??CrossCallReturnLabel_6:
        MOV	DPTR,#(??halTimerChannel + 16)
        MOV	A,#-0x35
        LCALL	??Subroutine0_0 & 0xFFFF
//  250   halTimerChannel[HW_TIMER_3].ovfbit =  TCHN_T3OVFBIT;
??CrossCallReturnLabel_7:
        MOV	A,#-0x80
        MOV	DPTR,#(??halTimerChannel + 18)
        MOVX	@DPTR,A
//  251   halTimerChannel[HW_TIMER_3].intbit =  TCHN_T3INTBIT;
        MOV	A,#0x8
        MOV	DPTR,#(??halTimerChannel + 19)
        MOVX	@DPTR,A
//  252 
//  253   /* Setup Timer4 Channel structure */
//  254   halTimerChannel[HW_TIMER_4].TxCCTL =  TCHN_T4CCTL;
        MOV	DPTR,#(??halTimerChannel + 20)
        MOV	A,#-0x14
        LCALL	??Subroutine0_0 & 0xFFFF
//  255   halTimerChannel[HW_TIMER_4].TxCCL =   TCHN_T4CCL;
??CrossCallReturnLabel_8:
        MOV	DPTR,#(??halTimerChannel + 24)
        MOV	A,#-0x13
        LCALL	??Subroutine0_0 & 0xFFFF
//  256   halTimerChannel[HW_TIMER_4].TxCCH =   TCHN_T4CCH;
??CrossCallReturnLabel_9:
        MOV	DPTR,#(??halTimerChannel + 22)
        MOV	A,#-0x13
        LCALL	??Subroutine0_0 & 0xFFFF
//  257   halTimerChannel[HW_TIMER_4].TxOVF =   TCNH_T4OVF;
??CrossCallReturnLabel_10:
        MOV	DPTR,#(??halTimerChannel + 26)
        MOV	A,#-0x15
        LCALL	??Subroutine0_0 & 0xFFFF
//  258   halTimerChannel[HW_TIMER_4].ovfbit =  TCHN_T4OVFBIT;
??CrossCallReturnLabel_11:
        MOV	A,#-0x80
        MOV	DPTR,#(??halTimerChannel + 28)
        MOVX	@DPTR,A
//  259   halTimerChannel[HW_TIMER_4].intbit =  TCHN_T4INTBIT;
        MOV	A,#0x10
        MOV	DPTR,#(??halTimerChannel + 29)
        MOVX	@DPTR,A
//  260 }
        LJMP	?Subroutine13 & 0xFFFF
        CFI EndBlock cfiBlock0

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiCond1 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_6
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond2 Using cfiCommon0
        CFI (cfiCond2) NoFunction
        CFI (cfiCond2) Conditional ??CrossCallReturnLabel_5
        CFI (cfiCond2) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond2) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond2) CFA_SP SP+-5
        CFI Block cfiPicker3 Using cfiCommon1
        CFI (cfiPicker3) NoFunction
        CFI (cfiPicker3) Picker
        MOV	A,#-0x33
        CFI Block cfiCond4 Using cfiCommon0
        CFI (cfiCond4) NoFunction
        CFI (cfiCond4) Conditional ??CrossCallReturnLabel_3
        CFI (cfiCond4) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond4) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond4) CFA_SP SP+-5
        CFI Block cfiCond5 Using cfiCommon0
        CFI (cfiCond5) NoFunction
        CFI (cfiCond5) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond5) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond5) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond5) CFA_SP SP+-5
        CFI Block cfiCond6 Using cfiCommon0
        CFI (cfiCond6) NoFunction
        CFI (cfiCond6) Conditional ??CrossCallReturnLabel_4
        CFI (cfiCond6) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond6) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond6) CFA_SP SP+-5
        CFI Block cfiCond7 Using cfiCommon0
        CFI (cfiCond7) NoFunction
        CFI (cfiCond7) Conditional ??CrossCallReturnLabel_7
        CFI (cfiCond7) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond7) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond7) CFA_SP SP+-5
        CFI Block cfiCond8 Using cfiCommon0
        CFI (cfiCond8) NoFunction
        CFI (cfiCond8) Conditional ??CrossCallReturnLabel_11
        CFI (cfiCond8) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond8) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond8) CFA_SP SP+-5
        CFI Block cfiCond9 Using cfiCommon0
        CFI (cfiCond9) NoFunction
        CFI (cfiCond9) Conditional ??CrossCallReturnLabel_0
        CFI (cfiCond9) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond9) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond9) CFA_SP SP+-5
        CFI Block cfiCond10 Using cfiCommon0
        CFI (cfiCond10) NoFunction
        CFI (cfiCond10) Conditional ??CrossCallReturnLabel_9
        CFI (cfiCond10) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond10) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond10) CFA_SP SP+-5
        CFI Block cfiCond11 Using cfiCommon0
        CFI (cfiCond11) NoFunction
        CFI (cfiCond11) Conditional ??CrossCallReturnLabel_1
        CFI (cfiCond11) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond11) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond11) CFA_SP SP+-5
        CFI Block cfiCond12 Using cfiCommon0
        CFI (cfiCond12) NoFunction
        CFI (cfiCond12) Conditional ??CrossCallReturnLabel_8
        CFI (cfiCond12) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond12) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond12) CFA_SP SP+-5
        CFI Block cfiCond13 Using cfiCommon0
        CFI (cfiCond13) NoFunction
        CFI (cfiCond13) Conditional ??CrossCallReturnLabel_10
        CFI (cfiCond13) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond13) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond13) CFA_SP SP+-5
??Subroutine0_0:
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#-0x21
        MOVX	@DPTR,A
        RET
        CFI EndBlock cfiCond1
        CFI EndBlock cfiCond2
        CFI EndBlock cfiPicker3
        CFI EndBlock cfiCond4
        CFI EndBlock cfiCond5
        CFI EndBlock cfiCond6
        CFI EndBlock cfiCond7
        CFI EndBlock cfiCond8
        CFI EndBlock cfiCond9
        CFI EndBlock cfiCond10
        CFI EndBlock cfiCond11
        CFI EndBlock cfiCond12
        CFI EndBlock cfiCond13
//  261 
//  262 /***************************************************************************************************
//  263  * @fn      HalTimerConfig
//  264  *
//  265  * @brief   Configure the Timer Serivce
//  266  *
//  267  * @param   timerId - Id of the timer
//  268  *          opMode  - Operation mode
//  269  *          channel - Channel where the counter operates on
//  270  *          channelMode - Mode of that channel
//  271  *          prescale - Prescale of the clock
//  272  *          cBack - Pointer to the callback function
//  273  *
//  274  * @return  Status of the configuration
//  275  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  276 uint8 HalTimerConfig (uint8 timerId, uint8 opMode, uint8 channel, uint8 channelMode,
HalTimerConfig:
        CFI Block cfiBlock14 Using cfiCommon0
        CFI Function HalTimerConfig
//  277                       bool intEnable, halTimerCBack_t cBack)
//  278 {
        FUNCALL HalTimerConfig, halTimerRemap
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        MOV	A,#-0xf
        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 V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 15)
        ; Saved register size: 15
        ; Auto size: 0
        MOV	A,R1
        MOV	R6,A
        MOV	A,R2
        MOV	R7,A
        MOV	?V0 + 0,R3

⌨️ 快捷键说明

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