📄 hal_timer.s51
字号:
// 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 + -