📄 osal_timers.s51
字号:
FUNCALL osal_stop_timer, osal_stop_timerEx
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
MOV A,#-0x9
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 327 return osal_stop_timerEx( osal_self(), event_id );
; Setup parameters for call to function osal_stop_timerEx
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
; Setup parameters for call to function osal_self
MOV DPTR,#(osal_self & 0xffff)
MOV A,#((osal_self >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_stop_timerEx & 0xffff)
MOV A,#((osal_stop_timerEx >> 16) & 0xff)
LJMP ?Subroutine5 & 0xFFFF
CFI EndBlock cfiBlock12
// 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 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 344 byte osal_stop_timerEx( byte task_id, UINT16 event_id )
osal_stop_timerEx:
CFI Block cfiBlock13 Using cfiCommon0
CFI Function osal_stop_timerEx
// 345 {
FUNCALL osal_stop_timerEx, osalFindTimer
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL osal_stop_timerEx, osalDeleteTimer
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL osal_stop_timerEx, osal_retune_timers
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xc
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 0
// 346 halIntState_t intState;
// 347 osalTimerRec_t *foundTimer;
// 348
// 349 HAL_ENTER_CRITICAL_SECTION( intState ); // Hold off interrupts.
MOV C,0xa8.7
CLR A
MOV 0xE0 /* A */.0,C
MOV ?V0 + 0,A
CLR 0xa8.7
// 350
// 351 // Find the timer to stop
// 352 foundTimer = osalFindTimer( task_id, event_id );
; Setup parameters for call to function osalFindTimer
MOV DPTR,#(osalFindTimer & 0xffff)
MOV A,#((osalFindTimer >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 2,R2
MOV ?V0 + 3,R3
MOV R6,?V0 + 2
MOV R7,?V0 + 3
// 353 if ( foundTimer )
MOV A,R6
JNZ ??osal_stop_timerEx_0
MOV A,R7
??osal_stop_timerEx_0:
JZ ??osal_stop_timerEx_1
// 354 {
// 355 osalDeleteTimer( foundTimer );
; Setup parameters for call to function osalDeleteTimer
MOV DPTR,#(osalDeleteTimer & 0xffff)
MOV A,#((osalDeleteTimer >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 356
// 357 #ifdef POWER_SAVING
// 358 osal_retune_timers();
; Setup parameters for call to function osal_retune_timers
MOV DPTR,#(osal_retune_timers & 0xffff)
MOV A,#((osal_retune_timers >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 359 #endif
// 360 }
// 361
// 362 HAL_EXIT_CRITICAL_SECTION( intState ); // Re-enable interrupts.
??osal_stop_timerEx_1:
MOV A,?V0 + 0
MOV C,0xE0 /* A */.0
MOV 0xa8.7,C
// 363
// 364 return ( (foundTimer != NULL) ? ZSUCCESS : INVALID_EVENT_ID );
MOV A,R6
JNZ ??osal_stop_timerEx_2
MOV A,R7
??osal_stop_timerEx_2:
JZ ??osal_stop_timerEx_3
MOV R1,#0x0
SJMP ??osal_stop_timerEx_4
??osal_stop_timerEx_3:
MOV R1,#0x7
??osal_stop_timerEx_4:
SJMP ?Subroutine4
CFI EndBlock cfiBlock13
// 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 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 377 UINT16 osal_get_timeoutEx( byte task_id, UINT16 event_id )
osal_get_timeoutEx:
CFI Block cfiBlock14 Using cfiCommon0
CFI Function osal_get_timeoutEx
// 378 {
FUNCALL osal_get_timeoutEx, osalFindTimer
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xc
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 0
// 379 halIntState_t intState;
// 380 uint16 rtrn = 0;
MOV R6,#0x0
MOV R7,#0x0
// 381 osalTimerRec_t *tmr;
// 382
// 383 HAL_ENTER_CRITICAL_SECTION( intState ); // Hold off interrupts.
MOV C,0xa8.7
CLR A
MOV 0xE0 /* A */.0,C
MOV ?V0 + 0,A
CLR 0xa8.7
// 384
// 385 tmr = osalFindTimer( task_id, event_id );
; Setup parameters for call to function osalFindTimer
MOV DPTR,#(osalFindTimer & 0xffff)
MOV A,#((osalFindTimer >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV DPL,R2
MOV DPH,R3
// 386
// 387 if ( tmr )
MOV A,DPL
JNZ ??osal_get_timeoutEx_0
MOV A,DPH
??osal_get_timeoutEx_0:
JZ ??osal_get_timeoutEx_1
// 388 {
// 389 rtrn = tmr->timeout;
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
// 390 }
// 391
// 392 HAL_EXIT_CRITICAL_SECTION( intState ); // Re-enable interrupts.
??osal_get_timeoutEx_1:
MOV A,?V0 + 0
MOV C,0xE0 /* A */.0
MOV 0xa8.7,C
// 393
// 394 return rtrn;
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
CFI EndBlock cfiBlock14
REQUIRE ?Subroutine4
; // Fall through to label ?Subroutine4
// 395 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine4:
CFI Block cfiBlock15 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock15
// 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 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 408 void osal_timer_activate( byte turn_on )
osal_timer_activate:
CFI Block cfiBlock16 Using cfiCommon0
CFI Function osal_timer_activate
// 409 {
FUNCALL osal_timer_activate, osal_timer_hw_setup
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
MOV A,#-0x9
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
MOV A,R1
MOV R6,A
// 410 osal_timer_hw_setup( turn_on );
; Setup parameters for call to function osal_timer_hw_setup
MOV DPTR,#(osal_timer_hw_setup & 0xffff)
MOV A,#((osal_timer_hw_setup >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 411 timerActive = turn_on;
MOV A,R6
MOV DPTR,#timerActive
MOVX @DPTR,A
// 412 }
LJMP ??Subroutine5_0 & 0xFFFF
CFI EndBlock cfiBlock16
// 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 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 423 byte osal_timer_num_active( void )
osal_timer_num_active:
CFI Block cfiBlock17 Using cfiCommon0
CFI Function osal_timer_num_active
// 424 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 425 halIntState_t intState;
// 426 byte num_timer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -