📄 osal_tasks.s51
字号:
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_5:
MOVX A,@DPTR
MOV DPL,R4
MOV DPH,R5
LCALL ?BCALL ; Banked call to: DPTR()
// 165
// 166 activeTask = activeTask->next;
??osalInitTasks_1:
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_1:
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#activeTask
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
// 167 }
MOV DPTR,#activeTask
MOVX A,@DPTR
JNZ ??osalInitTasks_2
INC DPTR
MOVX A,@DPTR
??osalInitTasks_2:
JNZ ??osalInitTasks_0
// 168
// 169 activeTask = (osalTaskRec_t *)NULL;
// 170 }
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock11
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiCond12 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 cfiCond13 Using cfiCommon0
CFI (cfiCond13) NoFunction
CFI (cfiCond13) Conditional ??CrossCallReturnLabel_0
CFI (cfiCond13) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond13) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond13) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond13) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond13) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond13) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond13) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond13) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond13) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond13) CFA_SP SP+0
CFI (cfiCond13) CFA_XSP16 add(XSP16, 9)
CFI Block cfiPicker14 Using cfiCommon1
CFI (cfiPicker14) NoFunction
CFI (cfiPicker14) Picker
MOV DPTR,#activeTask
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
RET
CFI EndBlock cfiCond12
CFI EndBlock cfiCond13
CFI EndBlock cfiPicker14
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond15 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_4
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 cfiCond16 Using cfiCommon0
CFI (cfiCond16) NoFunction
CFI (cfiCond16) Conditional ??CrossCallReturnLabel_5
CFI (cfiCond16) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond16) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond16) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond16) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond16) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond16) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond16) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond16) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond16) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond16) CFA_SP SP+0
CFI (cfiCond16) CFA_XSP16 add(XSP16, 9)
CFI Block cfiPicker17 Using cfiCommon1
CFI (cfiPicker17) NoFunction
CFI (cfiPicker17) Picker
MOV DPTR,#(activeTask + 1)
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
SJMP ?Subroutine4
CFI EndBlock cfiCond15
CFI EndBlock cfiCond16
CFI EndBlock cfiPicker17
// 171
// 172 /*********************************************************************
// 173 * @fn osalNextActiveTask
// 174 *
// 175 * @brief This function will return the next active task.
// 176 *
// 177 * NOTE: Task queue is in priority order. We can stop at the
// 178 * first task that is "ready" (events element non-zero)
// 179 *
// 180 * @param none
// 181 *
// 182 * @return pointer to the found task, NULL if not found
// 183 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 184 osalTaskRec_t *osalNextActiveTask( void )
osalNextActiveTask:
CFI Block cfiBlock18 Using cfiCommon0
CFI Function osalNextActiveTask
// 185 {
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
// 186 osalTaskRec_t *srchTask;
// 187
// 188 // Start at the beginning
// 189 srchTask = tasksHead;
MOV DPTR,#tasksHead
SJMP ??osalNextActiveTask_0
// 190
// 191 // When found or not
// 192 while ( srchTask ) {
// 193 if (srchTask->events) {
// 194 // task is highest priority that is ready
// 195 return srchTask;
// 196 }
// 197 srchTask = srchTask->next;
??osalNextActiveTask_1:
MOV DPL,R2
MOV DPH,R3
??osalNextActiveTask_0:
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV A,R2
JNZ ??osalNextActiveTask_2
MOV A,R3
??osalNextActiveTask_2:
JZ ??osalNextActiveTask_3
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
JNZ ??osalNextActiveTask_4
INC DPTR
MOVX A,@DPTR
??osalNextActiveTask_4:
JZ ??osalNextActiveTask_1
SJMP ??osalNextActiveTask_5
// 198 }
// 199 return NULL;
??osalNextActiveTask_3:
MOV R2,#0x0
MOV R3,#0x0
??osalNextActiveTask_5:
LJMP ?Subroutine3 & 0xFFFF
CFI EndBlock cfiBlock18
// 200 }
// 201
// 202
// 203 /*********************************************************************
// 204 * @fn osalFindTask
// 205 *
// 206 * @brief This function will return a task pointer to the task
// 207 * found with the passed in task ID.
// 208 *
// 209 * @param taskID - task ID to look for
// 210 *
// 211 * @return pointer to the found task, NULL if not found
// 212 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 213 osalTaskRec_t *osalFindTask( byte taskID )
osalFindTask:
CFI Block cfiBlock19 Using cfiCommon0
CFI Function osalFindTask
// 214 {
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
// 215 osalTaskRec_t *srchTask;
// 216
// 217 // Start at the beginning
// 218 srchTask = tasksHead;
MOV DPTR,#tasksHead
SJMP ??osalFindTask_0
// 219
// 220 // When found or not
// 221 while ( srchTask )
// 222 {
// 223 // Look for any activity
// 224 if ( srchTask->taskID == taskID )
// 225 return ( srchTask );
// 226
// 227 srchTask = srchTask->next;
??osalFindTask_1:
MOV DPL,R2
MOV DPH,R3
??osalFindTask_0:
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV A,R2
JNZ ??osalFindTask_2
MOV A,R3
??osalFindTask_2:
JZ ??osalFindTask_3
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,R1
JNZ ??osalFindTask_1
SJMP ??osalFindTask_4
// 228 }
// 229
// 230 return ( (osalTaskRec_t *)NULL );
??osalFindTask_3:
MOV R2,#0x0
MOV R3,#0x0
??osalFindTask_4:
LJMP ?Subroutine3 & 0xFFFF
CFI EndBlock cfiBlock19
// 231 }
END
// 232
// 233 /*********************************************************************
// 234 *********************************************************************/
//
// 487 bytes in segment BANKED_CODE
// 5 bytes in segment XDATA_Z
//
// 487 bytes of CODE memory
// 5 bytes of XDATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -