?? os_cpu_a.lst
字號:
A51 MACRO ASSEMBLER OS_CPU_A 02/26/2007 16:50:13 PAGE 1
MACRO ASSEMBLER A51 V8.00b
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 ;* 實時內(nèi)核
5 ;*
6 ;* 版權(quán)所有
7 ;*
8 ;* 文件名 : OS_CPU_A.ASM
9 ;* 作者 : Jean J. Labrosse
10 ;* 改編 : 陳是知 北京中軟 2005。1。27
11 ;******************************************************************************************
***************
12 ;*/
13
14 ;偽指令詳細(xì)用法請查A51.PDF文件
15 ;程序結(jié)構(gòu)詳見《uC/OS-II》193-198頁
16
17 ;不用此語句!!! $CASE ;標(biāo)號和變量名區(qū)分大小寫
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 02/26/2007 16:50:13 PAGE 2
57 ;對外聲明4個不可重入函數(shù)
58 PUBLIC OSStartHighRdy
59 PUBLIC OSCtxSw
60 PUBLIC OSIntCtxSw
61 PUBLIC OSTickISR
62
63 ;PUBLIC SerialISR
64
65 ;分配堆棧空間。只關(guān)心大小,堆棧起點(diǎn)由keil決定,通過標(biāo)號可以獲得keil分配的SP起點(diǎn)。
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,任務(wù)切換時由相應(yīng)程序調(diào)整
96 ENDM
97
98 POPALL MACRO
99 ;POP ACC ;不必保存SP,任務(wù)切換時由相應(yīng)程序調(diào)整
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 02/26/2007 16:50:13 PAGE 3
123 ;子程序
124 ;-------------------------------------------------------------------------
---- 125 RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000 126 OSStartHighRdy:
127 USING 0 ;上電后51自動關(guān)中斷,此處不必用CLR EA指令,因為到此處還未開中斷,本程序
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -