⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_cpu_c.src

📁 UCOSii for c8051f020
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; .\obj\OS_CPU_C.SRC generated from: uCosii\OS_CPU_C.C
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE uCosii\OS_CPU_C.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\OS_CPU_C.lst) SRC(.\obj\OS_CPU_C.SRC)

$NOMOD51

NAME	OS_CPU_C

CCF2	BIT	0D8H.2
TB80	BIT	098H.3
SPI0CKR	DATA	09DH
CCF3	BIT	0D8H.3
P0	DATA	080H
SPIEN	BIT	0F8H.0
CCF4	BIT	0D8H.4
SM00	BIT	098H.7
P1	DATA	090H
AA	BIT	0C0H.2
SM10	BIT	098H.6
WDTCN	DATA	0FFH
P2	DATA	0A0H
SM20	BIT	098H.5
ADC0CF	DATA	0BCH
P3	DATA	0B0H
AC	BIT	0D0H.6
ADC1CF	DATA	0ABH
P4	DATA	084H
EIE1	DATA	0E6H
P5	DATA	085H
EA	BIT	0A8H.7
EIE2	DATA	0E7H
P6	DATA	086H
P7	DATA	096H
PSCTL	DATA	08FH
MSTEN	BIT	0F8H.1
CF	BIT	0D8H.7
ADC0CN	DATA	0E8H
DAC0CN	DATA	0D4H
DAC1CN	DATA	0D7H
ADC1CN	DATA	0AAH
P0MDOUT	DATA	0A4H
P1MDOUT	DATA	0A5H
IE	DATA	0A8H
P2MDOUT	DATA	0A6H
P3MDOUT	DATA	0A7H
TMR3RLH	DATA	093H
EIP1	DATA	0F6H
EIP2	DATA	0F7H
PCA0CPH0	DATA	0FAH
PCA0CPH1	DATA	0FBH
P3IF	DATA	0ADH
TMR3RLL	DATA	092H
PCA0CPH2	DATA	0FCH
CR	BIT	0D8H.6
PCA0CPH3	DATA	0FDH
EXF2	BIT	0C8H.6
REN0	BIT	098H.4
PCA0CPH4	DATA	0FEH
PCA0CPL0	DATA	0EAH
EMI0CF	DATA	0A3H
PCA0CPL1	DATA	0EBH
PCA0CPM0	DATA	0DAH
PCA0MD	DATA	0D9H
PCA0CN	DATA	0D8H
PCA0CPL2	DATA	0ECH
PCA0CPM1	DATA	0DBH
PCA0CPL3	DATA	0EDH
PCA0CPM2	DATA	0DCH
IP	DATA	0B8H
PCA0CPL4	DATA	0EEH
PCA0CPM3	DATA	0DDH
PCA0CPM4	DATA	0DEH
TXBSY	BIT	0F8H.3
CY	BIT	0D0H.7
SI	BIT	0C0H.3
XBR0	DATA	0E1H
SADEN0	DATA	0B9H
XBR1	DATA	0E2H
EMI0CN	DATA	0AFH
SADEN1	DATA	0AEH
XBR2	DATA	0E3H
REF0CN	DATA	0D1H
SADDR0	DATA	0A9H
SADDR1	DATA	0F3H
AMX0CF	DATA	0BAH
AD0INT	BIT	0E8H.5
RCAP2H	DATA	0CBH
PS	BIT	0B8H.4
SP	DATA	081H
RCAP4H	DATA	0E5H
EMI0TC	DATA	0A1H
OV	BIT	0D0H.2
SMB0CN	DATA	0C0H
RCAP2L	DATA	0CAH
MODF	BIT	0F8H.5
RCAP4L	DATA	0E4H
SMB0CR	DATA	0CFH
CPT0CN	DATA	09EH
P1MDIN	DATA	0BDH
CPT1CN	DATA	09FH
SPI0CN	DATA	0F8H
PCON	DATA	087H
SPIF	BIT	0F8H.7
P74OUT	DATA	0B5H
TMOD	DATA	089H
TCON	DATA	088H
WCOL	BIT	0F8H.6
AMX0SL	DATA	0BBH
AMX1SL	DATA	0ACH
TMR3CN	DATA	091H
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
DAC0H	DATA	0D3H
ADC0H	DATA	0BFH
OSCICN	DATA	0B2H
DAC1H	DATA	0D6H
SMBFTE	BIT	0C0H.1
BUSY	BIT	0C0H.7
DAC0L	DATA	0D2H
ADC0L	DATA	0BEH
DAC1L	DATA	0D5H
ACC	DATA	0E0H
ES0	BIT	0A8H.4
AD0EN	BIT	0E8H.7
CT2	BIT	0C8H.1
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
ET2	BIT	0A8H.5
RI0	BIT	098H.0
TF1	BIT	088H.7
TF2	BIT	0C8H.7
SMBTOE	BIT	0C0H.0
TH0	DATA	08CH
EX0	BIT	0A8H.0
TI0	BIT	098H.1
IT0	BIT	088H.0
PCA0H	DATA	0F9H
TH1	DATA	08DH
EX1	BIT	0A8H.2
IT1	BIT	088H.2
TH2	DATA	0CDH
P	BIT	0D0H.0
TH4	DATA	0F5H
OSCXCN	DATA	0B1H
TL0	DATA	08AH
PCA0L	DATA	0E9H
TL1	DATA	08BH
TL2	DATA	0CCH
PT0	BIT	0B8H.1
TL4	DATA	0F4H
RS0	BIT	0D0H.3
PT1	BIT	0B8H.3
RS1	BIT	0D0H.4
PT2	BIT	0B8H.5
TR0	BIT	088H.4
AD0TM	BIT	0E8H.6
TR1	BIT	088H.6
TR2	BIT	0C8H.2
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
SLVSEL	BIT	0F8H.2
DPH	DATA	083H
RCLK0	BIT	0C8H.5
ADC0GTH	DATA	0C5H
TCLK0	BIT	0C8H.4
DPL	DATA	082H
ADC0GTL	DATA	0C4H
SBUF0	DATA	099H
SBUF1	DATA	0F2H
ADC0LTH	DATA	0C7H
EXEN2	BIT	0C8H.3
RSTSRC	DATA	0EFH
FLACL	DATA	0B7H
CPRL2	BIT	0C8H.0
SCON0	DATA	098H
SCON1	DATA	0F1H
ADC0LTL	DATA	0C6H
T2CON	DATA	0C8H
STA	BIT	0C0H.5
T4CON	DATA	0C9H
SMB0ADR	DATA	0C3H
SMB0DAT	DATA	0C2H
SPI0CFG	DATA	09AH
TMR3H	DATA	095H
CKCON	DATA	08EH
RXOVRN	BIT	0F8H.4
TMR3L	DATA	094H
AD0LJST	BIT	0E8H.0
F0	BIT	0D0H.5
FLSCL	DATA	0B6H
AD0CM0	BIT	0E8H.2
F1	BIT	0D0H.1
STO	BIT	0C0H.4
ENSMB	BIT	0C0H.6
AD0CM1	BIT	0E8H.3
SPI0DAT	DATA	09BH
AD0WINT	BIT	0E8H.1
ADC1	DATA	09CH
AD0BUSY	BIT	0E8H.4
PSW	DATA	0D0H
CCF0	BIT	0D8H.0
RB80	BIT	098H.2
SMB0STA	DATA	0C1H
CCF1	BIT	0D8H.1
?PR?_?OSTaskStkInit?OS_CPU_C             SEGMENT CODE 
?PR?_?OSInitHookBegin?OS_CPU_C           SEGMENT CODE 
?PR?_?OSInitHookEnd?OS_CPU_C             SEGMENT CODE 
?PR?_?OSTaskCreateHook?OS_CPU_C          SEGMENT CODE 
?PR?_?OSTaskSwHook?OS_CPU_C              SEGMENT CODE 
?PR?_?OSTCBInitHook?OS_CPU_C             SEGMENT CODE 
?PR?_?OSTimeTickHook?OS_CPU_C            SEGMENT CODE 
?PR?_?OSTaskIdleHook?OS_CPU_C            SEGMENT CODE 
?PR?UserTickTimer?OS_CPU_C               SEGMENT CODE 
?PR?OSTickISR?OS_CPU_C                   SEGMENT CODE 
	EXTRN	CODE (_?OSIntExit)
	EXTRN	CODE (_?OSTimeTick)
	EXTRN	CODE (_?OSIntEnter)
	EXTRN	CODE (?C?ADDXBP)
	EXTRN	CODE (?C?XBPOFF)
	EXTRN	DATA (?C_XBP)
	EXTRN	CODE (?C?ILDIX)
	EXTRN	CODE (?C?CSTPTR)
	PUBLIC	OSTickISR
	PUBLIC	UserTickTimer
	PUBLIC	_?OSTaskIdleHook
	PUBLIC	_?OSTimeTickHook
	PUBLIC	_?OSTCBInitHook
	PUBLIC	_?OSTaskSwHook
	PUBLIC	_?OSTaskCreateHook
	PUBLIC	_?OSInitHookEnd
	PUBLIC	_?OSInitHookBegin
	PUBLIC	_?OSTaskStkInit
; /*
; *********************************************************************************************************
; *                                               uC/OS-II
; *                                               实时内核
; *
; *                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
; *                                               版权所有
; *
; *                                            MCU-51 专用代码
; *                                           KEIL C51大模式编译
; *
; * 文件名 : OS_CPU_C.C
; * 作者   : Jean J. Labrosse
; * 改编   : 杨屹 gdtyy@ri.gdt.com.cn 巨龙公司系统集成开发部 2002.09.27
; * 改编   : 钟文青,升级到与ucOS-II 2.51的代码,2003.5
; *********************************************************************************************************
; */
; 
; #define  OS_CPU_GLOBALS
; #include "source\includes.h"
; 
; /*
; *********************************************************************************************************
; *                                        初始化任务堆栈
; *
; * 描述       : 这个函数被OSTaskCreate()或OSTaskCreateExt()调用,以便初始化新创建任务的堆栈结构。本函数
; *              与处理器高度相关。
; *
; * 参数       : task          指向任务代码的指针
; *
; *              pdata         当任务第一次执行时将要传入任务的用户数据结构指针
; *
; *              ptos          栈顶指针。ptos指针被默认为用户堆栈入口指针。如果OS_STK_GROWTH被置1,那么,
; *                            ptos指向用户堆栈的最高有效地址。同样地,如果OS_STK_GROWTH清0,ptos将指向
; *                            用户堆栈的最低有效地址。
; *
; *              opt           指定可以改变OSTaskStkInit()行为的选项。(见uCOS_II.H for OS_TASK_OPT_???)。
; *
; * 返回值     : 我修改了原来的程序,使函数总是返回用户堆栈空间的最低有效地址。这样修改提高了TCB换入换出
; *              的效率。
; *
; * 注意       : 任务堆栈结构:
; *
; *                                    ---------- -
; *                 用户栈最高地址---->|        | |
; *                                    ---------- |
; *                                    |   ...  | 仿真堆栈空间
; *----------                          ---------- | 每任务一个
; *|OSTCBCur|               ?C_XBP---->|        | | KEIL自动处理
; *----------                          ---------- -
; *    |                               |空闲间隔|
; *    |     -----------------------   ----------                           ----------
; *    \---->|OSTCBCur->OSTCBStkPtr|   |?C_XBP低|                    SP---->|        |
; *          -----------------------   ----------                           ----------
; *                     |              |?C_XBP高|                           |        |
; *                     |              ---------- -                         ----------
; *                     |              |        | |                         |   .    |
; *                     |              ---------- |                         |   .    |
; *                     |              |        | |                         |   .    |
; *                     |              ---------- |                         ----------
; *                     |              |   .    |长度                       |        | +1
; *                     |              |   .    | |                         ----------
; *                     |              |   .    | |             OSStack---->|        | 0
; *                     |              ---------- |                         ----------
; *                     |              |        | |          OSStkStart---->| 不关心 | -1  低地址
; *                     |              ---------- -                         ----------
; *                     \------------->|  长度  | 低地址                   系统硬件堆栈
; *                                    ----------
; *                                     用户堆栈                       长度=SP-OSStkStart
; *********************************************************************************************************
; */
; 
; OS_STK *OSTaskStkInit (void (*task)(void *pd) reentrant, void *ppdata, OS_STK *ptos, INT16U opt) reentrant

	RSEG  ?PR?_?OSTaskStkInit?OS_CPU_C
_?OSTaskStkInit:
	USING	0
			; SOURCE LINE # 73
	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
	MOV  	DPTR,#0FFFDH
	LCALL	?C?ADDXBP
; {    
;     OS_STK *stk;
; 
;     ppdata = ppdata;
			; SOURCE LINE # 77
	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
	MOV  	DPTR,#06H
	LCALL	?C?XBPOFF
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
;     opt    = opt;                               //opt没被用到,保留此语句防止告警产生    
			; SOURCE LINE # 78
	MOV  	DPTR,#0CH
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#0CH
	LCALL	?C?XBPOFF
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;     stk    = ptos;                              //用户堆栈最低有效地址
			; SOURCE LINE # 79
	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++ = 15;                                //用户堆栈长度
			; SOURCE LINE # 80
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	MOV  	A,#0FH
	LCALL	?C?CSTPTR
;     *stk++ = (INT16U)task & 0xFF;               //任务地址低8位
			; SOURCE LINE # 81
	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
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	MOV  	A,R7
	LCALL	?C?CSTPTR
;     *stk++ = (INT16U)task >> 8;                 //任务地址高8位    
			; SOURCE LINE # 82
	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
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	MOV  	A,R7
	LCALL	?C?CSTPTR
;     *stk++ = 0x0A;                              //ACC
			; SOURCE LINE # 83
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	MOV  	A,#0AH
	LCALL	?C?CSTPTR
;     *stk++ = 0x0B;                              //B
			; SOURCE LINE # 84
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	MOV  	A,#0BH
	LCALL	?C?CSTPTR
;     *stk++ = 0x00;                              //DPH
			; SOURCE LINE # 85
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	CLR  	A
	LCALL	?C?CSTPTR
;     *stk++ = 0x00;                              //DPL
			; SOURCE LINE # 86
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	CLR  	A
	LCALL	?C?CSTPTR
;     *stk++ = 0x00;                              //PSW
			; SOURCE LINE # 87
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	CLR  	A
	LCALL	?C?CSTPTR
;     *stk++ = 0x00;                              //R0
			; SOURCE LINE # 88
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	CLR  	A
	LCALL	?C?CSTPTR
;     
; 	//R3、R2、R1用于传递任务参数ppdata,其中R3代表存储器类型,R2为高字节偏移,R1为低字节位移。
; 	//通过分析KEIL汇编,了解到任务的void *ppdata参数恰好是用R3、R2、R1传递,不是通过虚拟堆栈。
;     *stk++ = (INT16U)ppdata & 0xFF;             //R1
			; SOURCE LINE # 92
	MOV  	DPTR,#06H
	LCALL	?C?XBPOFF
	INC  	DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -