📄 main.lst
字号:
C51 COMPILER V7.02b MAIN 04/27/2007 09:49:02 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\output\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\main.obj)
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: main.C
6 * 文件标识: none
7 * 适用器件: C8051F120
8 *
9 * 摘 要: 本文件是LCD测试程序,功能:开机显示"铭朗科技,WWW.MLARM.COM"信息,为待机界面。
10 * 定义'A'~'F'为功能键。按"A"显示画点图形,按"B"显示画直线图形,按"C"显示画矩型图形,
11 * 按"D"显示画矩型图形,按"E"显示画圆形图形, "F"显示待机界面.将跳线器JP8短接,R44闲置。
12 * 使用外部22.1184MHz晶振.
13 *
14 * 当前版本:1.2
15 * 作 者:李林利
16 * 完成日期:2005年6月19日
17 *
18 * 当前版本:1.0
19 * 作 者:卢 阳
20 * 完成日期:2004年11月14日
21 *
22 * 历史版本:0.9
23 * 原作者 : 李林利
24 * 完成日期:2004年7月1日
25 *************************************************************************************/
26
27 /************************************************************************************/
28 // 引用外部头文件
29
30 #include "c8051F120.h"
31 #include "Const.h"
32 #include "lcd.h"
33 #include "key.h"
34 #include "Delay.h"
35
36 /************************************************************************************/
37 unsigned char key;
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 * 9/2 = 100(99.6) MHz
49 *
50 * 输入参数:none;
51 *
52 * 返回数据:none;
53 *
54 * 注意: none;
55 ************************************************************************************/
C51 COMPILER V7.02b MAIN 04/27/2007 09:49:02 PAGE 2
56
57
58 void SYSCLK_Init (void)
59 {
60 1 int i; // delay counter
61 1
62 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
63 1
64 1 SFRPAGE = CONFIG_PAGE; // set SFR page
65 1
66 1 OSCXCN = 0x67; // start external oscillator with
67 1 // 22.1184MHz crystal
68 1
69 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
70 1
71 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
72 1
73 1 CLKSEL = 0x01; // Select the external osc. as
74 1 // the SYSCLK source
75 1
76 1 OSCICN = 0x00; // Disable the internal osc.
77 1
78 1 //Turn on the PLL and increase the system clock by a factor of M/N = 2/2
79 1 SFRPAGE = CONFIG_PAGE;
80 1
81 1 PLL0CN = 0x04; // Set PLL source as external osc.
82 1 SFRPAGE = LEGACY_PAGE;
83 1 FLSCL = 0x00; // Set FLASH read time for 25MHz clk
84 1 // or less
85 1 SFRPAGE = CONFIG_PAGE;
86 1 PLL0CN |= 0x01; // Enable Power to PLL
87 1 PLL0DIV = 0x02; // Set Pre-divide value to N (N = 2)
88 1 PLL0FLT = 0x37; // Set the PLL filter register for
89 1 // a reference clock from 7.8 - 12.5 MHz
90 1 // and an output clock from 25 - 50 MHz
91 1 PLL0MUL = 0x02; // Multiply SYSCLK by M (M = 2)
92 1
93 1 for (i=0; i < 256; i++); // Wait at least 5us
94 1 PLL0CN |= 0x02; // Enable the PLL
95 1 while(!(PLL0CN & 0x10)); // Wait until PLL frequency is locked
96 1 CLKSEL = 0x02; // Select PLL as SYSCLK source
97 1
98 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
99 1 }
100
101 /***********************************************************************************
102 * 函数名称:PORT_Init;
103 *
104 * 函数功能描述:配置端口初始化,配置交叉开关和端口;
105 *
106 * 输入参数:none;
107 *
108 * 返回数据:none;
109 *
110 * 注意: none;
111 ************************************************************************************/
112 void PORT_Init (void)
113 {
114 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
115 1
116 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
117 1
C51 COMPILER V7.02b MAIN 04/27/2007 09:49:02 PAGE 3
118 1 XBR0 = 0x8f; //设置XBR0
119 1 XBR1 = 0x1e; //设置XBR1
120 1 XBR2 = 0x44; //打开交叉开关和弱上拉
121 1
122 1 P0MDOUT = 0x34; //设置P0口输出
123 1 P1MDOUT = 0xfc; //设置P1口输出
124 1 P1MDIN = 0xff; //设置P1口输入信号类型
125 1 P2MDOUT = 0xf0; //设置P2口输出
126 1 P3MDOUT = 0xff; //设置P3口全部推挽输出
127 1
128 1 P4MDOUT = 0xff; //设置P4口输出
129 1 P5MDOUT = 0x0f; //设置P5口输出
130 1 P6MDOUT = 0xff; //设置P6口输出
131 1 P7MDOUT = 0xff; //设置P7口输出
132 1 P4 = 0xe0; //P4口置0,禁铃
133 1
134 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
135 1 // EMI0CF=0x2d; //外部存储器接口配置
136 1 // EMI0TC=0x9e; //外部存储器时序控制
137 1
138 1 EMI0CF=0x2f; //外部存储器接口配置
139 1 EMI0TC=0xff; //外部存储器时序控制
140 1
141 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
142 1 }
143 /***********************************************************************************
144 * 函数名称:Cache_Init;
145 *
146 * 函数功能描述:配置Cache初始化;
147 *
148 * 输入参数:none;
149 *
150 * 返回数据:none;
151 *
152 * 注意: none;
153 ************************************************************************************/
154 void Cache_Init (void)
155 {
156 1 char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
157 1
158 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
159 1
160 1 // CCH0CN = 0x60;//0xee; /*SFR Page: F Cache Control */
161 1 //CCH0LC = 0xA3; /*SFR Page: F Cache Lock */
162 1 //CCH0MA = 0x9A; /*SFR Page: F Cache Miss Accumulator */
163 1 //CCH0TN = 0xA2; /*SFR Page: F Cache Tuning */
164 1
165 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
166 1 }
167
168
169 /***********************************************************************************
170 * 函数名称:Draw_dot;
171 *
172 * 函数功能描述:画点序列;
173 *
174 * 输入参数:none;
175 *
176 * 返回数据:none;
177 *
178 * 注意: none;
179 ************************************************************************************/
C51 COMPILER V7.02b MAIN 04/27/2007 09:49:02 PAGE 4
180 void Draw_dot(void)
181 {
182 1 unsigned char x;
183 1 unsigned char y;
184 1 dis_clr();
185 1 x=0;
186 1 y=0;
187 1 while(1)
188 1 {
189 2 Delay_ms(10);
190 2 LCD_Draw_dot(x,y,1);
191 2 x+=2;
192 2 if(x>128)
193 2 {
194 3 y++;
195 3 x=0;
196 3 }
197 2 if(y>64)
198 2 {
199 3 dis_clr();
200 3 y=0;
201 3 }
202 2 key=GetKey();
203 2 if((key!=0xff)&&(key!=0x0a))
204 2 return;
205 2 }
206 1
207 1 }
208 /***********************************************************************************
209 * 函数名称:Draw_line;
210 *
211 * 函数功能描述:画过圆点的直线;
212 *
213 * 输入参数:none;
214 *
215 * 返回数据:none;
216 *
217 * 注意: none;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -