⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_timer.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   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 + -