📄 osal_timers.s51
字号:
JNZ ??osalDeleteTimer_8
MOV A,R3
XRL A,R5
??osalDeleteTimer_8:
JNZ ??osalDeleteTimer_5
// 238
// 239 // Found?
// 240 if ( srchTimer->next == rmTimer )
??osalDeleteTimer_7:
LCALL ?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_2:
MOV A,R2
XRL A,R4
JNZ ??osalDeleteTimer_9
MOV A,R3
XRL A,R5
??osalDeleteTimer_9:
JNZ ??osalDeleteTimer_1
// 241 {
// 242 // Fix pointers
// 243 srchTimer->next = rmTimer->next;
MOV DPL,R2
MOV DPH,R3
LCALL ??Subroutine0_0 & 0xFFFF
??CrossCallReturnLabel_3:
MOV DPL,R0
MOV DPH,R1
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
??osalDeleteTimer_4:
MOVX @DPTR,A
// 244
// 245 // Deallocate the timer struct memory
// 246 osal_mem_free( rmTimer );
; Setup parameters for call to function osal_mem_free
MOV DPTR,#(osal_mem_free & 0xffff)
MOV A,#((osal_mem_free >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 247 }
// 248 }
// 249 }
// 250 }
??osalDeleteTimer_1:
SJMP ??Subroutine5_0
CFI EndBlock cfiBlock4
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiCond5 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_1
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond6 Using cfiCommon0
CFI (cfiCond6) NoFunction
CFI (cfiCond6) Conditional ??CrossCallReturnLabel_2
CFI (cfiCond6) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond6) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond6) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond6) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond6) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond6) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond6) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond6) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond6) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond6) CFA_SP SP+0
CFI (cfiCond6) CFA_XSP16 add(XSP16, 9)
CFI Block cfiPicker7 Using cfiCommon1
CFI (cfiPicker7) NoFunction
CFI (cfiPicker7) Picker
MOV DPL,R0
MOV DPH,R1
CFI Block cfiCond8 Using cfiCommon0
CFI (cfiCond8) NoFunction
CFI (cfiCond8) Conditional ??CrossCallReturnLabel_3
CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond8) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond8) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond8) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond8) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond8) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond8) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond8) CFA_SP SP+0
CFI (cfiCond8) CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond9 Using cfiCommon0
CFI (cfiCond9) NoFunction
CFI (cfiCond9) Conditional ??CrossCallReturnLabel_0
CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond9) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond9) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond9) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond9) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond9) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond9) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond9) CFA_SP SP+0
CFI (cfiCond9) CFA_XSP16 add(XSP16, 9)
??Subroutine0_0:
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
RET
CFI EndBlock cfiCond5
CFI EndBlock cfiCond6
CFI EndBlock cfiPicker7
CFI EndBlock cfiCond8
CFI EndBlock cfiCond9
// 251
// 252 /*********************************************************************
// 253 * @fn osal_start_timer
// 254 *
// 255 * @brief
// 256 *
// 257 * This function is called to start a timer to expire in n mSecs.
// 258 * When the timer expires, the calling task will get the specified event.
// 259 *
// 260 * @param UINT16 event_id - event to be notified with
// 261 * @param UNINT16 timeout_value - in milliseconds.
// 262 *
// 263 * @return ZSUCCESS, NO_TIMER_AVAIL, INVALID_EVENT_ID or INVALID_TIMEOUT_VALUE
// 264 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 265 byte osal_start_timer( UINT16 event_id, UINT16 timeout_value )
osal_start_timer:
CFI Block cfiBlock10 Using cfiCommon0
CFI Function osal_start_timer
// 266 {
FUNCALL osal_start_timer, osal_self
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 9, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL osal_start_timer, osal_start_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
// 267 return osal_start_timerEx( osal_self(), event_id, timeout_value );
; Setup parameters for call to function osal_start_timerEx
MOV A,R2
PUSH A
CFI CFA_SP SP+-1
MOV A,R3
PUSH A
CFI CFA_SP SP+-2
MOV A,R4
MOV R6,A
MOV A,R5
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 R4,A
MOV A,R7
MOV R5,A
POP A
CFI CFA_SP SP+-1
MOV R3,A
POP A
CFI CFA_SP SP+0
MOV R2,A
MOV DPTR,#(osal_start_timerEx & 0xffff)
MOV A,#((osal_start_timerEx >> 16) & 0xff)
LJMP ?Subroutine5 & 0xFFFF
CFI EndBlock cfiBlock10
// 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 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 284 byte osal_start_timerEx( byte taskID, UINT16 event_id, UINT16 timeout_value )
osal_start_timerEx:
CFI Block cfiBlock11 Using cfiCommon0
CFI Function osal_start_timerEx
// 285 {
FUNCALL osal_start_timerEx, osalAddTimer
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL osal_start_timerEx, osal_retune_timers
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL osal_start_timerEx, osal_timer_activate
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
// 286 halIntState_t intState;
// 287 osalTimerRec_t *newTimer;
// 288
// 289 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
// 290
// 291 // Add timer
// 292 newTimer = osalAddTimer( taskID, event_id, timeout_value );
; Setup parameters for call to function osalAddTimer
MOV DPTR,#(osalAddTimer & 0xffff)
MOV A,#((osalAddTimer >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 2,R2
MOV ?V0 + 3,R3
MOV R6,?V0 + 2
MOV R7,?V0 + 3
// 293 if ( newTimer )
MOV A,R6
JNZ ??osal_start_timerEx_0
MOV A,R7
??osal_start_timerEx_0:
JZ ??osal_start_timerEx_1
// 294 {
// 295 #ifdef POWER_SAVING
// 296 // Update timer registers
// 297 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()
// 298 (void)timerActive;
// 299 #endif
// 300 // Does the timer need to be started?
// 301 if ( timerActive == FALSE )
MOV DPTR,#timerActive
MOVX A,@DPTR
JNZ ??osal_start_timerEx_1
// 302 {
// 303 osal_timer_activate( TRUE );
; Setup parameters for call to function osal_timer_activate
MOV R1,#0x1
MOV DPTR,#(osal_timer_activate & 0xffff)
MOV A,#((osal_timer_activate >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 304 }
// 305 }
// 306
// 307 HAL_EXIT_CRITICAL_SECTION( intState ); // Re-enable interrupts.
??osal_start_timerEx_1:
MOV A,?V0 + 0
MOV C,0xE0 /* A */.0
MOV 0xa8.7,C
// 308
// 309 return ( (newTimer != NULL) ? ZSUCCESS : NO_TIMER_AVAIL );
MOV A,R6
JNZ ??osal_start_timerEx_2
MOV A,R7
??osal_start_timerEx_2:
JZ ??osal_start_timerEx_3
MOV R1,#0x0
SJMP ??osal_start_timerEx_4
??osal_start_timerEx_3:
MOV R1,#0xc
??osal_start_timerEx_4:
LJMP ?Subroutine4 & 0xFFFF
CFI EndBlock cfiBlock11
// 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 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 325 byte osal_stop_timer( UINT16 event_id )
osal_stop_timer:
CFI Block cfiBlock12 Using cfiCommon0
CFI Function osal_stop_timer
// 326 {
FUNCALL osal_stop_timer, osal_self
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -