?? os_cpu_a.lst
字號:
A51 MACRO ASSEMBLER OS_CPU_A 04/23/2007 15:47:28 PAGE 1
MACRO ASSEMBLER A51 V8.00
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 ;* (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
7 ;* 版權所有
8 ;*
9 ;* MCU-51 專用代碼
10 ;* KEIL C51大模式編譯
11 ;*
12 ;* 文件名 : OS_CPU_A.ASM
13 ;* 作者 : Jean J. Labrosse
14 ;* 改編 : 楊屹 gdtyy@ri.gdt.com.cn 巨龍公司系統集成開發部 2002.09.27
15 ;******************************************************************************************
***************
16 ;*/
17
18 ;偽指令詳細用法請查A51.PDF文件
19 ;程序結構詳見《uC/OS-II》193-198頁
20
21 ;不用此語句!??! $CASE ;標號和變量名區分大小寫
22
23 $nomod51
00AF 24 EA BIT 0A8H.7
0081 25 SP DATA 081H
00F0 26 B DATA 0F0H
00E0 27 ACC DATA 0E0H
0083 28 DPH DATA 083H
0082 29 DPL DATA 082H
00D0 30 PSW DATA 0D0H
008C 31 TR0 BIT 088H.4
008C 32 TH0 DATA 08CH
008A 33 TL0 DATA 08AH
0084 34 SFRPAGE DATA 084H
35 NAME OS_CPU_A ;模塊名
36
37 ;定義重定位段
38 ?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE
39 ?PR?OSCtxSw?OS_CPU_A SEGMENT CODE
40 ?PR?OSIntCtxSw?OS_CPU_A SEGMENT CODE
41 ?PR?OSTickISR?OS_CPU_A SEGMENT CODE
42
43 ?PR?_?serial?OS_CPU_A SEGMENT CODE
44
45 ;聲明引用全局變量和外部子程序
46 EXTRN DATA (?C_XBP) ;仿真堆棧指針用于重入局部變量保存
47 EXTRN XDATA (inTxBuf)
48 EXTRN IDATA (OSTCBCur)
49 EXTRN IDATA (OSTCBHighRdy)
50 EXTRN IDATA (OSRunning)
51 EXTRN IDATA (OSPrioCur)
52 EXTRN IDATA (OSPrioHighRdy)
53
54 EXTRN CODE (_?OSTaskSwHook)
55 EXTRN CODE (_?serial)
56 EXTRN CODE (_?OSIntEnter)
A51 MACRO ASSEMBLER OS_CPU_A 04/23/2007 15:47:28 PAGE 2
57 EXTRN CODE (_?OSIntExit)
58 EXTRN CODE (_?OSTimeTick)
59
60 ;對外聲明4個不可重入函數
61 PUBLIC OSStartHighRdy
62 PUBLIC OSCtxSw
63 PUBLIC OSIntCtxSw
64 PUBLIC OSTickISR
65
66 ;PUBLIC SerialISR
67
68 ;分配堆??臻g。只關心大小,堆棧起點由keil決定,通過標號可以獲得keil分配的SP起點。
69 ?STACK SEGMENT IDATA
---- 70 RSEG ?STACK
0000 71 OSStack:
0000 72 DS 40H
FFFF 73 OSStkStart IDATA OSStack-1
74
75 ;定義壓棧出棧宏
76 PUSHALL MACRO
77 PUSH PSW
78 PUSH ACC
79 PUSH B
80 PUSH DPL
81 PUSH DPH
82 MOV A,R0 ;R0-R7入棧
83 PUSH ACC
84 MOV A,R1
85 PUSH ACC
86 MOV A,R2
87 PUSH ACC
88 MOV A,R3
89 PUSH ACC
90 MOV A,R4
91 PUSH ACC
92 MOV A,R5
93 PUSH ACC
94 MOV A,R6
95 PUSH ACC
96 MOV A,R7
97 PUSH ACC
98 MOV A,SFRPAGE ; 將SFRPAGE入棧
99 PUSH ACC
100 ;PUSH SP ;不必保存SP,任務切換時由相應程序調整
101 ENDM
102
103 POPALL MACRO
104 ;POP ACC ;不必保存SP,任務切換時由相應程序調整
105 POP ACC
106 MOV SFRPAGE,A
107 POP ACC ;R0-R7出棧
108 MOV R7,A
109 POP ACC
110 MOV R6,A
111 POP ACC
112 MOV R5,A
113 POP ACC
114 MOV R4,A
115 POP ACC
116 MOV R3,A
117 POP ACC
118 MOV R2,A
119 POP ACC
120 MOV R1,A
121 POP ACC
122 MOV R0,A
A51 MACRO ASSEMBLER OS_CPU_A 04/23/2007 15:47:28 PAGE 3
123 POP DPH
124 POP DPL
125 POP B
126 POP ACC
127 POP PSW
128 ENDM
129
130 ;子程序
131 ;-------------------------------------------------------------------------
132
133
134
135
136
137
138
139
140
---- 141 RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000 142 OSStartHighRdy:
143 USING 0 ;上電后51自動關中斷,此處不必用CLR EA指令,因為到此處還未開中斷,本程序
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -