📄 hal_timer.lst
字号:
303 *
304 * @brief Start the Timer Service
305 *
306 * @param timerId - ID of the timer
307 * timerPerTick - number of micro sec per tick, (ticks x prescale) / clock = usec/tick
308 *
309 * @return Status - OK or Not OK
310 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
311 uint8 HalTimerStart (uint8 timerId, uint32 timePerTick)
\ HalTimerStart:
312 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 0
\ 000005 8A.. MOV ?V0 + 4,R2
\ 000007 8B.. MOV ?V0 + 5,R3
\ 000009 8C.. MOV ?V0 + 6,R4
\ 00000B 8D.. MOV ?V0 + 7,R5
313 uint8 hwtimerid;
314
315 hwtimerid = halTimerRemap (timerId);
\ 00000D ; Setup parameters for call to function halTimerRemap
\ 00000D 90.... MOV DPTR,#(halTimerRemap & 0xffff)
\ 000010 74.. MOV A,#((halTimerRemap >> 16) & 0xff)
\ 000012 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000015 E9 MOV A,R1
\ 000016 F5.. MOV ?V0 + 0,A
316
317 if (halTimerRecord[hwtimerid].configured)
\ 000018 75F00B MOV B,#0xb
\ 00001B A4 MUL AB
\ 00001C 24.. ADD A,#(??halTimerRecord & 0xff)
\ 00001E F582 MOV DPL,A
\ 000020 E5F0 MOV A,B
\ 000022 34.. ADDC A,#((??halTimerRecord >> 8) & 0xff)
\ 000024 F583 MOV DPH,A
\ 000026 E0 MOVX A,@DPTR
\ 000027 7003 JNZ $+5
\ 000029 02.... LJMP ??HalTimerStart_0 & 0xFFFF
318 {
319 halTimerSetCount (hwtimerid, timePerTick);
\ 00002C ; Setup parameters for call to function halTimerSetCount
\ 00002C AA.. MOV R2,?V0 + 4
\ 00002E AB.. MOV R3,?V0 + 5
\ 000030 AC.. MOV R4,?V0 + 6
\ 000032 AD.. MOV R5,?V0 + 7
\ 000034 90.... MOV DPTR,#(halTimerSetCount & 0xffff)
\ 000037 74.. MOV A,#((halTimerSetCount >> 16) & 0xff)
\ 000039 12.... LCALL ?BCALL ; Banked call to: DPTR()
320 halTimerSetPrescale (hwtimerid, halTimerRecord[hwtimerid].prescale);
\ 00003C E5.. MOV A,?V0 + 0
\ 00003E 75F00B MOV B,#0xb
\ 000041 A4 MUL AB
\ 000042 24.. ADD A,#(??halTimerRecord & 0xff)
\ 000044 FE MOV R6,A
\ 000045 E5F0 MOV A,B
\ 000047 34.. ADDC A,#((??halTimerRecord >> 8) & 0xff)
\ 000049 FF MOV R7,A
\ 00004A ; Setup parameters for call to function halTimerSetPrescale
\ 00004A 8E82 MOV DPL,R6
\ 00004C 8F83 MOV DPH,R7
\ 00004E A3 INC DPTR
\ 00004F A3 INC DPTR
\ 000050 A3 INC DPTR
\ 000051 A3 INC DPTR
\ 000052 A3 INC DPTR
\ 000053 E0 MOVX A,@DPTR
\ 000054 FA MOV R2,A
\ 000055 A9.. MOV R1,?V0 + 0
\ 000057 90.... MOV DPTR,#(halTimerSetPrescale & 0xffff)
\ 00005A 74.. MOV A,#((halTimerSetPrescale >> 16) & 0xff)
\ 00005C 12.... LCALL ?BCALL ; Banked call to: DPTR()
321 halTimerSetOpMode (hwtimerid, halTimerRecord[hwtimerid].opMode);
\ 00005F ; Setup parameters for call to function halTimerSetOpMode
\ 00005F 8E82 MOV DPL,R6
\ 000061 8F83 MOV DPH,R7
\ 000063 A3 INC DPTR
\ 000064 A3 INC DPTR
\ 000065 E0 MOVX A,@DPTR
\ 000066 FA MOV R2,A
\ 000067 A9.. MOV R1,?V0 + 0
\ 000069 90.... MOV DPTR,#(halTimerSetOpMode & 0xffff)
\ 00006C 74.. MOV A,#((halTimerSetOpMode >> 16) & 0xff)
\ 00006E 12.... LCALL ?BCALL ; Banked call to: DPTR()
322 halTimerSetChannelMode (hwtimerid, halTimerRecord[hwtimerid].channelMode);
\ 000071 ; Setup parameters for call to function halTimerSetChannelMode
\ 000071 8E82 MOV DPL,R6
\ 000073 8F83 MOV DPH,R7
\ 000075 A3 INC DPTR
\ 000076 A3 INC DPTR
\ 000077 A3 INC DPTR
\ 000078 A3 INC DPTR
\ 000079 E0 MOVX A,@DPTR
\ 00007A FA MOV R2,A
\ 00007B A9.. MOV R1,?V0 + 0
\ 00007D 90.... MOV DPTR,#(halTimerSetChannelMode & 0xffff)
\ 000080 74.. MOV A,#((halTimerSetChannelMode >> 16) & 0xff)
\ 000082 12.... LCALL ?BCALL ; Banked call to: DPTR()
323
324 if (hwtimerid == HW_TIMER_3)
\ 000085 7401 MOV A,#0x1
\ 000087 65.. XRL A,?V0 + 0
\ 000089 7005 JNZ ??HalTimerStart_1
325 {
326 T3CTL |= HAL_TIMER34_START;
\ 00008B 43CB10 ORL 0xcb,#0x10
\ 00008E 8009 SJMP ??HalTimerStart_2
327 }
328 if (hwtimerid == HW_TIMER_4)
\ ??HalTimerStart_1:
\ 000090 7402 MOV A,#0x2
\ 000092 65.. XRL A,?V0 + 0
\ 000094 7003 JNZ ??HalTimerStart_2
329 {
330 T4CTL |= HAL_TIMER34_START;
\ 000096 43EB10 ORL 0xeb,#0x10
331 }
332 HalTimerInterruptEnable (hwtimerid, halTimerRecord[hwtimerid].channelMode,
333 halTimerRecord[hwtimerid].intEnable);
\ ??HalTimerStart_2:
\ 000099 ; Setup parameters for call to function HalTimerInterruptEnable
\ 000099 8E82 MOV DPL,R6
\ 00009B 8F83 MOV DPH,R7
\ 00009D A3 INC DPTR
\ 00009E E0 MOVX A,@DPTR
\ 00009F FB MOV R3,A
\ 0000A0 8E82 MOV DPL,R6
\ 0000A2 8F83 MOV DPH,R7
\ 0000A4 A3 INC DPTR
\ 0000A5 A3 INC DPTR
\ 0000A6 A3 INC DPTR
\ 0000A7 A3 INC DPTR
\ 0000A8 E0 MOVX A,@DPTR
\ 0000A9 FA MOV R2,A
\ 0000AA A9.. MOV R1,?V0 + 0
\ 0000AC 90.... MOV DPTR,#(HalTimerInterruptEnable & 0xffff)
\ 0000AF 74.. MOV A,#((HalTimerInterruptEnable >> 16) & 0xff)
\ 0000B1 12.... LCALL ?BCALL ; Banked call to: DPTR()
334 }
335 else
336 {
337 return HAL_TIMER_NOT_CONFIGURED;
338 }
339 return HAL_TIMER_OK;
\ 0000B4 7900 MOV R1,#0x0
\ 0000B6 8002 SJMP ??HalTimerStart_3
\ ??HalTimerStart_0:
\ 0000B8 7903 MOV R1,#0x3
\ ??HalTimerStart_3:
\ 0000BA REQUIRE ?Subroutine14
\ 0000BA ; // Fall through to label ?Subroutine14
340 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine14:
\ 000000 7F08 MOV R7,#0x8
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
341
342 /***************************************************************************************************
343 * @fn HalTimerTick
344 *
345 * @brief Check the counter for expired counter.
346 *
347 * @param None
348 *
349 * @return None
350 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
351 void HalTimerTick (void)
\ HalTimerTick:
352 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
353 if (!halTimerRecord[HW_TIMER_1].intEnable)
\ 000004 90.... MOV DPTR,#(??halTimerRecord + 1)
\ 000007 E0 MOVX A,@DPTR
\ 000008 7008 JNZ ??HalTimerTick_0
354 {
355 halProcessTimer1 ();
\ 00000A ; Setup parameters for call to function halProcessTimer1
\ 00000A 90.... MOV DPTR,#(halProcessTimer1 & 0xffff)
\ 00000D 74.. MOV A,#((halProcessTimer1 >> 16) & 0xff)
\ 00000F 12.... LCALL ?BCALL ; Banked call to: DPTR()
356 }
357
358 if (!halTimerRecord[HW_TIMER_3].intEnable)
\ ??HalTimerTick_0:
\ 000012 90.... MOV DPTR,#(??halTimerRecord + 12)
\ 000015 E0 MOVX A,@DPTR
\ 000016 7008 JNZ ??HalTimerTick_1
359 {
360 halProcessTimer3 ();
\ 000018 ; Setup parameters for call to function halProcessTimer3
\ 000018 90.... MOV DPTR,#(halProcessTimer3 & 0xffff)
\ 00001B 74.. MOV A,#((halProcessTimer3 >> 16) & 0xff)
\ 00001D 12.... LCALL ?BCALL ; Banked call to: DPTR()
361 }
362
363 if (!halTimerRecord[HW_TIMER_4].intEnable)
\ ??HalTimerTick_1:
\ 000020 90.... MOV DPTR,#(??halTimerRecord + 23)
\ 000023 E0 MOVX A,@DPTR
\ 000024 7008 JNZ ??HalTimerTick_2
364 {
365 halProcessTimer4 ();
\ 000026 ; Setup parameters for call to function halProcessTimer4
\ 000026 90.... MOV DPTR,#(halProcessTimer4 & 0xffff)
\ 000029 74.. MOV A,#((halProcessTimer4 >> 16) & 0xff)
\ 00002B 12.... LCALL ?BCALL ; Banked call to: DPTR()
366 }
367 }
\ ??HalTimerTick_2:
\ 00002E 02.... LJMP ?Subroutine13 & 0xFFFF
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 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
378 uint8 HalTimerStop (uint8 timerId)
\ HalTimerStop:
379 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
380 uint8 hwtimerid;
381
382 hwtimerid = halTimerRemap (timerId);
383
384 switch (hwtimerid)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -