📄 os_cpu_c.src
字号:
; SOURCE LINE # 171
MOV DPTR,#09H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
XCH A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
;
; stk -= sizeof(void *);
; SOURCE LINE # 173
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
MOV A,#0FFH
MOV B,#0FDH
LCALL ?C?IILDX
; *(void**)stk = pdata;
; SOURCE LINE # 174
MOV DPTR,#06H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
PUSH AR3
PUSH AR2
PUSH AR1
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?PSTPTR
;
; *--stk = 7;
; SOURCE LINE # 176
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#07H
LCALL ?C?CSTPTR
; *--stk = 6;
; SOURCE LINE # 177
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#06H
LCALL ?C?CSTPTR
; *--stk = 5;
; SOURCE LINE # 178
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#05H
LCALL ?C?CSTPTR
; *--stk = 4;
; SOURCE LINE # 179
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#04H
LCALL ?C?CSTPTR
; /*
; *--stk = 3;
; *--stk = 2;
; *--stk = 1;
; */
; stk -= sizeof(void *);
; SOURCE LINE # 185
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
MOV A,#0FFH
MOV B,#0FDH
LCALL ?C?IILDX
; *(void**)stk = pdata;
; SOURCE LINE # 186
MOV DPTR,#06H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
PUSH AR3
PUSH AR2
PUSH AR1
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?PSTPTR
; *--stk = 0;
; SOURCE LINE # 187
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
CLR A
LCALL ?C?CSTPTR
; *--stk = PSW;
; SOURCE LINE # 188
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,PSW
LCALL ?C?CSTPTR
; *--stk = 'L';
; SOURCE LINE # 189
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#04CH
LCALL ?C?CSTPTR
; *--stk = 'H';
; SOURCE LINE # 190
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#048H
LCALL ?C?CSTPTR
; *--stk = 'B';
; SOURCE LINE # 191
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#042H
LCALL ?C?CSTPTR
; *--stk = 'A';
; SOURCE LINE # 192
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#041H
LCALL ?C?CSTPTR
; *--stk = ((INT16U)task >> 8);
; SOURCE LINE # 193
MOV DPTR,#03H
LCALL ?C?XBPOFF
INC DPTR
MOVX A,@DPTR
MOV R2,A
MOV A,R2
MOV R7,A
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,R7
LCALL ?C?CSTPTR
; *--stk = ((INT16U)task & 0x00FF);
; SOURCE LINE # 194
MOV DPTR,#03H
LCALL ?C?XBPOFF
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,R7
LCALL ?C?CSTPTR
;
; *--stk = 15;
; SOURCE LINE # 196
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOV A,#0FFH
MOV B,A
LCALL ?C?IILDX
MOV R1,B
MOV R2,A
MOV A,#0FH
LCALL ?C?CSTPTR
;
; return ((void *)stk);
; SOURCE LINE # 198
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
; }
; SOURCE LINE # 199
?C0007:
MOV DPTR,#0EH
LJMP ?C?ADDXBP
; END OF _?OSTaskStkInit
;
; /*$PAGE*/
; /*
; *********************************************************************************************************
; * TASK SWITCH HOOK
; *
; * Description: This function is called when a task switch is performed. This allows you to perform other
; * operations during a context switch.
; *
; * Arguments : none
; *
; * Note(s) : 1) Interrupts are disabled during this call.
; * 2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
; * will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the
; * task being switched out (i.e. the preempted task).
; *********************************************************************************************************
; */
; #if OS_CPU_HOOKS_EN > 0
; void OSTaskSwHook (void) KCREENTRANT
RSEG ?PR?_?OSTaskSwHook?OS_CPU_C
_?OSTaskSwHook:
; SOURCE LINE # 218
; {
; }
; SOURCE LINE # 220
RET
; END OF _?OSTaskSwHook
; #endif
;
; /*
; *********************************************************************************************************
; * OSTCBInit() HOOK
; *
; * Description: This function is called by OS_TCBInit() after setting up most of the TCB.
; *
; * Arguments : ptcb is a pointer to the TCB of the task being created.
; *
; * Note(s) : 1) Interrupts may or may not be ENABLED during this call.
; *********************************************************************************************************
; */
; #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
; void OSTCBInitHook (OS_TCB *ptcb) KCREENTRANT
RSEG ?PR?_?OSTCBInitHook?OS_CPU_C
_?OSTCBInitHook:
USING 0
; SOURCE LINE # 235
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; {
; ptcb = ptcb; /* Prevent Compiler warning */
; SOURCE LINE # 237
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
XCH A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; }
; SOURCE LINE # 238
MOV DPTR,#03H
LJMP ?C?ADDXBP
; END OF _?OSTCBInitHook
; #endif
;
;
; /*
; *********************************************************************************************************
; * TICK HOOK
; *
; * Description: This function is called every tick.
; *
; * Arguments : none
; *
; * Note(s) : 1) Interrupts may or may not be ENABLED during this call.
; *********************************************************************************************************
; */
; #if OS_CPU_HOOKS_EN > 0
; void OSTimeTickHook (void) KCREENTRANT
RSEG ?PR?_?OSTimeTickHook?OS_CPU_C
_?OSTimeTickHook:
; SOURCE LINE # 254
; {
; }
; SOURCE LINE # 256
RET
; END OF _?OSTimeTickHook
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -