📄 hal_timer.lst
字号:
\ 000004 ; Setup parameters for call to function halTimerRemap
\ 000004 90.... MOV DPTR,#(halTimerRemap & 0xffff)
\ 000007 74.. MOV A,#((halTimerRemap >> 16) & 0xff)
\ 000009 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00000C E9 MOV A,R1
\ 00000D 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for HalTimerStop>_0`:
\ 000010 00 DB 0
\ 000011 02 DB 2
\ 000012 .... DW ??HalTimerStop_0
\ 000014 .... DW ??HalTimerStop_1
\ 000016 .... DW ??HalTimerStop_2
\ 000018 .... DW ??HalTimerStop_3
385 {
386 case HW_TIMER_1:
387 halTimerSetOpMode(HW_TIMER_1, HAL_TIMER_MODE_STOP);
\ ??HalTimerStop_1:
\ 00001A ; Setup parameters for call to function halTimerSetOpMode
\ 00001A 7A03 MOV R2,#0x3
\ 00001C 7900 MOV R1,#0x0
\ 00001E 90.... MOV DPTR,#(halTimerSetOpMode & 0xffff)
\ 000021 74.. MOV A,#((halTimerSetOpMode >> 16) & 0xff)
\ 000023 12.... LCALL ?BCALL ; Banked call to: DPTR()
388 break;
389 case HW_TIMER_3:
390 T3CTL &= ~(HAL_TIMER34_START);
391 break;
392 case HW_TIMER_4:
393 T4CTL &= ~(HAL_TIMER34_START);
394 break;
395 default:
396 return HAL_TIMER_INVALID_ID;
397 }
398 return HAL_TIMER_OK;
\ ??HalTimerStop_4:
\ 000026 7900 MOV R1,#0x0
\ ??HalTimerStop_5:
\ 000028 02.... LJMP ?Subroutine13 & 0xFFFF
\ ??HalTimerStop_2:
\ 00002B 53CBEF ANL 0xcb,#0xef
\ 00002E 80F6 SJMP ??HalTimerStop_4
\ ??HalTimerStop_3:
\ 000030 53EBEF ANL 0xeb,#0xef
\ 000033 80F1 SJMP ??HalTimerStop_4
\ ??HalTimerStop_0:
\ 000035 7904 MOV R1,#0x4
\ 000037 80EF SJMP ??HalTimerStop_5
399 }
400
401 /***************************************************************************************************
402 * @fn halTimerSetCount
403 *
404 * @brief Stop the Timer Service
405 *
406 * @param hwtimerid - ID of the timer
407 * timerPerTick - Number micro sec per ticks
408 *
409 * @return Status - OK or Not OK
410 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
411 uint8 halTimerSetCount (uint8 hwtimerid, uint32 timePerTick)
\ halTimerSetCount:
412 {
\ 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
413 uint16 count;
414 uint8 high, low;
415
416 /* Load count = ((sec/tick) x clock) / prescale */
417 count = (uint16)((timePerTick * halTimerRecord[hwtimerid].clock) / halTimerRecord[hwtimerid].prescaleVal);
\ 00000D 8982 MOV DPL,R1
\ 00000F AA82 MOV R2,DPL
\ 000011 EA MOV A,R2
\ 000012 75F00B MOV B,#0xb
\ 000015 A4 MUL AB
\ 000016 24.. ADD A,#(??halTimerRecord & 0xff)
\ 000018 FC MOV R4,A
\ 000019 E5F0 MOV A,B
\ 00001B 34.. ADDC A,#((??halTimerRecord >> 8) & 0xff)
\ 00001D FD MOV R5,A
\ 00001E 8C82 MOV DPL,R4
\ 000020 8D83 MOV DPH,R5
\ 000022 A3 INC DPTR
\ 000023 A3 INC DPTR
\ 000024 A3 INC DPTR
\ 000025 A3 INC DPTR
\ 000026 A3 INC DPTR
\ 000027 A3 INC DPTR
\ 000028 A3 INC DPTR
\ 000029 E0 MOVX A,@DPTR
\ 00002A F5.. MOV ?V0 + 0,A
\ 00002C 75..00 MOV ?V0 + 1,#0x0
\ 00002F 75..00 MOV ?V0 + 2,#0x0
\ 000032 75..00 MOV ?V0 + 3,#0x0
\ 000035 78.. MOV R0,#?V0 + 4
\ 000037 79.. MOV R1,#?V0 + 0
\ 000039 12.... LCALL ?L_MUL
\ 00003C 8C82 MOV DPL,R4
\ 00003E 8D83 MOV DPH,R5
\ 000040 A3 INC DPTR
\ 000041 A3 INC DPTR
\ 000042 A3 INC DPTR
\ 000043 A3 INC DPTR
\ 000044 A3 INC DPTR
\ 000045 A3 INC DPTR
\ 000046 E0 MOVX A,@DPTR
\ 000047 F5.. MOV ?V0 + 0,A
\ 000049 78.. MOV R0,#?V0 + 4
\ 00004B 79.. MOV R1,#?V0 + 0
\ 00004D 12.... LCALL ?UL_DIV_MOD
418 high = (uint8) (count >> 8);
419 low = (uint8) count;
420
421 *(halTimerChannel[hwtimerid].TxCCH) = high;
\ 000050 EA MOV A,R2
\ 000051 12.... LCALL ?Subroutine6 & 0xFFFF
\ ??CrossCallReturnLabel_28:
\ 000054 A3 INC DPTR
\ 000055 A3 INC DPTR
\ 000056 12.... LCALL ?Subroutine9 & 0xFFFF
\ ??CrossCallReturnLabel_34:
\ 000059 E5.. MOV A,?V0 + 5
\ 00005B 12.... LCALL ?Subroutine1 & 0xFFFF
422 *(halTimerChannel[hwtimerid].TxCCL) = low;
\ ??CrossCallReturnLabel_14:
\ 00005E 12.... LCALL ?Subroutine12 & 0xFFFF
\ ??CrossCallReturnLabel_40:
\ 000061 E5.. MOV A,?V0 + 4
\ 000063 F0 MOVX @DPTR,A
423
424 return HAL_TIMER_OK;
\ 000064 7900 MOV R1,#0x0
\ 000066 02.... LJMP ?Subroutine14 & 0xFFFF
425 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine9:
\ 000000 E0 MOVX A,@DPTR
\ 000001 FA MOV R2,A
\ 000002 A3 INC DPTR
\ 000003 E0 MOVX A,@DPTR
\ 000004 F583 MOV DPH,A
\ 000006 8A82 MOV DPL,R2
\ 000008 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine6:
\ 000000 75F00A MOV B,#0xa
\ 000003 A4 MUL AB
\ 000004 24.. ADD A,#(??halTimerChannel & 0xff)
\ 000006 F8 MOV R0,A
\ 000007 E5F0 MOV A,B
\ 000009 34.. ADDC A,#((??halTimerChannel >> 8) & 0xff)
\ 00000B F9 MOV R1,A
\ 00000C 8882 MOV DPL,R0
\ 00000E 8983 MOV DPH,R1
\ 000010 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine12:
\ 000000 E0 MOVX A,@DPTR
\ 000001 F8 MOV R0,A
\ 000002 A3 INC DPTR
\ 000003 E0 MOVX A,@DPTR
\ 000004 F583 MOV DPH,A
\ 000006 8882 MOV DPL,R0
\ 000008 22 RET
426
427 /***************************************************************************************************
428 * @fn halTimerSetPrescale
429 *
430 * @brief Stop the Timer Service
431 *
432 * @param hwtimerid - ID of the timer
433 * prescale - Prescale of the clock
434 *
435 * @return Status - OK or Not OK
436 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
437 uint8 halTimerSetPrescale (uint8 hwtimerid, uint8 prescale)
\ halTimerSetPrescale:
438 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
439 switch (hwtimerid)
\ 000004 E9 MOV A,R1
\ 000005 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for halTimerSetPrescale>_0`:
\ 000008 00 DB 0
\ 000009 02 DB 2
\ 00000A .... DW ??halTimerSetPrescale_0
\ 00000C .... DW ??halTimerSetPrescale_1
\ 00000E .... DW ??halTimerSetPrescale_2
\ 000010 .... DW ??halTimerSetPrescale_3
440 {
441 case HW_TIMER_1:
442 T1CTL &= ~(HAL_TIMER1_16_TC_BITS);
\ ??halTimerSetPrescale_1:
\ 000012 53E4F3 ANL 0xe4,#0xf3
\ 000015 E5E4 MOV A,0xe4
443 T1CTL |= prescale;
\ 000017 EA MOV A,R2
\ 000018 45E4 ORL A,0xe4
\ 00001A F5E4 MOV 0xe4,A
444 break;
445 case HW_TIMER_3:
446 T3CTL &= ~(HAL_TIMER34_8_TC_BITS);
447 T3CTL |= prescale;
448 break;
449 case HW_TIMER_4:
450 T4CTL &= ~(HAL_TIMER34_8_TC_BITS);
451 T4CTL |= prescale;
452 break;
453 default:
454 return HAL_TIMER_INVALID_ID;
455 }
456 return HAL_TIMER_OK;
\ ??halTimerSetPrescale_4:
\ 00001C 7900 MOV R1,#0x0
\ ??halTimerSetPrescale_5:
\ 00001E 02.... LJMP ?Subroutine13 & 0xFFFF
\ ??halTimerSetPrescale_2:
\ 000021 53CB1F ANL 0xcb,#0x1f
\ 000024 E5CB MOV A,0xcb
\ 000026 EA MOV A,R2
\ 000027 45CB ORL A,0xcb
\ 000029 F5CB MOV 0xcb,A
\ 00002B 80EF SJMP ??halTimerSetPrescale_4
\ ??halTimerSetPrescale_3:
\ 00002D 53EB1F ANL 0xeb,#0x1f
\ 000030 E5EB MOV A,0xeb
\ 000032 EA MOV A,R2
\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -