📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 08/19/2008 11:47:51 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe main.c DB OE
line level source
1 #include "c8051f020.h"
2 #include "variable.h"
3
4 Uchar code StrForMixed[]={"08/08/12 16:11"}; //测试字符串
5 Uchar code StrForSample1[]={"Let our to look program in Graphics\n"};
6
7 extern void LcmInition( void ); //LCDRA8835初始化函数
8 extern void LcmClear( void ); //清屏函数
9 extern Uchar dprintf(Uchar x,Uchar y, char code *ptr, Uchar att) ;//图形方式下中英文混合显示函数
10 extern Uchar hprintf(Uchar x,Uchar y, char code *ptr, Uchar att) ;//图形方式下中英文混合显示函数
11 extern void LcmRest( void );
12 extern void LcmTest( void );
13 extern Uchar hprintf(Uchar x,Uchar y, char code *ptr, Uchar att);
14 extern void printfUpDown(Uchar x,Uchar y, Uchar flag, Uchar att) ;
15 extern void printfLeftRight(Uchar x,Uchar y, Uchar flag, Uchar att);
16 extern void printlcd_single(void);
17 extern void printlcd_car_show(Uchar x,Uchar y, Uchar * pcar, Uchar att);
18 extern void printlcd_char(Uchar ascii);
19 extern void lcd_CSR(Uchar flag);
20 extern void Locatexy(Uchar x,Uchar y, Uchar attribs);
21 /*
22 extern void WriteCommand( Uchar CommandByte );
23 extern void WriteData( Uchar dataW );
24 extern char code ASC_MSK[96*16];
25 extern struct typFNT_GB16 code Cdotlib[];
26 */
27 /*=====================================
28 ** 函数名称: Delay
29 ** 功能描述: 延时函数
30 ** 输入参数: 延时的时间
31 **
32 ** 输出参数: 无
33 **
34 ** 全局变量: 无
35 ** 调用模块:
36 **---------------------------------------
37 ** 作 者: wjf
38 ** 日 期: 2008/07/31
39 ======================================*/
40 void Delay( Uint tt ) {
41 1 while( tt-- );
42 1 }
43
44 /*=========================================================
45 ** 函数名称: init_cpu
46 ** 功能描述: C8051F020初始化函数 具体初始化内容参考行注释
47 ** 输入参数: 无
48 **
49 ** 输出参数: 无
50 **
51 ** 全局变量: 无
52 ** 调用模块:
53 **--------------------------------------------------------
54 ** 作 者: wjf
55 ** 日 期: 2008/07/31
C51 COMPILER V7.20 MAIN 08/19/2008 11:47:51 PAGE 2
56 ==========================================================*/
57 void init_cpu(void) {
58 1 //晶振设置
59 1 Uint i;
60 1 OSCXCN = 0x67; // start external oscillator with 11.0592Mhz
61 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
62 1 while ((OSCXCN & 0x80)==0) ; // Wait for crystal osc. to settle
63 1 OSCICN = 0x88; // select external oscillator as SYSCLK
64 1 EA = 0;
65 1 WDTCN = 0xDE; // 屏蔽看门狗
66 1 // 写0XDE和写0XAD必须发生在4个时钟周期之内
67 1 WDTCN = 0xAD;
68 1
69 1 //复位源设置
70 1 RSTSRC= 0x00; // 复位源寄存器设置
71 1
72 1 //交叉开关配制:UART0- RX0、TX0
73 1 XBR0 = 0x04;
74 1 XBR1 = 0x00;
75 1 XBR2 = 0x84; // 交叉开关使能
76 1
77 1 //P0、P1、P2、P3、P4、P5、P6、P7端口设置
78 1 //通过设置输出方式为漏极开路并向端口数据寄存器中的相映位写1可将端口引脚配置为输入
79 1
80 1 P0MDOUT = 0x00; // P0口为漏极开路输出
81 1
82 1 // P1MDIN = 0xff; // P1口用作数字输入输出
83 1 P1MDOUT = 0xff; // P1.0-P1.7设置为推挽输出
84 1
85 1
86 1 P2MDOUT = 0x00; // P2口设置为漏极开路输出
87 1 // P2.0 - P2.4做输入
88 1 P3MDOUT = 0xff; // P3口为推挽输出
89 1
90 1 P74OUT = 0xff; // P4 - P7口为推挽输出
91 1
92 1 //UART0设置
93 1 SCON0 = 0x40; // 设置UART0工作在方式1,8位UART
94 1 T2CON = 0x34; // 用定时器2产生串口波特率 定时器2 16位自动重装 启动定时器2
95 1 RCAP2H = 0xff; // Timer 2 Capture Register High Byte
96 1 RCAP2L = 0xdc; // Timer 2 Capture Register Low Byte
97 1 TH2 = 0xff; // Timer 2 High Byte
98 1 TL2 = 0xdc; // Timer 2 Low Byte
99 1 // 使用11.0592MHz晶振,波特率设置为 9600 bps
100 1 /* SYSCLK
101 1 波特率=---------
102 1 32×(65536-[RCAP2H:RCAP2L])
103 1 */
104 1 //UART1设置
105 1 SCON1 = 0x40; // 设置UART1工作在方式1,8位UART
106 1 T4CON = 0x34; // 用定时器4产生串口波特率 定时器2 16位自动重装
107 1 RCAP4H = 0xff; // Timer 4 Capture Register High Byte
108 1 RCAP4L = 0xdc; // Timer 4 Capture Register Low Byte
109 1 TH4 = 0xff; // Timer 4 High Byte
110 1 TL4 = 0xdc; // Timer 4 Low Byte
111 1 // 使用11.0592MHz晶振,波特率设置为 9600 bps
112 1 /* SYSCLK
113 1 波特率=---------
114 1 32×(65536-[RCAP2H:RCAP2L])
115 1 */
116 1 //中断设置
117 1 // EA=0;
C51 COMPILER V7.20 MAIN 08/19/2008 11:47:51 PAGE 3
118 1 //-----------------------------------------------
119 1 }
120
121 /*=========================================================
122 ** 函数名称: config
123 ** 功能描述: C8051F020初始化函数 具体初始化内容参考行注释
124 ** 输入参数: 无
125 **
126 ** 输出参数: 无
127 **
128 ** 全局变量: 无
129 ** 调用模块:
130 **--------------------------------------------------------
131 ** 作 者: FL
132 ** 日 期:
133 ==========================================================*/
134 void config (void) {
135 1
136 1 //Local Variable Definitions
137 1 int n = 0;
138 1
139 1 WDTCN = 0x07; // Watchdog Timer Control Register
140 1 WDTCN = 0xDE; // Disable WDT
141 1 WDTCN = 0xAD;
142 1
143 1 XBR0 = 0x05; // XBAR0: Initial Reset Value
144 1 XBR1 = 0x00; // XBAR1: Initial Reset Value
145 1 XBR2 = 0x44; // XBAR2: Initial Reset Value
146 1
147 1 P0MDOUT = 0x11; // Output configuration for P0
148 1 P1MDOUT = 0x00; // Output configuration for P1 //全部漏极开路
149 1 P1=0xff;
150 1
151 1 P2MDOUT = 0xc1; // Output configuration for P2 //除P2.7,6,0是其余漏极开路
152 1 P2=0xff;
153 1
154 1 P3MDOUT = 0x00; // Output configuration for P3
155 1 P3=0xff;
156 1
157 1 P74OUT = 0xf0; // Output configuration for P漏极开路
158 1 P4=0xff;
159 1 P5=0xff;
160 1
161 1 P1MDIN = 0xFF; // Input configuration for P1 //输入方式全部为数字
162 1
163 1 EMI0CF = 0x28; // External Memory Configuration Register
164 1
165 1
166 1 //----------------------------------------------------------------
167 1 // Oscillator Configuration
168 1 //----------------------------------------------------------------
169 1
170 1 OSCXCN = 0x67; // EXTERNAL Oscillator Control Register
171 1 for (n = 0; n < 255; n++) ; // wait for osc to start
172 1 while ( (OSCXCN & 0x80) == 0 ); // wait for xtal to stabilize
173 1
174 1 OSCICN = 0x0C; // Internal Oscillator Control Register
175 1
176 1
177 1 //----------------------------------------------------------------
178 1 // UART Configuration
179 1 //----------------------------------------------------------------
C51 COMPILER V7.20 MAIN 08/19/2008 11:47:51 PAGE 4
180 1
181 1 SCON0 = 0x50; // Serial Port Control Register
182 1 SCON0 &= 0xFC; //clear interrupt pending flags
183 1 PCON = 0x00; // Power Control Register
184 1 SCON1 = 0x50; // Serial Port 1 Control Register
185 1
186 1
187 1
188 1 //----------------------------------------------------------------
189 1 // SMBus Configuration
190 1 //----------------------------------------------------------------
191 1
192 1 SMB0CN = 0x40; // SMBus Control Register
193 1 SMB0ADR = 0x00; // SMBus Address Register
194 1 SMB0CR = 0xc9; // SMBus Clock Rate Register
195 1
196 1
197 1 //----------------------------------------------------------------
198 1 // Timer Configuration
199 1 //----------------------------------------------------------------
200 1
201 1 CKCON = 0x10; // Clock Control Register
202 1 TH0 = 0x00; // Timer 0 High Byte
203 1 TL0 = 0x00; // Timer 0 Low Byte
204 1 TH1 = 0xDc; // Timer 1 High Byte
205 1 TL1 = 0x00; // Timer 1 Low Byte
206 1 TMOD = 0x20; // Timer Mode Register
207 1 TCON = 0x40; // Timer Control Register
208 1
209 1 //----------------------------------------------------------------
210 1 // Reset Source Configuration
211 1 //
212 1 // Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0
213 1 //------------------------------------------------------------------
214 1 // R | R/W | R/W | R/W | R | R | R/W | R
215 1 //------------------------------------------------------------------
216 1 // JTAG |Convert | Comp.0 | S/W | WDT | Miss. | POR | HW
217 1 // Reset |Start | Reset/ | Reset | Reset | Clock | Force | Pin
218 1 // Flag |Reset/ | Enable | Force | Flag | Detect| & | Reset
219 1 // |Enable | Flag | & | | Flag | Flag | Flag
220 1 // |Flag | | Flag | | | |
221 1 //------------------------------------------------------------------
222 1 // NOTE! : Comparator 0 must be enabled before it is enabled as a
223 1 // reset source.
224 1 //
225 1 // NOTE! : External CNVSTR must be enalbed through the crossbar, and
226 1 // the crossbar enabled prior to enabling CNVSTR as a reset source
227 1 //------------------------------------------------------------------
228 1
229 1 RSTSRC = 0x00; // Reset Source Register
230 1
231 1
232 1 //----------------------------------------------------------------
233 1 // Interrupt Configuration
234 1 //----------------------------------------------------------------
235 1
236 1 IE = 0x00; //Interrupt Enable //总中断允许,UART0中断允许
237 1 IP = 0x00; //Interrupt Priority
238 1 EIE1 = 0x00; //Extended Interrupt Enable 1
239 1 EIE2 = 0x00; //Extended Interrupt Enable 2 //外部中断6允许
240 1 EIP1 = 0x00; //Extended Interrupt Priority 1
241 1 EIP2 = 0x00; //Extended Interrupt Priority 2
C51 COMPILER V7.20 MAIN 08/19/2008 11:47:51 PAGE 5
242 1
243 1 P3IF=0x00; //P3.6下降沿中断
244 1 EIP1=0x02;
245 1
246 1 // other initialization code here...
247 1
248 1
249 1
250 1 } //End of config
251
252
253 /*======================================================
254 ** 函数名称: display_plane_menu
255 ** 功能描述: 显示5Q设备的开机画面
256 ** 输入参数: 无
257 **
258 ** 输出参数: 无
259 **
260 ** 全局变量: 无
261 ** 调用模块:
262 **----------------------------------------------------
263 ** 作 者: wjf
264 ** 日 期: 2008/08/08
265 ======================================================*/
266 void display_plane_menu(void) //开机菜单
267 {
268 1 LcmClear();
269 1 dprintf(4,0x10, "欢迎使用-5V型汽车排放气体分析仪",0);
270 1 dprintf(15,0x30, "版本:007",0);
271 1
272 1 hprintf(3,0x60, "天津圣威科技发展有限公司",0);
273 1 dprintf(12,0x85, "让世界更美丽,让空气更清新!",0);
274 1 dprintf(3,0xd0, "网址:www.shengweiscience.com",0);
275 1
276 1 }
277
278 /*======================================================
279 ** 函数名称: display_main_menu
280 ** 功能描述: 主菜单
281 ** 输入参数: 无
282 **
283 ** 输出参数: 无
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -