📄 main.lst
字号:
C51 COMPILER V8.16 MAIN 12/27/2008 15:34:42 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /***************************************************************************
2 ** 文 件 名:MAIN.C
3 ** 编 写 者:
4 ** 编写日期:2008年9月16日
5 ** 简要描述:
6 ** 修改记录:
7 ** 版 本:
8 ***************************************************************************/
9
10 #include "C8051F310.h"
11 #include <rtx51tny.h>
12
13
14 /***************************************************************************
15 函数名称:PCA_Init()
16 简要描述:初始化PCA模块,PCA0-5均配置为边缘捕捉(上升沿和下降沿)
17 Called from the Init_Device() function
18 输入: 无 // 输入参数说明,包括每个参数的作用、取值说明及参数间关系
19 输出: 无 // 输出参数的说明, 返回值的说明
20 修改日志:
21 ***************************************************************************/
22 void PCA_Init()
23 {
24 1 PCA0CN = 0x40;
25 1 PCA0MD &= ~0x40;
26 1 PCA0MD = 0x00;
27 1 PCA0CPM0 = 0x30;
28 1 PCA0CPM1 = 0x30;
29 1 PCA0CPM2 = 0x30;
30 1 PCA0CPM3 = 0x30;
31 1 PCA0CPM4 = 0x30;
32 1
33 1 }
34
35 //void Timer_Init()
36 //{
37 // TMR3CN = 0x04; // time3
38 //}
39
40 /***************************************************************************
41 函数名称:Port_IO_Init()
42 简要描述:初始化端口// 函数目的、功能等的描述
43 输入: 无 // 输入参数说明,包括每个参数的作用、取值说明及参数间关系
44 输出: 无 // 输出参数的说明, 返回值的说明
45 修改日志:
46 ***************************************************************************/
47 void Port_IO_Init()
48 {
49 1 // P0.0 - CEX0 (PCA), Open-Drain, Digital
50 1 // P0.1 - CEX1 (PCA), Open-Drain, Digital
51 1 // P0.2 - Skipped, Open-Drain, Analog
52 1 // P0.3 - Skipped, Open-Drain, Analog
53 1 // P0.4 - CEX2 (PCA), Open-Drain, Digital
54 1 // P0.5 - CEX3 (PCA), Open-Drain, Digital
55 1 // P0.6 - CEX4 (PCA), Open-Drain, Digital
C51 COMPILER V8.16 MAIN 12/27/2008 15:34:42 PAGE 2
56 1 // P0.7 - Unassigned, Open-Drain, Digital
57 1
58 1 // P1.0 - Unassigned, Open-Drain, Digital
59 1 // P1.1 - Unassigned, Open-Drain, Digital
60 1 // P1.2 - Unassigned, Open-Drain, Digital
61 1 // P1.3 - Unassigned, Open-Drain, Digital
62 1 // P1.4 - Unassigned, Open-Drain, Digital
63 1 // P1.5 - Unassigned, Open-Drain, Digital
64 1 // P1.6 - Unassigned, Open-Drain, Digital
65 1 // P1.7 - Unassigned, Open-Drain, Digital
66 1 // P2.0 - Unassigned, Open-Drain, Digital
67 1 // P2.1 - Unassigned, Open-Drain, Digital
68 1 // P2.2 - Unassigned, Open-Drain, Digital
69 1 // P2.3 - Unassigned, Open-Drain, Digital
70 1
71 1 P0SKIP = 0x0C;
72 1 XBR1 = 0x45;
73 1 }
74
75 /***************************************************************************
76 函数名称:Oscillator_Init()
77 简要描述:初始化振荡器,使用外部晶振22.118432MHz,晶振频率作为系统时钟
78 输入: 无 // 输入参数说明,包括每个参数的作用、取值说明及参数间关系
79 输出: 无 // 输出参数的说明, 返回值的说明
80 修改日志:
81 ***************************************************************************/
82 void Oscillator_Init()
83 {
84 1 int i = 0;
85 1 OSCXCN = 0x67;
86 1 /* for (i = 0; i < 3000; i++); // Wait 1ms for initialization
87 1 while ((OSCXCN & 0x80) == 0); */
88 1 OSCICN = 0x83;
89 1 }
90
91 /***************************************************************************
92 函数名称:Interrupts_Init()
93 简要描述:初始化中断
94 输入: 无
95 输出: 无
96 修改日志:
97 ***************************************************************************/
98 void Interrupts_Init()
99 {
100 1 EIE1 = 0x90;
101 1 EIP1 = 0x10;
102 1 }
103
104 // Initialization function for device,
105 // Call Init_Device() from your main program
106 /***************************************************************************
107 函数名称:Init_Device(void)
108 简要描述:执行总初始化
109 输入: 无
110 输出: 无
111 修改日志:
112 ***************************************************************************/
113 void Init_Device(void)
114 {
115 1 P1=0x00;
116 1 PCA_Init();
117 1 Port_IO_Init();
C51 COMPILER V8.16 MAIN 12/27/2008 15:34:42 PAGE 3
118 1 Oscillator_Init();
119 1 Interrupts_Init();
120 1 }
121
122 /***************************************************************************
123 函数名称:PCA_ISR (void) interrupt 11
124 简要描述:PCA中断服务程序
125 输入: 无
126 输出: 无
127 修改日志:
128 ***************************************************************************/
129 void PCA_ISR (void) interrupt 11
130 {
131 1 EA=0;
132 1 if (CCF0)
133 1 {
134 2 if (CEX0 == 0) // 下降沿跳变
135 2 {
136 3 P2 = 0x01; // 除第一通道RTS1外RTS2~RTS5置低电平
137 3 P2 = 0x01; // 除第一通道RTS1外RTS2~RTS5置低电平
138 3 P2 = 0x01; // 除第一通道RTS1外RTS2~RTS5置低电平
139 3 TXD_BUS = 0; // 发送总线跟随跳变
140 3 }
141 2 else // 上升沿跳变
142 2 {
143 3 TXD_BUS = 1; // 发送总线跟随跳变
144 3 TXD_BUS = 1; // 发送总线跟随跳变
145 3 TXD_BUS = 1; // 发送总线跟随跳变
146 3 P2 = 0xff; // 所有通道恢复为高电平
147 3 }
148 2 CCF0 = 0;
149 2 CCF4 = 0;
150 2
151 2 }
152 1
153 1 if (CCF1)
154 1 {
155 2 if (CEX1 == 0) // 下降沿跳变
156 2 {
157 3 P2 = 0x02; // 除第二通道RTS2外RTS1~RTS5置低电平
158 3 P2 = 0x02; // 除第二通道RTS2外RTS1~RTS5置低电平
159 3 P2 = 0x02; // 除第二通道RTS2外RTS1~RTS5置低电平
160 3 TXD_BUS = 0;
161 3 }
162 2 else // 上升沿跳变
163 2 {
164 3 TXD_BUS = 1;
165 3 TXD_BUS = 1;
166 3 TXD_BUS = 1;
167 3 P2 = 0xff; // 所有通道恢复为高电平
168 3 }
169 2 CCF1 = 0;
170 2 CCF4 = 0;
171 2 }
172 1
173 1 if (CCF2)
174 1 {
175 2 if (CEX2 == 0) // 下降沿跳变
176 2 {
177 3 P2 = 0x04; // 除第一通道RTS1外RTS2~RTS5置低电平
178 3 P2 = 0x04; // 除第一通道RTS1外RTS2~RTS5置低电平
179 3 P2 = 0x04; // 除第一通道RTS1外RTS2~RTS5置低电平
C51 COMPILER V8.16 MAIN 12/27/2008 15:34:42 PAGE 4
180 3 TXD_BUS = 0; // 发送总线跟随跳变
181 3 }
182 2 else // 上升沿跳变
183 2 {
184 3 TXD_BUS = 1; // 发送总线跟随跳变
185 3 TXD_BUS = 1; // 发送总线跟随跳变
186 3 TXD_BUS = 1; // 发送总线跟随跳变
187 3 P2 = 0xff; // 所有通道恢复为高电平
188 3 }
189 2 CCF2 = 0;
190 2 CCF4 = 0;
191 2 }
192 1
193 1 if (CCF3)
194 1 {
195 2 if (CEX3 == 0) // 下降沿跳变
196 2 {
197 3 P2 = 0x08; // 除第四通道RTS4外RTS1~RTS5置低电平
198 3 P2 = 0x08; // 除第四通道RTS4外RTS1~RTS5置低电平
199 3 P2 = 0x08; // 除第四通道RTS4外RTS1~RTS5置低电平
200 3 TXD_BUS = 0;
201 3 }
202 2 else // 上升沿跳变
203 2 {
204 3 TXD_BUS = 1;
205 3 TXD_BUS = 1;
206 3 TXD_BUS = 1;
207 3 P2 = 0xff; // 所有通道恢复为高电平
208 3 }
209 2 CCF3 = 0;
210 2 CCF4 = 0;
211 2 }
212 1
213 1 if (CCF4)
214 1 {
215 2 if (CEX4 == 0) // 下降沿跳变
216 2 {
217 3 P2 = 0x10; // 除第五通道RTS5外RTS1~RTS5置低电平
218 3 P2 = 0x10; // 除第五通道RTS5外RTS1~RTS5置低电平
219 3 P2 = 0x10; // 除第五通道RTS5外RTS1~RTS5置低电平
220 3 TXD_BUS = 0;
221 3 }
222 2 else // 上升沿跳变
223 2 {
224 3 TXD_BUS = 1;
225 3 TXD_BUS = 1;
226 3 TXD_BUS = 1;
227 3 P2 = 0xff; // 所有通道恢复为高电平
228 3 }
229 2 CCF4 = 0;
230 2 }
231 1 EA = 1;
232 1 }
233 /***************************************************************************
234 函数名称:ComDisplay()
235 简要描述:RXD通道运行状态显示,COMn_OK = 0正常,1不正常
236 输入: 无
237 输出: 无
238 修改日志:
239 ***************************************************************************/
240 void Com1Display()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -