hal_timer.s51

来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,616 行 · 第 1/5 页

S51
1,616
字号
//  171   uint8 ovfbit;
//  172   uint8 intbit;
//  173 } halTimerChannel_t;
//  174 
//  175 /*********************************************************************
//  176  * GLOBAL VARIABLES
//  177  */

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  178 static halTimerSettings_t halTimerRecord[HW_TIMER_MAX];
??halTimerRecord:
        DS 33

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  179 static halTimerChannel_t  halTimerChannel[HW_TIMER_MAX];
??halTimerChannel:
        DS 30
//  180 
//  181 /*********************************************************************
//  182  * FUNCTIONS - External
//  183  */
//  184 
//  185 /*********************************************************************
//  186  * FUNCTIONS - Local
//  187  */
//  188 uint8 halTimerSetCount (uint8 cc2430id, uint32 timePerTick);
//  189 uint8 halTimerSetPrescale (uint8 cc2430id, uint8 prescale);
//  190 uint8 halTimerSetOpMode (uint8 cc2430id, uint8 opMode);
//  191 uint8 halTimerSetChannelMode (uint8 cc2430id, uint8 channelMode);
//  192 void halTimerSendCallBack (uint8 timerId, uint8 channel, uint8 channelMode);
//  193 uint8 halTimerRemap (uint8 timerId);
//  194 void halProcessTimer1 (void);
//  195 void halProcessTimer3 (void);
//  196 void halProcessTimer4 (void);
//  197 
//  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_5
        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_6
        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_11
        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_8
        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_10
        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_3
        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_4
        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_0
        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_7
        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_1
        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  *

⌨️ 快捷键说明

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