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

📄 osal_timers.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000026   02....       LJMP    ?Subroutine4 & 0xFFFF
    268          }
    269          
    270          /*********************************************************************
    271           * @fn      osal_start_timerEx
    272           *
    273           * @brief
    274           *
    275           *   This function is called to start a timer to expire in n mSecs.
    276           *   When the timer expires, the calling task will get the specified event.
    277           *
    278           * @param   byte taskID - task id to set timer for
    279           * @param   UINT16 event_id - event to be notified with
    280           * @param   UNINT16 timeout_value - in milliseconds.
    281           *
    282           * @return  ZSUCCESS, or NO_TIMER_AVAIL.
    283           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    284          byte osal_start_timerEx( byte taskID, UINT16 event_id, UINT16 timeout_value )
   \                     osal_start_timerEx:
    285          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
    286            halIntState_t intState;
    287            osalTimerRec_t *newTimer;
    288          
    289            HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.
   \   000005   A2AF         MOV     C,0xa8.7
   \   000007   E4           CLR     A
   \   000008   92E0         MOV     0xE0 /* A   */.0,C
   \   00000A   F5..         MOV     ?V0 + 0,A
   \   00000C   C2AF         CLR     0xa8.7
    290          
    291            // Add timer
    292            newTimer = osalAddTimer( taskID, event_id, timeout_value );
   \   00000E                ; Setup parameters for call to function osalAddTimer
   \   00000E   90....       MOV     DPTR,#(osalAddTimer & 0xffff)
   \   000011   74..         MOV     A,#((osalAddTimer >> 16) & 0xff)
   \   000013   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000016   8A..         MOV     ?V0 + 2,R2
   \   000018   8B..         MOV     ?V0 + 3,R3
   \   00001A   AE..         MOV     R6,?V0 + 2
   \   00001C   AF..         MOV     R7,?V0 + 3
    293            if ( newTimer )
   \   00001E   EE           MOV     A,R6
   \   00001F   7001         JNZ     ??osal_start_timerEx_0
   \   000021   EF           MOV     A,R7
   \                     ??osal_start_timerEx_0:
   \   000022   6010         JZ      ??osal_start_timerEx_1
    294            {
    295          #ifdef POWER_SAVING
    296              // Update timer registers
    297              osal_retune_timers();
    298              (void)timerActive;
    299          #endif
    300              // Does the timer need to be started?
    301              if ( timerActive == FALSE )
   \   000024   90....       MOV     DPTR,#timerActive
   \   000027   E0           MOVX    A,@DPTR
   \   000028   700A         JNZ     ??osal_start_timerEx_1
    302              {
    303                osal_timer_activate( TRUE );
   \   00002A                ; Setup parameters for call to function osal_timer_activate
   \   00002A   7901         MOV     R1,#0x1
   \   00002C   90....       MOV     DPTR,#(osal_timer_activate & 0xffff)
   \   00002F   74..         MOV     A,#((osal_timer_activate >> 16) & 0xff)
   \   000031   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    304              }
    305            }
    306          
    307            HAL_EXIT_CRITICAL_SECTION( intState );   // Re-enable interrupts.
   \                     ??osal_start_timerEx_1:
   \   000034   E5..         MOV     A,?V0 + 0
   \   000036   A2E0         MOV     C,0xE0 /* A   */.0
   \   000038   92AF         MOV     0xa8.7,C
    308          
    309            return ( (newTimer != NULL) ? ZSUCCESS : NO_TIMER_AVAIL );
   \   00003A   EE           MOV     A,R6
   \   00003B   7001         JNZ     ??osal_start_timerEx_2
   \   00003D   EF           MOV     A,R7
   \                     ??osal_start_timerEx_2:
   \   00003E   6004         JZ      ??osal_start_timerEx_3
   \   000040   7900         MOV     R1,#0x0
   \   000042   8002         SJMP    ??osal_start_timerEx_4
   \                     ??osal_start_timerEx_3:
   \   000044   790C         MOV     R1,#0xc
   \                     ??osal_start_timerEx_4:
   \   000046   02....       LJMP    ?Subroutine3 & 0xFFFF
    310          }
    311          
    312          /*********************************************************************
    313           * @fn      osal_stop_timer
    314           *
    315           * @brief
    316           *
    317           *   This function is called to stop a timer that has already been started.
    318           *   If ZSUCCESS, the function will cancel the timer and prevent the event
    319           *   associated with the timer from being set for the calling task.
    320           *
    321           * @param   UINT16 event_id - identifier of the timer that is to be stopped
    322           *
    323           * @return  ZSUCCESS or INVALID_EVENT_ID
    324           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    325          byte osal_stop_timer( UINT16 event_id )
   \                     osal_stop_timer:
    326          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    327            return osal_stop_timerEx( osal_self(), event_id );
   \   000005                ; Setup parameters for call to function osal_stop_timerEx
   \   000005   EA           MOV     A,R2
   \   000006   FE           MOV     R6,A
   \   000007   EB           MOV     A,R3
   \   000008   FF           MOV     R7,A
   \   000009                ; Setup parameters for call to function osal_self
   \   000009   90....       MOV     DPTR,#(osal_self & 0xffff)
   \   00000C   74..         MOV     A,#((osal_self >> 16) & 0xff)
   \   00000E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000011   EE           MOV     A,R6
   \   000012   FA           MOV     R2,A
   \   000013   EF           MOV     A,R7
   \   000014   FB           MOV     R3,A
   \   000015   90....       MOV     DPTR,#(osal_stop_timerEx & 0xffff)
   \   000018   74..         MOV     A,#((osal_stop_timerEx >> 16) & 0xff)
   \   00001A   02....       LJMP    ?Subroutine4 & 0xFFFF
    328          }
    329          
    330          /*********************************************************************
    331           * @fn      osal_stop_timerEx
    332           *
    333           * @brief
    334           *
    335           *   This function is called to stop a timer that has already been started.
    336           *   If ZSUCCESS, the function will cancel the timer and prevent the event
    337           *   associated with the timer from being set for the calling task.
    338           *
    339           * @param   byte task_id - task id of timer to stop
    340           * @param   UINT16 event_id - identifier of the timer that is to be stopped
    341           *
    342           * @return  ZSUCCESS or INVALID_EVENT_ID
    343           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    344          byte osal_stop_timerEx( byte task_id, UINT16 event_id )
   \                     osal_stop_timerEx:
    345          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
    346            halIntState_t intState;
    347            osalTimerRec_t *foundTimer;
    348          
    349            HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.
   \   000005   A2AF         MOV     C,0xa8.7
   \   000007   E4           CLR     A
   \   000008   92E0         MOV     0xE0 /* A   */.0,C
   \   00000A   F5..         MOV     ?V0 + 0,A
   \   00000C   C2AF         CLR     0xa8.7
    350          
    351            // Find the timer to stop
    352            foundTimer = osalFindTimer( task_id, event_id );
   \   00000E                ; Setup parameters for call to function osalFindTimer
   \   00000E   90....       MOV     DPTR,#(osalFindTimer & 0xffff)
   \   000011   74..         MOV     A,#((osalFindTimer >> 16) & 0xff)
   \   000013   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000016   8A..         MOV     ?V0 + 2,R2
   \   000018   8B..         MOV     ?V0 + 3,R3
   \   00001A   AE..         MOV     R6,?V0 + 2
   \   00001C   AF..         MOV     R7,?V0 + 3
    353            if ( foundTimer )
   \   00001E   EE           MOV     A,R6
   \   00001F   7001         JNZ     ??osal_stop_timerEx_0
   \   000021   EF           MOV     A,R7
   \                     ??osal_stop_timerEx_0:
   \   000022   6008         JZ      ??osal_stop_timerEx_1
    354            {
    355              osalDeleteTimer( foundTimer );
   \   000024                ; Setup parameters for call to function osalDeleteTimer
   \   000024   90....       MOV     DPTR,#(osalDeleteTimer & 0xffff)
   \   000027   74..         MOV     A,#((osalDeleteTimer >> 16) & 0xff)
   \   000029   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    356          
    357          #ifdef POWER_SAVING
    358              osal_retune_timers();
    359          #endif
    360            }
    361          
    362            HAL_EXIT_CRITICAL_SECTION( intState );   // Re-enable interrupts.
   \                     ??osal_stop_timerEx_1:
   \   00002C   E5..         MOV     A,?V0 + 0
   \   00002E   A2E0         MOV     C,0xE0 /* A   */.0
   \   000030   92AF         MOV     0xa8.7,C
    363          
    364            return ( (foundTimer != NULL) ? ZSUCCESS : INVALID_EVENT_ID );
   \   000032   EE           MOV     A,R6
   \   000033   7001         JNZ     ??osal_stop_timerEx_2
   \   000035   EF           MOV     A,R7
   \                     ??osal_stop_timerEx_2:
   \   000036   6004         JZ      ??osal_stop_timerEx_3
   \   000038   7900         MOV     R1,#0x0
   \   00003A   8002         SJMP    ??osal_stop_timerEx_4
   \                     ??osal_stop_timerEx_3:
   \   00003C   7907         MOV     R1,#0x7
   \                     ??osal_stop_timerEx_4:
   \   00003E   80..         SJMP    ?Subroutine3
    365          }
    366          
    367          /*********************************************************************
    368           * @fn      osal_get_timeoutEx
    369           *
    370           * @brief
    371           *
    372           * @param   byte task_id - task id of timer to check
    373           * @param   UINT16 event_id - identifier of timer to be checked
    374           *
    375           * @return  Return the timer's tick count if found, zero otherwise.
    376           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    377          UINT16 osal_get_timeoutEx( byte task_id, UINT16 event_id )
   \                     osal_get_timeoutEx:
    378          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
    379            halIntState_t intState;
    380            uint16 rtrn = 0;
   \   000005   7E00         MOV     R6,#0x0
   \   000007   7F00         MOV     R7,#0x0
    381            osalTimerRec_t *tmr;
    382          
    383            HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.
   \   000009   A2AF         MOV     C,0xa8.7
   \   00000B   E4           CLR     A
   \   00000C   92E0         MOV     0xE0 /* A   */.0,C
   \   00000E   F5..         MOV     ?V0 + 0,A
   \   000010   C2AF         CLR     0xa8.7
    384          
    385            tmr = osalFindTimer( task_id, event_id );
   \   000012                ; Setup parameters for call to function osalFindTimer
   \   000012   90....       MOV     DPTR,#(osalFindTimer & 0xffff)
   \   000015   74..         MOV     A,#((osalFindTimer >> 16) & 0xff)
   \   000017   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00001A   8A82         MOV     DPL,R2
   \   00001C   8B83         MOV     DPH,R3
    386          
    387            if ( tmr )
   \   00001E   E582         MOV     A,DPL
   \   000020   7002         JNZ     ??osal_get_timeoutEx_0
   \   000022   E583         MOV     A,DPH
   \                     ??osal_get_timeoutEx_0:
   \   000024   6007         JZ      ??osal_get_timeoutEx_1
    388            {

⌨️ 快捷键说明

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