📄 main.lst
字号:
C51 COMPILER V7.02b MAIN 01/03/2006 09:50:08 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 TABS(3) OBJECT(.\output\main.obj)
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: main.c
6 * 文件标识: none
7 * 适用器件: C8051F020
8 *
9 * 摘 要: 本文件是字库(GB2312)测试实验程序;使用外部22.1184MHz晶振.
10 * 功能:开机显示"铭朗科技,WWW.MLARM.COM"信息,为待机界面。定义'0'~'3'、'A'、
11 * 'F'为功能键。按"A" 键显示输入位码界面,按'0'键页位置加1,按'1'键字位置
12 * 加1,按'2'键页位置减1,按'3'键字位置减1,并在LCD上显示该汉字。按"F"返回
13 * 显示待机界面。
14 *
15 * 当前版本:1.01 (本次修改使程序支持标准GB2312字库,增加了682个非汉字符号,
16 标准化了区位编码用户使用会更加方便)
17 * 作 者:张宁强
18 * 完成日期:2005年4月18日
19
20 * 当前版本:1.0
21 * 作 者:卢 阳
22 * 完成日期:2004年11月14日
23 *
24 * 历史版本:0.9
25 * 原作者 : 李林利
26 * 完成日期:2004年1月1日
27 *************************************************************************************/
28
29 /************************************************************************************/
30 // 引用外部头文件
31
32 #include "c8051F040.h"
33 #include "Const.h"
34 #include "key.h"
35 #include "flash.h"
36 #include "Delay.h"
37 #include "lcd.h"
38
39 /************************************************************************************/
40
41
42 //-- 文字: 0,1,2,3,4,5,6,7,8,9 宽x高=8x16
43 C_BYTE WLib_Num_8x16[160]={
44 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
45 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
46 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
47 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
48 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
49 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
50 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
51 0x00,0x38,0x08,0x08,0xC8,0x28,0x18,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
52 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
53 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x08,0x31,0x22,0x22,0x11,0x0F,0x00
54 };
55 //-- 符号:
C51 COMPILER V7.02b MAIN 01/03/2006 09:50:08 PAGE 2
56 C_BYTE WLib_maohao_8x16[]={
57 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
58 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00
59 };
60 /************************************************************************************
61 // 系统初始化功能子程序
62 *************************************************************************************/
63 /***********************************************************************************
64 * 函数名称:SYSCLK_Init;
65 *
66 * 函数功能描述:系统时钟初始化,使用外部22.1184MHz晶振作为时钟源,using the PLL;
67 * This routine initializes the system clock to use an external 22.1184 MHz
68 * crystal oscillator multiplied by a factor of 9/2 using the PLL as its
69 * clock source. The resulting frequency is 22.1184 MHz * 9/2 = 100(99.6) MHz
70 *
71 * 输入参数:none;
72 *
73 * 返回数据:none;
74 *
75 * 注意: none;
76 ************************************************************************************/
77
78 void SYSCLK_Init (void)
79 {
80 1 int i; // delay counter
81 1
82 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
83 1
84 1 SFRPAGE = CONFIG_PAGE; // set SFR page
85 1
86 1 OSCXCN = 0x67; // start external oscillator with
87 1 // 22.1184MHz crystal
88 1
89 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
90 1
91 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
92 1
93 1 CLKSEL = 0x01; // Select the external osc. as
94 1 // the SYSCLK source
95 1
96 1 OSCICN = 0x00; // Disable the internal osc.
97 1
98 1
99 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
100 1 }
101
102 /***********************************************************************************
103 * 函数名称:PORT_Init;
104 *
105 * 函数功能描述:配置端口初始化,配置交叉开关和端口;
106 *
107 * 输入参数:none;
108 *
109 * 返回数据:none;
110 *
111 * 注意: none;
112 ************************************************************************************/
113 void PORT_Init (void)
114 {
115 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
116 1
117 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
C51 COMPILER V7.02b MAIN 01/03/2006 09:50:08 PAGE 3
118 1
119 1 XBR0 = 0x07; //设置XBR0
120 1 XBR1 = 0x14; //设置XBR1
121 1 XBR2 = 0x44; //打开交叉开关和弱上拉
122 1
123 1 P0MDOUT = 0x95; //设置P0口输出
124 1 P1MDOUT = 0x01; //设置P1口输出
125 1 P2MDOUT = 0xfc; //设置P2口输出
126 1 P3MDOUT = 0x00; //设置P3口输出
127 1 P3MDIN = 0x00;
128 1
129 1 P4MDOUT = 0xff; //设置P4口输出
130 1 P5MDOUT = 0x0f; //设置P5口输出
131 1 P6MDOUT = 0xff; //设置P6口输出
132 1 P7MDOUT = 0xff; //设置P7口输出
133 1 P4 = 0xe0; //P4口置0
134 1
135 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
136 1
137 1 EMI0CF=0x2f; //外部存储器接口配置
138 1 EMI0TC=0xff; //外部存储器时序控制
139 1
140 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
141 1 }
142
143
144
145 /***********************************************************************************
146 * 函数名称:Disp_Flash_Word;
147 *
148 * 函数功能描述:LCD单字显示Flash字库;
149 *
150 * 输入参数:unsigned char类型page页,unsigned char类型local位置,BYTE类型坐标x,y;
151 *
152 * 返回数据:none;
153 *
154 * 注意: none;
155 ************************************************************************************/
156
157 void Disp_Flash_Word(unsigned char page,unsigned char local,BYTE x,BYTE y)
158 {
159 1 unsigned char i;
160 1 unsigned char section;
161 1 unsigned int addr;
162 1 unsigned long k;
163 1 unsigned long addrtemp;
164 1 unsigned char xdata diptemp[32];
165 1 page--;
166 1 local--;
167 1 k=1;
168 1 addrtemp=k*(page*94+local)*32;
169 1 section=addrtemp/16384;
170 1 addr=addrtemp;
171 1 addr|=0xc000;
172 1
173 1 for(i=0;i<32;i++)
174 1 {
175 2 diptemp[i]=read_byte(section,addr++);
176 2 }
177 1 if(addr==0x0000)
178 1 {
179 2 section++;
C51 COMPILER V7.02b MAIN 01/03/2006 09:50:08 PAGE 4
180 2 addr=0xc000;
181 2 if(section>15)
182 2 return;
183 2 }
184 1 LCD_Disp_Flash_Word(x,y,diptemp,2,16);
185 1
186 1 }
187 //--------------------------------------------------------------------------
188 //
189 //--------------------------------------------------------------------------
190 //
191 //
192 //
193
194 /***********************************************************************************
195 * 函数名称
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -