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

📄 osal_timers.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    389              rtrn = tmr->timeout;
   \   000026   A3           INC     DPTR
   \   000027   A3           INC     DPTR
   \   000028   E0           MOVX    A,@DPTR
   \   000029   FE           MOV     R6,A
   \   00002A   A3           INC     DPTR
   \   00002B   E0           MOVX    A,@DPTR
   \   00002C   FF           MOV     R7,A
    390            }
    391          
    392            HAL_EXIT_CRITICAL_SECTION( intState );   // Re-enable interrupts.
   \                     ??osal_get_timeoutEx_1:
   \   00002D   E5..         MOV     A,?V0 + 0
   \   00002F   A2E0         MOV     C,0xE0 /* A   */.0
   \   000031   92AF         MOV     0xa8.7,C
    393          
    394            return rtrn;
   \   000033   EE           MOV     A,R6
   \   000034   FA           MOV     R2,A
   \   000035   EF           MOV     A,R7
   \   000036   FB           MOV     R3,A
   \   000037                REQUIRE ?Subroutine3
   \   000037                ; // Fall through to label ?Subroutine3
    395          }
    396          
    397          /*********************************************************************
    398           * @fn      osal_timer_activate
    399           *
    400           * @brief
    401           *
    402           *   Turns the hardware timer on or off
    403           *
    404           * @param  byte turn_on - false - turn off, true - turn on
    405           *
    406           * @return  none
    407           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    408          void osal_timer_activate( byte turn_on )
   \                     osal_timer_activate:
    409          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FE           MOV     R6,A
    410            osal_timer_hw_setup( turn_on );
   \   000007                ; Setup parameters for call to function osal_timer_hw_setup
   \   000007   90....       MOV     DPTR,#(osal_timer_hw_setup & 0xffff)
   \   00000A   74..         MOV     A,#((osal_timer_hw_setup >> 16) & 0xff)
   \   00000C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    411            timerActive = turn_on;
   \   00000F   EE           MOV     A,R6
   \   000010   90....       MOV     DPTR,#timerActive
   \   000013   F0           MOVX    @DPTR,A
    412          }
   \   000014   02....       LJMP    ??Subroutine4_0 & 0xFFFF
    413          
    414          /*********************************************************************
    415           * @fn      osal_timer_num_active
    416           *
    417           * @brief
    418           *
    419           *   This function counts the number of active timers.
    420           *
    421           * @return  byte - number of timers
    422           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    423          byte osal_timer_num_active( void )
   \                     osal_timer_num_active:
    424          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    425            halIntState_t intState;
    426            byte num_timers = 0;
   \   000004   7900         MOV     R1,#0x0
    427            osalTimerRec_t *srchTimer;
    428          
    429            HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.
   \   000006   A2AF         MOV     C,0xa8.7
   \   000008   E4           CLR     A
   \   000009   92E0         MOV     0xE0 /* A   */.0,C
   \   00000B   C2AF         CLR     0xa8.7
    430          
    431            // Head of the timer list
    432            srchTimer = timerHead;
   \   00000D   90....       MOV     DPTR,#timerHead
   \   000010   8001         SJMP    ??osal_timer_num_active_0
    433          
    434            // Count timers in the list
    435            while ( srchTimer != NULL )
    436            {
    437              num_timers++;
   \                     ??osal_timer_num_active_1:
   \   000012   09           INC     R1
    438              srchTimer = srchTimer->next;
   \                     ??osal_timer_num_active_0:
   \   000013   E0           MOVX    A,@DPTR
   \   000014   FA           MOV     R2,A
   \   000015   A3           INC     DPTR
   \   000016   E0           MOVX    A,@DPTR
   \   000017   FB           MOV     R3,A
   \   000018   8A82         MOV     DPL,R2
   \   00001A   8B83         MOV     DPH,R3
    439            }
   \   00001C   E582         MOV     A,DPL
   \   00001E   7002         JNZ     ??osal_timer_num_active_2
   \   000020   E583         MOV     A,DPH
   \                     ??osal_timer_num_active_2:
   \   000022   70EE         JNZ     ??osal_timer_num_active_1
    440          
    441            HAL_EXIT_CRITICAL_SECTION( intState );   // Re-enable interrupts.
   \   000024   92AF         MOV     0xa8.7,C
    442          
    443            return num_timers;
   \   000026   80..         SJMP    ??Subroutine5_0
    444          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine5:
   \   000000   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \                     ??Subroutine5_0:
   \   000003   D083         POP     DPH
   \   000005   D082         POP     DPL
   \   000007   02....       LJMP    ?BRET
    445          
    446          /*********************************************************************
    447           * @fn      osal_timer_hw_setup
    448           *
    449           * @brief
    450           *
    451           *   Setup the timer hardware.
    452           *
    453           * @param  byte turn_on
    454           *
    455           * @return  void
    456           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    457          void osal_timer_hw_setup( byte turn_on )
   \                     osal_timer_hw_setup:
    458          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
    459            if (turn_on)
   \   000005   E9           MOV     A,R1
   \   000006   6019         JZ      ??osal_timer_hw_setup_0
    460            {
    461              HalTimerStart (OSAL_TIMER, tmr_count );
   \   000008                ; Setup parameters for call to function HalTimerStart
   \   000008   90....       MOV     DPTR,#tmr_count
   \   00000B   78..         MOV     R0,#?V0 + 0
   \   00000D   12....       LCALL   ?L_MOV_X
   \   000010   AA..         MOV     R2,?V0 + 0
   \   000012   AB..         MOV     R3,?V0 + 1
   \   000014   AC..         MOV     R4,?V0 + 2
   \   000016   AD..         MOV     R5,?V0 + 3
   \   000018   7902         MOV     R1,#0x2
   \   00001A   90....       MOV     DPTR,#(HalTimerStart & 0xffff)
   \   00001D   74..         MOV     A,#((HalTimerStart >> 16) & 0xff)
   \   00001F   8007         SJMP    ??osal_timer_hw_setup_1
    462            }
    463            else
    464            {
    465              HalTimerStop (OSAL_TIMER);
   \                     ??osal_timer_hw_setup_0:
   \   000021                ; Setup parameters for call to function HalTimerStop
   \   000021   7902         MOV     R1,#0x2
   \   000023   90....       MOV     DPTR,#(HalTimerStop & 0xffff)
   \   000026   74..         MOV     A,#((HalTimerStop >> 16) & 0xff)
   \                     ??osal_timer_hw_setup_1:
   \   000028   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    466            }
    467          }
   \   00002B   80..         SJMP    ?Subroutine3
    468          
    469          #if defined( POWER_SAVING )
    470          /*********************************************************************
    471           * @fn      osal_sleep_timers
    472           *
    473           * @brief
    474           *
    475           *   This function will enable interrupts if timers are running.
    476           *
    477           * @param  none
    478           *
    479           * @return  none
    480           */
    481          void osal_sleep_timers( void )
    482          {
    483          #ifndef TIMER_INT
    484            if ( osal_timer_num_active() )
    485              osal_set_timer_interrupt( TRUE );
    486          #endif
    487          }
    488          
    489          /*********************************************************************
    490           * @fn      osal_unsleep_timers
    491           *
    492           * @brief
    493           *
    494           *   This function will disable interrupts if timers are running.
    495           *
    496           * @param  none
    497           *
    498           * @return  none
    499           */
    500          void osal_unsleep_timers( void )
    501          {
    502          #ifndef TIMER_INT
    503            osal_set_timer_interrupt( FALSE );
    504          #endif
    505          }
    506          #endif
    507          
    508          /*********************************************************************
    509           * @fn      osal_set_timer_interrupt
    510           *
    511           * @brief
    512           *
    513           *   Setup the timer hardware interrupt.
    514           *
    515           * @param  byte turn_on
    516           *
    517           * @return  void
    518           *********************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    519          void osal_set_timer_interrupt( byte turn_on )
   \                     osal_set_timer_interrupt:
    520          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    521            // Enable or disable timer interrupts
    522            HalTimerInterruptEnable ( OSAL_TIMER, HAL_TIMER_CH_MODE_OUTPUT_COMPARE, turn_on);
   \   000004                ; Setup parameters for call to function HalTimerInterruptEnable
   \   000004   E9           MOV     A,R1
   \   000005   FB           MOV     R3,A
   \   000006   7A02         MOV     R2,#0x2
   \   000008   7902         MOV     R1,#0x2
   \   00000A   90....       MOV     DPTR,#(HalTimerInterruptEnable & 0xffff)
   \   00000D   74..         MOV     A,#((HalTimerInterruptEnable >> 16) & 0xff)
   \   00000F                REQUIRE ?Subroutine5
   \   00000F                ; // Fall through to label ?Subroutine5
    523          }
    524          
    525          /*********************************************************************
    526           * @fn      osalTimerUpdate
    527           *
    528           * @brief   Update the timer s

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -