?? os_cpu_a.lst
字號:
A51 MACRO ASSEMBLER OS_CPU_A 06/12/2002 20:49:07 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN OS_CPU_A.OBJ
ASSEMBLER INVOKED BY: e:\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 ;* 8051處理器代碼
10 ;* KEIL C51大模式編譯
11 ;*
12 ;* 文件名 : OS_CPU_A.ASM
13 ;* 作者 : Jean J. Labrosse
14 ;******************************************************************************************
***************
15 ;*/
16
17 $nomod51
00AF 18 EA BIT 0A8H.7
0081 19 SP DATA 081H
00F0 20 B DATA 0F0H
00E0 21 ACC DATA 0E0H
0083 22 DPH DATA 083H
0082 23 DPL DATA 082H
00D0 24 PSW DATA 0D0H
008C 25 TR0 BIT 088H.4
008C 26 TH0 DATA 08CH
008A 27 TL0 DATA 08AH
28
29 NAME OS_CPU_A ;模塊名
30
31 ;定義重定位段
32 ?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE
33 ?PR?OSCtxSw?OS_CPU_A SEGMENT CODE
34 ?PR?OSIntCtxSw?OS_CPU_A SEGMENT CODE
35 ?PR?OSTickISR?OS_CPU_A SEGMENT CODE
36
37 ?PR?_?serial?OS_CPU_A SEGMENT CODE
38
39 ;聲明引用全局變量和外部子程序
40 EXTRN DATA (?C_XBP) ;仿真堆棧指針用于重入局部變量保存
41
42 EXTRN IDATA (OSTCBCur)
43 EXTRN IDATA (OSTCBHighRdy)
44 EXTRN IDATA (OSRunning)
45 EXTRN IDATA (OSPrioCur)
46 EXTRN IDATA (OSPrioHighRdy)
47
48 EXTRN CODE (_?OSTaskSwHook)
49 EXTRN CODE (_?serial)
50 EXTRN CODE (_?OSIntEnter)
51 EXTRN CODE (_?OSIntExit)
52 EXTRN CODE (_?OSTimeTick)
53
54 ;對外聲明4個不可重入函數
55 PUBLIC OSStartHighRdy
56 PUBLIC OSCtxSw
A51 MACRO ASSEMBLER OS_CPU_A 06/12/2002 20:49:07 PAGE 2
57 PUBLIC OSIntCtxSw
58 PUBLIC OSTickISR
59
60 ;分配堆棧空間。只關心大小,堆棧起點由keil決定,通過標號可以獲得keil分配的SP起點。
61 ;由于C8051F的堆棧指針只有8位,只能指向內部數據區的256個字節,
62 ;因此,當前運行的任務的堆棧在IDATA區,堆棧大小為40H(64字節),堆棧起點由KEIL決定
63 ?STACK SEGMENT IDATA
---- 64 RSEG ?STACK
0000 65 OSStack:
0000 66 DS 40H
FFFF 67 OSStkStart IDATA OSStack-1
68
69 ;定義壓棧出棧宏
70 PUSHALL MACRO
71 PUSH PSW
72 PUSH ACC
73 PUSH B
74 PUSH DPL
75 PUSH DPH
76 MOV A,R0 ;R0-R7入棧
77 PUSH ACC
78 MOV A,R1
79 PUSH ACC
80 MOV A,R2
81 PUSH ACC
82 MOV A,R3
83 PUSH ACC
84 MOV A,R4
85 PUSH ACC
86 MOV A,R5
87 PUSH ACC
88 MOV A,R6
89 PUSH ACC
90 MOV A,R7
91 PUSH ACC
92 ;PUSH SP ;不必保存SP,任務切換時由相應程序調整
93 ENDM
94
95 POPALL MACRO
96 ;POP ACC ;不必保存SP,任務切換時由相應程序調整
97 POP ACC ;R0-R7出棧
98 MOV R7,A
99 POP ACC
100 MOV R6,A
101 POP ACC
102 MOV R5,A
103 POP ACC
104 MOV R4,A
105 POP ACC
106 MOV R3,A
107 POP ACC
108 MOV R2,A
109 POP ACC
110 MOV R1,A
111 POP ACC
112 MOV R0,A
113 POP DPH
114 POP DPL
115 POP B
116 POP ACC
117 POP PSW
118 ENDM
119
120 ;子程序
121 ;-------------------------------------------------------------------------
---- 122 RSEG ?PR?OSStartHighRdy?OS_CPU_A
A51 MACRO ASSEMBLER OS_CPU_A 06/12/2002 20:49:07 PAGE 3
0000 123 OSStartHighRdy:
124 USING 0 ;上電后51自動關中斷,此處不必用CLR EA指令,因為到此處還未開中斷,本程序
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -