📄 os_cpu_c.src
字号:
; .\OS_CPU_C.SRC generated from: ..\uc_51\OS_CPU_C.C
; COMPILER INVOKED BY:
; D:\KEIL\C51\BIN\C51.EXE ..\uc_51\OS_CPU_C.C BROWSE DEBUG OBJECTEXTEND PRINT(.\OS_CPU_C.lst) SRC(.\OS_CPU_C.SRC)
$NOMOD51
NAME OS_CPU_C
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
EA BIT 0A8H.7
IE DATA 0A8H
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
PS BIT 0B8H.4
SP DATA 081H
OV BIT 0D0H.2
WR BIT 0B0H.6
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
REN BIT 098H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?_?OSTaskStkInit?OS_CPU_C SEGMENT CODE
?PR?OSTickISR?OS_CPU_C SEGMENT CODE
?PR?_?OSTaskCreateHook?OS_CPU_C SEGMENT CODE
?PR?_?OSTaskDelHook?OS_CPU_C SEGMENT CODE
?PR?_?OSTaskSwHook?OS_CPU_C SEGMENT CODE
?PR?_?OSTaskStatHook?OS_CPU_C SEGMENT CODE
?PR?_?OSTimeTickHook?OS_CPU_C SEGMENT CODE
EXTRN CODE (_?OSIntExit)
EXTRN CODE (_?OSTimeTick)
EXTRN CODE (_?OSIntEnter)
EXTRN DATA (?C_IBP)
PUBLIC _?OSTimeTickHook
PUBLIC _?OSTaskStatHook
PUBLIC _?OSTaskSwHook
PUBLIC _?OSTaskDelHook
PUBLIC _?OSTaskCreateHook
PUBLIC OSTickISR
PUBLIC _?OSTaskStkInit
; /*
; *********************************************************************************************************
; * uC/OS-II
; * The Real-Time Kernel
; *
; * (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
; * All Rights Reserved
; *
; *
; * KeilC51 Specific code
; * SMALL MEMORY MODEL
; *
; * File : OS_CPU_C.C
; * By : Jean J. Labrosse
; * Refer to Code Written By : Yang Yi (http://www.zlgmcu.com/philips/philips-embedsys.asp)
; * Port to KeilC51 Small Mode By : Li Zhanglin (wzzlin@nankai.edu.cn)
; *********************************************************************************************************
; */
; #define OS_CPU_GLOBALS
; #include "..\uc_os_II\includes.h"
;
; /*
; *********************************************************************************************************
; * OSTaskStkInit
; *
; * Description: Init stack before task running.
; *
; * Arguments : task is a pointer to the task code
; *
; * pdata is a pointer to a user supplied data area that will be passed to the task
; * when the task first executes.
; *
; * ptos is a pointer to the top of stack. It is assumed that 'ptos' points to
; * a 'free' entry on the task stack. If OS_STK_GROWTH is set to 1 then
; * 'ptos' will contain the HIGHEST valid address of the stack. Similarly, if
; * OS_STK_GROWTH is set to 0, the 'ptos' will contains the LOWEST valid address
; * of the stack.
; *
; * opt specifies options that can be used to alter the behavior of OSTaskStkInit().
; * (see uCOS_II.H for OS_TASK_OPT_???).
; *
; * Returns : Always returns the bottom of stack.
; *
; * Note(s) : 1) stack stored as following format
;
; ; CONTENT START POSITION IN OSTCBStk
; ; ---------- ----------------------
; ; AR7
; ; AR6
; ; AR5
; ; AR4
; ; AR3
; ; AR2
; ; AR1
; ; AR0
; ; PSW
; ; DPL
; ; DPH
; ; B
; ; ACC
; ; HARDWARE STACK CONTENT(NOT INCLUDE REGISTERS) 2+SmltStkSize
; ; HARDWARE STACK SIZE(INCLUDE REGISTERS) 1+SmltStkSize
; ; SIMULATED STACK CONTENT 1
; ; ?C_IBP 0
;
; *********************************************************************************************************
; */
;
; void DT_XDATA *OSTaskStkInit (void (DT_CODE *task)(void DT_XDATA *pd), void DT_XDATA *ppdata, void DT_XDATA *ptos, INT16U opt) REENTRANT
RSEG ?PR?_?OSTaskStkInit?OS_CPU_C
_?OSTaskStkInit:
USING 0
; SOURCE LINE # 69
DEC ?C_IBP
DEC ?C_IBP
MOV R0,?C_IBP
MOV @R0,AR2
INC R0
MOV @R0,AR3
DEC ?C_IBP
DEC ?C_IBP
MOV R0,?C_IBP
MOV @R0,AR4
INC R0
MOV @R0,AR5
DEC ?C_IBP
DEC ?C_IBP
MOV R0,?C_IBP
MOV @R0,AR6
INC R0
MOV @R0,AR7
DEC ?C_IBP
DEC ?C_IBP
; {
; OS_STK DT_XDATA *stk;
;
; ppdata = ppdata;
; SOURCE LINE # 73
MOV A,?C_IBP
ADD A,#04H
MOV R0,A
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R7,A
MOV A,?C_IBP
ADD A,#04H
MOV R0,A
MOV @R0,AR6
INC R0
MOV @R0,AR7
; opt = opt;
; SOURCE LINE # 74
MOV A,?C_IBP
ADD A,#08H
MOV R0,A
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R7,A
MOV A,?C_IBP
ADD A,#08H
MOV R0,A
MOV @R0,AR6
INC R0
MOV @R0,AR7
;
; stk = (OS_STK DT_XDATA *)ptos; /* bottom of stack */
; SOURCE LINE # 76
MOV A,?C_IBP
ADD A,#06H
MOV R0,A
MOV A,@R0
MOV R4,A
INC R0
MOV A,@R0
MOV R5,A
MOV R0,?C_IBP
MOV @R0,AR4
INC R0
MOV @R0,AR5
; *stk++ = (0xFF + 1); /* C_IBP */
; SOURCE LINE # 77
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR6,@R0
JNZ ?C0008
INC @R0
?C0008:
DEC A
MOV DPL,A
MOV DPH,R6
CLR A
MOVX @DPTR,A
; /* simulated stack size == 0 */
; *stk++ = 2 + 13; /* tow bytes of return address and 13 byte registers */
; SOURCE LINE # 79
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR6,@R0
JNZ ?C0009
INC @R0
?C0009:
DEC A
MOV DPL,A
MOV DPH,R6
MOV A,#0FH
MOVX @DPTR,A
; *stk++ = (INT16U)task & 0xFF; /* low byte of return address */
; SOURCE LINE # 80
MOV R0,?C_IBP
INC R0
INC R0
INC R0
MOV A,@R0
MOV R7,A
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR2,@R0
JNZ ?C0010
INC @R0
?C0010:
DEC A
MOV DPL,A
MOV DPH,R2
MOV A,R7
MOVX @DPTR,A
; *stk++ = (INT16U)task >> 8; /* high byte of return address */
; SOURCE LINE # 81
MOV R0,?C_IBP
INC R0
INC R0
MOV A,@R0
MOV R6,A
MOV A,R6
MOV R7,A
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR2,@R0
JNZ ?C0011
INC @R0
?C0011:
DEC A
MOV DPL,A
MOV DPH,R2
MOV A,R7
MOVX @DPTR,A
; *stk++ = 0x0A; /* ACC */
; SOURCE LINE # 82
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR6,@R0
JNZ ?C0012
INC @R0
?C0012:
DEC A
MOV DPL,A
MOV DPH,R6
MOV A,#0AH
MOVX @DPTR,A
; *stk++ = 0x0B; /* B */
; SOURCE LINE # 83
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR6,@R0
JNZ ?C0013
INC @R0
?C0013:
DEC A
MOV DPL,A
MOV DPH,R6
MOV A,#0BH
MOVX @DPTR,A
; *stk++ = 0xD1; /* DPH */
; SOURCE LINE # 84
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR6,@R0
JNZ ?C0014
INC @R0
?C0014:
DEC A
MOV DPL,A
MOV DPH,R6
MOV A,#0D1H
MOVX @DPTR,A
; *stk++ = 0xD0; /* DPL */
; SOURCE LINE # 85
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR6,@R0
JNZ ?C0015
INC @R0
?C0015:
DEC A
MOV DPL,A
MOV DPH,R6
MOV A,#0D0H
MOVX @DPTR,A
; *stk++ = 0x00; /* PSW */
; SOURCE LINE # 86
MOV R0,?C_IBP
INC R0
INC @R0
MOV A,@R0
DEC R0
MOV AR6,@R0
JNZ ?C0016
INC @R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -