📄 hal_timer.lst
字号:
\ ??CrossCallReturnLabel_2:
\ 000067 90.... MOV DPTR,#(??halTimerChannel + 6)
\ 00006A 74D8 MOV A,#-0x28
\ 00006C 12.... LCALL ??Subroutine0_0 & 0xFFFF
242 halTimerChannel[HW_TIMER_1].ovfbit = TCHN_T1OVFBIT;
\ ??CrossCallReturnLabel_3:
\ 00006F 7440 MOV A,#0x40
\ 000071 90.... MOV DPTR,#(??halTimerChannel + 8)
\ 000074 F0 MOVX @DPTR,A
243 halTimerChannel[HW_TIMER_1].intbit = TCHN_T1INTBIT;
\ 000075 7402 MOV A,#0x2
\ 000077 90.... MOV DPTR,#(??halTimerChannel + 9)
\ 00007A F0 MOVX @DPTR,A
244
245 /* Setup Timer3 Channel structure */
246 halTimerChannel[HW_TIMER_3].TxCCTL = TCHN_T3CCTL;
\ 00007B 90.... MOV DPTR,#(??halTimerChannel + 10)
\ 00007E 74CC MOV A,#-0x34
\ 000080 12.... LCALL ??Subroutine0_0 & 0xFFFF
247 halTimerChannel[HW_TIMER_3].TxCCL = TCHN_T3CCL;
\ ??CrossCallReturnLabel_4:
\ 000083 90.... MOV DPTR,#(??halTimerChannel + 14)
\ 000086 12.... LCALL ?Subroutine0 & 0xFFFF
248 halTimerChannel[HW_TIMER_3].TxCCH = TCHN_T3CCH;
\ ??CrossCallReturnLabel_5:
\ 000089 90.... MOV DPTR,#(??halTimerChannel + 12)
\ 00008C 12.... LCALL ?Subroutine0 & 0xFFFF
249 halTimerChannel[HW_TIMER_3].TxOVF = TCNH_T3OVF;
\ ??CrossCallReturnLabel_6:
\ 00008F 90.... MOV DPTR,#(??halTimerChannel + 16)
\ 000092 74CB MOV A,#-0x35
\ 000094 12.... LCALL ??Subroutine0_0 & 0xFFFF
250 halTimerChannel[HW_TIMER_3].ovfbit = TCHN_T3OVFBIT;
\ ??CrossCallReturnLabel_7:
\ 000097 7480 MOV A,#-0x80
\ 000099 90.... MOV DPTR,#(??halTimerChannel + 18)
\ 00009C F0 MOVX @DPTR,A
251 halTimerChannel[HW_TIMER_3].intbit = TCHN_T3INTBIT;
\ 00009D 7408 MOV A,#0x8
\ 00009F 90.... MOV DPTR,#(??halTimerChannel + 19)
\ 0000A2 F0 MOVX @DPTR,A
252
253 /* Setup Timer4 Channel structure */
254 halTimerChannel[HW_TIMER_4].TxCCTL = TCHN_T4CCTL;
\ 0000A3 90.... MOV DPTR,#(??halTimerChannel + 20)
\ 0000A6 74EC MOV A,#-0x14
\ 0000A8 12.... LCALL ??Subroutine0_0 & 0xFFFF
255 halTimerChannel[HW_TIMER_4].TxCCL = TCHN_T4CCL;
\ ??CrossCallReturnLabel_8:
\ 0000AB 90.... MOV DPTR,#(??halTimerChannel + 24)
\ 0000AE 74ED MOV A,#-0x13
\ 0000B0 12.... LCALL ??Subroutine0_0 & 0xFFFF
256 halTimerChannel[HW_TIMER_4].TxCCH = TCHN_T4CCH;
\ ??CrossCallReturnLabel_9:
\ 0000B3 90.... MOV DPTR,#(??halTimerChannel + 22)
\ 0000B6 74ED MOV A,#-0x13
\ 0000B8 12.... LCALL ??Subroutine0_0 & 0xFFFF
257 halTimerChannel[HW_TIMER_4].TxOVF = TCNH_T4OVF;
\ ??CrossCallReturnLabel_10:
\ 0000BB 90.... MOV DPTR,#(??halTimerChannel + 26)
\ 0000BE 74EB MOV A,#-0x15
\ 0000C0 12.... LCALL ??Subroutine0_0 & 0xFFFF
258 halTimerChannel[HW_TIMER_4].ovfbit = TCHN_T4OVFBIT;
\ ??CrossCallReturnLabel_11:
\ 0000C3 7480 MOV A,#-0x80
\ 0000C5 90.... MOV DPTR,#(??halTimerChannel + 28)
\ 0000C8 F0 MOVX @DPTR,A
259 halTimerChannel[HW_TIMER_4].intbit = TCHN_T4INTBIT;
\ 0000C9 7410 MOV A,#0x10
\ 0000CB 90.... MOV DPTR,#(??halTimerChannel + 29)
\ 0000CE F0 MOVX @DPTR,A
260 }
\ 0000CF 02.... LJMP ?Subroutine13 & 0xFFFF
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 74CD MOV A,#-0x33
\ ??Subroutine0_0:
\ 000002 F0 MOVX @DPTR,A
\ 000003 A3 INC DPTR
\ 000004 74DF MOV A,#-0x21
\ 000006 F0 MOVX @DPTR,A
\ 000007 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine13:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 02.... LJMP ?BRET
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 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
276 uint8 HalTimerConfig (uint8 timerId, uint8 opMode, uint8 channel, uint8 channelMode,
\ HalTimerConfig:
277 bool intEnable, halTimerCBack_t cBack)
278 {
\ 000000 74F1 MOV A,#-0xf
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 15
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
\ 000007 EA MOV A,R2
\ 000008 FF MOV R7,A
\ 000009 8B.. MOV ?V0 + 0,R3
\ 00000B 8C.. MOV ?V0 + 1,R4
\ 00000D 8D.. MOV ?V0 + 2,R5
\ 00000F 740F MOV A,#0xf
\ 000011 12.... LCALL ?XSTACK_DISP0_8
\ 000014 E0 MOVX A,@DPTR
\ 000015 F9 MOV R1,A
\ 000016 A3 INC DPTR
\ 000017 E0 MOVX A,@DPTR
\ 000018 FA MOV R2,A
\ 000019 A3 INC DPTR
\ 00001A E0 MOVX A,@DPTR
\ 00001B FB MOV R3,A
\ 00001C 89.. MOV ?V0 + 4,R1
\ 00001E 8A.. MOV ?V0 + 5,R2
\ 000020 8B.. MOV ?V0 + 6,R3
279 uint8 hwtimerid;
280
281 hwtimerid = halTimerRemap (timerId);
\ 000022 ; Setup parameters for call to function halTimerRemap
\ 000022 EE MOV A,R6
\ 000023 F9 MOV R1,A
\ 000024 90.... MOV DPTR,#(halTimerRemap & 0xffff)
\ 000027 74.. MOV A,#((halTimerRemap >> 16) & 0xff)
\ 000029 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00002C E9 MOV A,R1
\ 00002D FA MOV R2,A
282
283 if ((opMode & HAL_TIMER_MODE_MASK) && (timerId < HAL_TIMER_MAX) &&
284 (channelMode & HAL_TIMER_CHANNEL_MASK) && (channel & HAL_TIMER_CHANNEL_MASK))
\ 00002E 7403 MOV A,#0x3
\ 000030 5F ANL A,R7
\ 000031 6051 JZ ??HalTimerConfig_0
\ 000033 EE MOV A,R6
\ 000034 C3 CLR C
\ 000035 9404 SUBB A,#0x4
\ 000037 504B JNC ??HalTimerConfig_0
\ 000039 740F MOV A,#0xf
\ 00003B 55.. ANL A,?V0 + 1
\ 00003D 6045 JZ ??HalTimerConfig_0
\ 00003F 740F MOV A,#0xf
\ 000041 55.. ANL A,?V0 + 0
\ 000043 603F JZ ??HalTimerConfig_0
285 {
286 halTimerRecord[hwtimerid].configured = TRUE;
\ 000045 EA MOV A,R2
\ 000046 75F00B MOV B,#0xb
\ 000049 A4 MUL AB
\ 00004A 24.. ADD A,#(??halTimerRecord & 0xff)
\ 00004C F8 MOV R0,A
\ 00004D E5F0 MOV A,B
\ 00004F 34.. ADDC A,#((??halTimerRecord >> 8) & 0xff)
\ 000051 F9 MOV R1,A
\ 000052 7401 MOV A,#0x1
\ 000054 8882 MOV DPL,R0
\ 000056 8983 MOV DPH,R1
\ 000058 F0 MOVX @DPTR,A
287 halTimerRecord[hwtimerid].opMode = opMode;
\ 000059 EF MOV A,R7
\ 00005A A3 INC DPTR
\ 00005B A3 INC DPTR
\ 00005C 12.... LCALL ?Subroutine11 & 0xFFFF
288 halTimerRecord[hwtimerid].channel = channel;
\ ??CrossCallReturnLabel_38:
\ 00005F E5.. MOV A,?V0 + 0
\ 000061 12.... LCALL ?Subroutine1 & 0xFFFF
289 halTimerRecord[hwtimerid].channelMode = channelMode;
\ ??CrossCallReturnLabel_12:
\ 000064 E5.. MOV A,?V0 + 1
\ 000066 F0 MOVX @DPTR,A
290 halTimerRecord[hwtimerid].intEnable = intEnable;
\ 000067 8882 MOV DPL,R0
\ 000069 8983 MOV DPH,R1
\ 00006B A3 INC DPTR
\ 00006C E5.. MOV A,?V0 + 2
\ 00006E 12.... LCALL ?Subroutine1 & 0xFFFF
291 halTimerRecord[hwtimerid].callBackFunc = cBack;
\ ??CrossCallReturnLabel_13:
\ 000071 A3 INC DPTR
\ 000072 A3 INC DPTR
\ 000073 A3 INC DPTR
\ 000074 A3 INC DPTR
\ 000075 E5.. MOV A,?V0 + 4
\ 000077 F0 MOVX @DPTR,A
\ 000078 A3 INC DPTR
\ 000079 E5.. MOV A,?V0 + 5
\ 00007B F0 MOVX @DPTR,A
\ 00007C A3 INC DPTR
\ 00007D E5.. MOV A,?V0 + 6
\ 00007F F0 MOVX @DPTR,A
292 }
293 else
294 {
295 return HAL_TIMER_PARAMS_ERROR;
296 }
297 return HAL_TIMER_OK;
\ 000080 7900 MOV R1,#0x0
\ 000082 8002 SJMP ??HalTimerConfig_1
\ ??HalTimerConfig_0:
\ 000084 7902 MOV R1,#0x2
\ ??HalTimerConfig_1:
\ 000086 7F07 MOV R7,#0x7
\ 000088 02.... LJMP ?BANKED_LEAVE_XDATA
298 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 12.... LCALL ?Subroutine11 & 0xFFFF
\ ??CrossCallReturnLabel_39:
\ 000003 A3 INC DPTR
\ 000004 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine11:
\ 000000 F0 MOVX @DPTR,A
\ 000001 8882 MOV DPL,R0
\ 000003 8983 MOV DPH,R1
\ 000005 A3 INC DPTR
\ 000006 A3 INC DPTR
\ 000007 A3 INC DPTR
\ 000008 22 RET
299
300
301 /***************************************************************************************************
302 * @fn HalTimerStart
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -