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

📄 os_cpu_a.src

📁 uCOS 嵌入式操作系统的改进版,增加了网络通讯.
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; .\os_cpu_a.SRC generated from: ..\keilc51\os_cpu_a.c
; COMPILER INVOKED BY:
;        C:\KEIL\C51\BIN\C51.EXE ..\keilc51\os_cpu_a.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\os_cpu_a.lst) SRC(.\os_cpu_a.SRC)

$NOMOD51

NAME	OS_CPU_A

TB81	BIT	0C0H.3
P0	DATA	080H
P1	DATA	090H
SM01	BIT	0C0H.7
P2	DATA	0A0H
SM11	BIT	0C0H.6
P3	DATA	0B0H
SM21	BIT	0C0H.5
T0	BIT	0B0H.4
AC	BIT	0D0H.6
T1	BIT	0B0H.5
T2	BIT	090H.0
EA	BIT	0A8H.7
DPH1	DATA	085H
IE	DATA	0A8H
FL	BIT	0D0H.1
DPL1	DATA	084H
TA	DATA	0C7H
EXF2	BIT	0C8H.6
RD	BIT	0B0H.7
REN1	BIT	0C0H.4
IP	DATA	0B8H
RI	BIT	098H.0
INT0	BIT	0B0H.2
CY	BIT	0D0H.7
TI	BIT	098H.1
INT1	BIT	0B0H.3
SADEN0	DATA	0B9H
INT2	BIT	090H.4
SADEN1	DATA	0BAH
RXD0	BIT	0B0H.0
INT3	BIT	090H.5
RXD1	BIT	090H.2
INT4	BIT	090H.6
SADDR0	DATA	0A9H
TXD0	BIT	0B0H.1
INT5	BIT	090H.7
SADDR1	DATA	0AAH
TXD1	BIT	090H.3
RCAP2H	DATA	0CBH
SP	DATA	081H
T2EX	BIT	090H.1
EPFI	BIT	0D8H.5
OV	BIT	0D0H.2
RCAP2L	DATA	0CAH
C_T2	BIT	0C8H.1
WR	BIT	0B0H.6
EWDI	BIT	0E8H.4
WDIF	BIT	0D8H.3
RCLK	BIT	0C8H.5
EXIF	DATA	091H
TCLK	BIT	0C8H.4
PCON	DATA	087H
PWDI	BIT	0F8H.4
TMOD	DATA	089H
TCON	DATA	088H
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
WTRF	BIT	0D8H.2
CP_RL2	BIT	0C8H.0
SMOD_1	BIT	0D8H.7
ACC	DATA	0E0H
ES0	BIT	0A8H.4
ET0	BIT	0A8H.1
ES1	BIT	0A8H.6
ET1	BIT	0A8H.3
TF0	BIT	088H.5
ET2	BIT	0A8H.5
TF1	BIT	088H.7
TF2	BIT	0C8H.7
RI1	BIT	0C0H.0
RB8	BIT	098H.2
TH0	DATA	08CH
EX0	BIT	0A8H.0
IT0	BIT	088H.0
TH1	DATA	08DH
TI1	BIT	0C0H.1
TB8	BIT	098H.3
EX1	BIT	0A8H.2
IT1	BIT	088H.2
TH2	DATA	0CDH
EX2	BIT	0E8H.0
P	BIT	0D0H.0
EX3	BIT	0E8H.1
SM0	BIT	098H.7
TL0	DATA	08AH
EX4	BIT	0E8H.2
SM1	BIT	098H.6
TL1	DATA	08BH
EX5	BIT	0E8H.3
SM2	BIT	098H.5
TL2	DATA	0CCH
PS0	BIT	0B8H.4
EIE	DATA	0E8H
PT0	BIT	0B8H.1
PS1	BIT	0B8H.6
PT1	BIT	0B8H.3
RS0	BIT	0D0H.3
PT2	BIT	0B8H.5
TR0	BIT	088H.4
RS1	BIT	0D0H.4
TR1	BIT	088H.6
TR2	BIT	0C8H.2
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
PX2	BIT	0F8H.0
PX3	BIT	0F8H.1
PX4	BIT	0F8H.2
DPH	DATA	083H
PX5	BIT	0F8H.3
EIP	DATA	0F8H
PFI	BIT	0D8H.4
DPL	DATA	082H
SBUF0	DATA	099H
SBUF1	DATA	0C1H
EXEN2	BIT	0C8H.3
SCON0	DATA	098H
REN	BIT	098H.4
SCON1	DATA	0C0H
STATUS	DATA	0C5H
T2MOD	DATA	0C9H
T2CON	DATA	0C8H
DPS	DATA	086H
CKCON	DATA	08EH
EWT	BIT	0D8H.1
POR	BIT	0D8H.6
F0	BIT	0D0H.5
PSW	DATA	0D0H
WDCON	DATA	0D8H
RWT	BIT	0D8H.0
RB81	BIT	0C0H.2
?PR?OSCtxSw?OS_CPU_A SEGMENT CODE 
?PR?OSTickISR?OS_CPU_A                   SEGMENT CODE 
?PR?OSIntCtxSw?OS_CPU_A                  SEGMENT CODE 
?PR?OSStartHighRdy?OS_CPU_A              SEGMENT CODE 
	EXTRN	XDATA (OSRunning)
	EXTRN	CODE (_?OSIntExit)
	EXTRN	XDATA (OSTCBCur)
	EXTRN	XDATA (OSIntNesting)
	EXTRN	XDATA (OSTCBHighRdy)
	EXTRN	CODE (_?OSTaskSwHook)
	EXTRN	CODE (_?OSTimeTick)
	EXTRN	XDATA (OSPrioCur)
	EXTRN	CODE (_?OSIntEnter)
	EXTRN	XDATA (OSPrioHighRdy)
	EXTRN	DATA (UserSysSP_Start)
	EXTRN	CODE (?C?PLDPTR)
	EXTRN	CODE (?C?CSTPTR)
	EXTRN	CODE (?C?CLDPTR)
	PUBLIC	OSStartHighRdy
	PUBLIC	OSIntCtxSw
	PUBLIC	OSTickISR
	PUBLIC	OSCtxSw
; //=======================================================================================================
; /*
; *                                               uC/OS-II
; *                                         The Real-Time Kernel
; *
; *                         (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
; *                                          All Rights Reserved
; *
; *
; *                                         80x51  Specific code
; *                                          LARGE MEMORY MODEL
; *
; *                                           Keil C51  V7.06a
; *
; * File         : OS_CPU_a.C
; * By           : Lin FengGe
; */
; //=======================================================================================================
; 
; //=======================================================================================================
; //#Lin@保护堆栈
; /*
; 用户仿真堆栈:
; 
;                     -------------
; 					| High Addr |    <--使用xdata空间
; 					-------------
; 					|           |
; 			 ---->  | Stick     |    <--保护堆栈内容
; 			|		|           |
; 			|		-------------
; 			|		| Count     |    <--用户仿真堆栈基地址,存放堆栈使用计数<-----
; 			|		-------------                                                 |
;             |                                                                     |
; */
; //==========|=====================================================================|======================
; /*          |                                                                     |
; 系统堆栈:   |                                                                     |
;             |       -------------                                                 |
;             |       | High Addr |    <--idata                                     |
; 			|		-------------                                      ----------------------
; 			|   	|           |    <--当前任务SP             ---->--| SP - UserSysSP_Start |
; 			|       |           |                                     |                      |
;              <----  | Stick     |    <--当前任务堆栈                   ----------------------
; 					|           |                                                 |
; 					|           |                                                 |
; 					-------------                                                 |
;                     |           |    <--UserSysSP_Start        ---->-------->-----
; 					|           |
; 					| System    |    <--系统使用
;                     |           |
; 					-------------
; 
; */
; //=======================================================================================================
; //#Lin@恢复堆栈
; /*
; 用户仿真堆栈:
; 
;                     -------------
; 					| High Addr |    <--使用xdata空间
; 					-------------
; 					|           |
; 			 <----  | Stick     |    <--保护堆栈内容
; 			|		|           |
; 			|		-------------
; 			|		| Count     |    <--用户仿真堆栈基地址,存放堆栈使用计数 ---->
; 			|		-------------                                                 |
;             |                                                                     |
; */
; //==========|=====================================================================|======================
; /*          |                                                                     |
; 系统堆栈:   |                                                                     |
;             |       -------------                                                 |
;             |       | High Addr |    <--idata                                     |
; 			|		-------------                                         -----------------
; 			|   	|           |    <--高优任务SP             <---<---- | UserSysSP_Start |
; 			|       |           |                                        |  + Count        |
;              ---->  | Stick     |    <--高优任务堆栈                      -----------------
; 					|           |                                                 |
; 					|           |                                                 |
; 					-------------                                                 |
;                     |           |    <--UserSysSP_Start        ---->-------->-----
; 					|           |
; 					| System    |    <--系统使用
;                     |           |
; 					-------------
; 
; */
; //=======================================================================================================
; 
; 
; 
; //#define  OS_CPU_GLOBALS
; #include "includes.h"
; 		
; //=======================================================================================================
; //=======================================================================================================
; #pragma	asm
  
  //#Lin@仿真keil c51中断生成入栈代码,参看.src文件
  
  USERPUSHALL	MACRO
  
  	PUSH 	ACC
  	PUSH 	B
  	PUSH 	DPH
  	PUSH 	DPL
  	PUSH 	PSW
  	MOV  	PSW,#00H
  	PUSH 	AR0
  	PUSH 	AR1
  	PUSH 	AR2
  	PUSH 	AR3
  	PUSH 	AR4
  	PUSH 	AR5
  	PUSH 	AR6
  	PUSH 	AR7
  
  ENDM
; #pragma	endasm
; 
; #pragma	asm
  
  //#Lin@仿真keil c51中断生成出栈代码,参看.src文件
  
  USERPOPALL	MACRO
  
  	POP  	AR7
  	POP  	AR6
  	POP  	AR5
  	POP  	AR4
  	POP  	AR3
  	POP  	AR2
  	POP  	AR1
  	POP  	AR0
  	POP  	PSW
  	POP  	DPL
  	POP  	DPH
  	POP  	B
  	POP  	ACC
  
  ENDM
; #pragma endasm
; 	
; //=======================================================================================================
; //=======================================================================================================
; //=======================================================================================================
; 
; //#Lin@任务级切换
; //#Lin@其他子程序参看此处注释
; 
; void          OSCtxSw(void) //using 3

	RSEG  ?PR?OSCtxSw?OS_CPU_A
OSCtxSw:
	USING	0
			; SOURCE LINE # 153
; {
			; SOURCE LINE # 154
; 
;     OS_STK	idata	*UserSysStkSP;			//#Lin@系统堆栈指针
;     OS_STK	*UserUsrStkSP;					//#Lin@用户仿真堆栈指针
; 	INT8U	UserStkCount;					//#Lin@堆栈使用计数
; 
; 	
; #pragma	asm
; 
	  
; 	USERPUSHALL
	  USERPUSHALL
; 	
	  
; #pragma	endasm
; 	
; //	OSTCBCur ->OSTCBStkPtr = UsrStkSP;
; //#Lin@指针操作,用户仿真堆栈填入内容
; 
; 	UserSysStkSP = UserSysSP_Start;					//#Lin@获取系统堆栈基地址
			; SOURCE LINE # 170
	MOV  	R7,UserSysSP_Start
;---- Variable 'UserSysStkSP?040' assigned to Register 'R7' ----
; 	UserStkCount = SP - UserSysSP_Start;			//#Lin@获取堆栈使用范围
			; SOURCE LINE # 171
	CLR  	C
	MOV  	A,SP
	SUBB 	A,UserSysSP_Start
	MOV  	R6,A
;---- Variable 'UserStkCount?042' assigned to Register 'R6' ----
; 	UserUsrStkSP = OSTCBCur ->OSTCBStkPtr;			//#Lin@获取用户仿真堆栈基地址
			; SOURCE LINE # 172
	MOV  	DPTR,#OSTCBCur
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	?C?PLDPTR
;---- Variable 'UserUsrStkSP?041' assigned to Register 'R1/R2/R3' ----
; 	
; //	SP = UserSysSP_Start;//?
; 	
; //	UserUsrStkSP += UserStkCount;
; 	*UserUsrStkSP = UserStkCount;					//#Lin@存储计数
			; SOURCE LINE # 177
	MOV  	A,R6
	LCALL	?C?CSTPTR
?C0003:
; 	
; //	OSTCBCur ->OSTCBStkPtr = UserUsrStkSP;
; //#Lin@数据传输	
; 
; 	do
; 		{
			; SOURCE LINE # 183
; 		UserUsrStkSP ++;
			; SOURCE LINE # 184
	MOV  	A,#01H
	ADD  	A,R1
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
; 		UserSysStkSP ++;
			; SOURCE LINE # 185
	INC  	R7
; 		*UserUsrStkSP = *UserSysStkSP;
			; SOURCE LINE # 186
	MOV  	R0,AR7
	MOV  	A,@R0
	LCALL	?C?CSTPTR
; 		UserStkCount --;
			; SOURCE LINE # 187
	DJNZ 	R6,?C0003
; 		}
			; SOURCE LINE # 188
; 	while(UserStkCount != 0);
			; SOURCE LINE # 189
; 
; 		
; 	OSTaskSwHook();
			; SOURCE LINE # 192
	LCALL	_?OSTaskSwHook
; 	
; 	OSTCBCur = OSTCBHighRdy;
			; SOURCE LINE # 194
	MOV  	DPTR,#OSTCBHighRdy
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#OSTCBCur
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
; 	OSPrioCur = OSPrioHighRdy;
			; SOURCE LINE # 195
	MOV  	DPTR,#OSPrioHighRdy
	MOVX 	A,@DPTR
	MOV  	DPTR,#OSPrioCur
	MOVX 	@DPTR,A
; 	
; //	UsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;
; //#Lin@恢复仿真堆栈内容到系统堆栈
; 
; 	UserStkCount = *OSTCBHighRdy ->OSTCBStkPtr;		//#Lin@获取堆栈使用长度
			; SOURCE LINE # 200
	MOV  	DPTR,#OSTCBHighRdy
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	?C?PLDPTR
	LCALL	?C?CLDPTR
	MOV  	R6,A
; 	UserSysStkSP = UserSysSP_Start;					//#Lin@获取系统堆栈基地址
			; SOURCE LINE # 201
	MOV  	R7,UserSysSP_Start
; 	UserUsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;		//#Lin@获取用户仿真堆栈基地址
			; SOURCE LINE # 202
; 	

⌨️ 快捷键说明

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