📄 os_cpu_a.lst
字号:
A51 MACRO ASSEMBLER OS_CPU_A 09/04/2007 10:27:39 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN OS_CPU_A.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE OS_CPU_A.ASM SET(LARGE) DEBUG EP
LOC OBJ LINE SOURCE
1 ;/*
2 ;******************************************************************************************
***************
3 ;* uC/OS-II
4 ;* 实时内核
5 ;*
6 ;* 版权所有
7 ;*
8 ;* 文件名 : OS_CPU_A.ASM
9 ;* 作者 : Jean J. Labrosse
10 ;* 改编 : 陈是知 北京中软 2005。1。27
11 ;******************************************************************************************
***************
12 ;*/
13
14 ;伪指令详细用法请查A51.PDF文件
15 ;程序结构详见《uC/OS-II》193-198页
16
17 ;不用此语句!!! $CASE ;标号和变量名区分大小写
18
19 $nomod51
00AF 20 EA BIT 0A8H.7
0081 21 SP DATA 081H
00F0 22 B DATA 0F0H
00E0 23 ACC DATA 0E0H
0083 24 DPH DATA 083H
0082 25 DPL DATA 082H
00D0 26 PSW DATA 0D0H
008C 27 TR0 BIT 088H.4
008C 28 TH0 DATA 08CH
008A 29 TL0 DATA 08AH
00D8 30 P4 DATA 0D8H
31
32 NAME OS_CPU_A ;模块名
33
34 ;定义重定位段
35 ?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE
36 ?PR?OSCtxSw?OS_CPU_A SEGMENT CODE
37 ?PR?OSIntCtxSw?OS_CPU_A SEGMENT CODE
38 ?PR?OSTickISR?OS_CPU_A SEGMENT CODE
39
40 ?PR?_?serial?OS_CPU_A SEGMENT CODE
41
42 ;声明引用全局变量和外部子程序
43 EXTRN DATA (?C_XBP) ;仿真堆栈指针用于重入局部变量保存
44
45 EXTRN IDATA (OSTCBCur)
46 EXTRN IDATA (OSTCBHighRdy)
47 EXTRN IDATA (OSRunning)
48 EXTRN IDATA (OSPrioCur)
49 EXTRN IDATA (OSPrioHighRdy)
50
51 EXTRN CODE (_?OSTaskSwHook)
52 EXTRN CODE (_?serial)
53 EXTRN CODE (_?OSIntEnter)
54 EXTRN CODE (_?OSIntExit)
55 EXTRN CODE (_?OSTimeTick)
56
A51 MACRO ASSEMBLER OS_CPU_A 09/04/2007 10:27:39 PAGE 2
57 ;对外声明4个不可重入函数
58 PUBLIC OSStartHighRdy
59 PUBLIC OSCtxSw
60 PUBLIC OSIntCtxSw
61 PUBLIC OSTickISR
62
63 ;PUBLIC SerialISR
64
65 ;分配堆栈空间。只关心大小,堆栈起点由keil决定,通过标号可以获得keil分配的SP起点。
66 ?STACK SEGMENT IDATA
---- 67 RSEG ?STACK
0000 68 OSStack:
0000 69 DS 40H
FFFF 70 OSStkStart IDATA OSStack-1
71
72 ;定义压栈出栈宏
73 PUSHALL MACRO
74 PUSH PSW
75 PUSH ACC
76 PUSH B
77 PUSH DPL
78 PUSH DPH
79 MOV A,R0 ;R0-R7入栈
80 PUSH ACC
81 MOV A,R1
82 PUSH ACC
83 MOV A,R2
84 PUSH ACC
85 MOV A,R3
86 PUSH ACC
87 MOV A,R4
88 PUSH ACC
89 MOV A,R5
90 PUSH ACC
91 MOV A,R6
92 PUSH ACC
93 MOV A,R7
94 PUSH ACC
95 ;PUSH SP ;不必保存SP,任务切换时由相应程序调整
96 ENDM
97
98 POPALL MACRO
99 ;POP ACC ;不必保存SP,任务切换时由相应程序调整
100 POP ACC ;R0-R7出栈
101 MOV R7,A
102 POP ACC
103 MOV R6,A
104 POP ACC
105 MOV R5,A
106 POP ACC
107 MOV R4,A
108 POP ACC
109 MOV R3,A
110 POP ACC
111 MOV R2,A
112 POP ACC
113 MOV R1,A
114 POP ACC
115 MOV R0,A
116 POP DPH
117 POP DPL
118 POP B
119 POP ACC
120 POP PSW
121 ENDM
122
A51 MACRO ASSEMBLER OS_CPU_A 09/04/2007 10:27:39 PAGE 3
123 ;子程序
124 ;-------------------------------------------------------------------------
---- 125 RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000 126 OSStartHighRdy:
127 USING 0 ;上电后51自动关中断,此处不必用CLR EA指令,因为到此处还未开中断,本程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -