📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 07/18/2006 13:03:15 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\output\main.obj
COMPILER INVOKED BY: F:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\main.obj)
line level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: main.c
6 * 文件标识: none
7 * 适用器件: C8051F040
8 *
9 * 摘 要: 本文件是串口0、1测试程序,将跳线器JP7、JP11短接。使用外部22.1184MHz晶振。
10 * 功能:Uart驱动程序,包括初始化、波特率设置,单字节发送接收、字符串发送接受等。
11 * 程序运行时向PC机发送"WWW.MLARM.COM";接收到PC机的数据后,再将该数据发送
12 * 回PC机。按开发板上键盘,将该键值发送到PC机.串口调试最好应用支持中文格式
13 * 的串口调试助手,否则不能正常显示。
14 *
15 * 当前版本:1.2
16 * 作 者:张宁强
17 * 完成日期:2006年1月10日
18 *
19 * 历史版本:1.0
20 * 原作者 : 李林利 卢阳
21 * 完成日期:2005年6月1日
22 *************************************************************************************/
23
24 /************************************************************************************/
25 // 引用外部头文件
26
27 #include "c8051f040.h"
28 #include "Const.h"
29 #include "uart.h"
30 #include "key.h"
31 #include "delay.h"
32 #include "lcd.h"
33 /************************************************************************************/
34 unsigned char code ASCII[16] ={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
35 0x41,0x42,0x43,0x44,0x45,0x46};
36 /************************************************************************************
37 // 系统初始化功能子程序
38 *************************************************************************************/
39 /************************************************************************************
40 // 系统初始化功能子程序
41 *************************************************************************************/
42 /***********************************************************************************
43 * 函数名称:SYSCLK_Init;
44 *
45 * 函数功能描述:系统时钟初始化,使用外部22.1184MHz晶振作为时钟源,using the PLL;
46 * This routine initializes the system clock to use an external 22.1184 MHz
47 * crystal oscillator multiplied by a factor of 9/2 using the PLL as its
48 * clock source. The resulting frequency is 22.1184 MHz * 8/2 = 88.45 MHz
49 *
50 * 输入参数:none;
51 *
52 * 返回数据:none;
53 *
54 * 注意: none;
55 ************************************************************************************/
C51 COMPILER V7.50 MAIN 07/18/2006 13:03:15 PAGE 2
56
57 void SYSCLK_Init (void)
58 {
59 1 int i; // delay counter
60 1
61 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
62 1
63 1 SFRPAGE = CONFIG_PAGE; // set SFR page
64 1
65 1 OSCXCN = 0x67; // start external oscillator with
66 1 // 22.1184MHz crystal
67 1
68 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
69 1
70 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
71 1
72 1 CLKSEL = 0x01; // Select the external osc. as
73 1 // the SYSCLK source
74 1
75 1 OSCICN = 0x00; // Disable the internal osc.
76 1
77 1
78 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
79 1 }
80
81 /***********************************************************************************
82 * 函数名称:PORT_Init;
83 *
84 * 函数功能描述:配置端口初始化,配置交叉开关和端口;
85 *
86 * 输入参数:none;
87 *
88 * 返回数据:none;
89 *
90 * 注意: none;
91 ************************************************************************************/
92 void PORT_Init (void)
93 {
94 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
95 1
96 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
97 1
98 1 XBR0 = 0x07; //设置XBR0
99 1 XBR1 = 0x14; //设置XBR1
100 1 XBR2 = 0x44; //打开交叉开关和弱上拉
101 1
102 1 P0MDOUT = 0x95; //设置P0口输出
103 1 P1MDOUT = 0x01; //设置P1口输出
104 1 P2MDOUT = 0xfc; //设置P2口输出
105 1 P3MDOUT = 0x00; //设置P3口输出
106 1 P3MDIN = 0x00;
107 1
108 1 P4MDOUT = 0xff; //设置P4口输出
109 1 P5MDOUT = 0x0f; //设置P5口输出
110 1 P6MDOUT = 0xff; //设置P6口输出
111 1 P7MDOUT = 0xff; //设置P7口输出
112 1 P4 = 0xe0; //P4口置0
113 1
114 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
115 1
116 1 EMI0CF=0x2f; //外部存储器接口配置
117 1 EMI0TC=0xff; //外部存储器时序控制
C51 COMPILER V7.50 MAIN 07/18/2006 13:03:15 PAGE 3
118 1
119 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
120 1 }
121
122
123 /************************************************************************************
124 // 主循环程序
125 *************************************************************************************/
126
127 void main(void)
128 {
129 1 unsigned char data temp0,temp1;
130 1 unsigned char keytest;
131 1
132 1 WDTCN=0xDE; //禁止看门狗定时器
133 1 WDTCN=0xAD;
134 1
135 1 PORT_Init();
136 1 lcd_init();
137 1 dis_clr();
138 1 dis_start0();
139 1 SYSCLK_Init();
140 1
141 1 Key_Init();
142 1
143 1 Uart0_Init(57600);
144 1 Uart1_Init(57600);
145 1
146 1
147 1 Uart0_SendString("Compiler Tools: Keil C, V7.50\r\n");
148 1 Uart0_SendString("西安铭朗电子科技有限责任公司 www.mlarm.com\r\n");
149 1
150 1 Uart1_SendString("Compiler Tools: Keil C, V7.50\r\n");
151 1 Uart1_SendString("西安铭朗电子科技有限责任公司 www.mlarm.com\r\n");
152 1
153 1 while(1)
154 1 {
155 2
156 2 temp0=Uart0_ReceiveData();
157 2 temp1=Uart1_ReceiveData();
158 2
159 2 if (temp0!=0xff)
160 2 {
161 3 Uart0_SendByte(temp0);
162 3 }
163 2 if (temp1!=0xff)
164 2 {
165 3 Uart1_SendByte(temp1);
166 3 }
167 2
168 2 keytest=GetKey();
169 2 if (keytest!=0xff)
170 2 {
171 3 Uart0_SendByte(ASCII[keytest]);
172 3 Uart1_SendByte(ASCII[keytest]);
173 3 }
174 2
175 2 }
176 1
177 1
178 1 }
179
C51 COMPILER V7.50 MAIN 07/18/2006 13:03:15 PAGE 4
180 /***********************************************************************************/
181 // 文件结束
182 /***********************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 242 ----
CONSTANT SIZE = 93 ----
XDATA SIZE = ---- 1
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -