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

📄 hal_timer.lst

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