📄 mail.lst
字号:
C51 COMPILER V7.20 MAIL 01/01/2002 03:12:21 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIL
OBJECT MODULE PLACED IN mail.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mail.c DEBUG OBJECTEXTEND
line level source
1 /*
2 ZLG7290 演示程序
3 */
4 #include "I2C.h"
5 #include "ZLG7290.h"
6 //定义键盘中断标志,FlagINT=1 表示有键按下
7 volatile bit FlagINT = 0;
8 code char DispDat[16] =
9 {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E};
10 //{//字母AbCdEFgHiJkLoPqr 的字形数据
11 //0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,
12 //0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A
13 //};
14
15
16 /*
17 函数:INT0_SVC()
18 功能:ZLG7290 键盘中断服务程序
19 说明:中断触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平
20 */
21 void INT0_SVC() interrupt 0
22 {
23 1 FlagINT = 1;
24 1 }
25 /*
26 函数:Delay()
27 功能:延时10ms~655.36s
28 参数:
29 t>0 时,延时(t*0.01)s
30 t=0 时,延时655.36s
31 说明:
32 晶振采用11.0592MHz
33 */
34 void Delay(unsigned int t)
35 {
36 1 do{
37 2 TH0 = 0xDC;
38 2 TL0 = 0x00;
39 2 TR0 = 1;
40 2 while ( !TF0 );
41 2 TF0 = 0;
42 2 TR0 = 0;
43 2 } while (--t);
44 1 }
45 /*
46 函数:SystemInit()
47 功能:系统初始化
48 */
49 void SystemInit()
50 {
51 1 I2C_Init();
52 1 TMOD = 0x01;
53 1 Delay(30); //等待ZLG7290 复位完毕
54 1 }
55 /*
C51 COMPILER V7.20 MAIL 01/01/2002 03:12:21 PAGE 2
56 函数:ClearAll()
57 功能:清除所有显示
58 */
59 void ClearAll()
60 {
61 1 unsigned char x;
62 1 for ( x=0; x<8; x++ )
63 1 {
64 2 ZLG7290_Download(x,0,0,31);
65 2 }
66 1 }
67 /*
68 函数:Test_DispBuf()
69 功能:测试直接写显存
70 */
71 void Test_DispBuf()
72 {
73 1 //code char DispDat[16] =
74 1 //{//字母AbCdEFgHiJkLoPqr 的字形数据
75 1 //0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,
76 1 //0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A
77 1 //};
78 1 unsigned char n;
79 1 unsigned char x;
80 1 unsigned char reg;
81 1 unsigned char dat;
82 1 for ( n=0; n<16; n++ )
83 1 {
84 2 for ( x=0; x<8; x++ )
85 2 {
86 3 reg = ZLG7290_DpRam + x;
87 3 dat = DispDat[n];
88 3 ZLG7290_WriteReg(reg,dat);
89 3 }
90 2 Delay(50);
91 2 }
92 1 }
93
94
95
96 /*
97 函数:Test_DispBuf()
98 功能:测试直接写显存
99 */
100 void Test_DispBuf2()
101 {
102 1 //unsigned char n;
103 1 unsigned char x;
104 1 unsigned char reg;
105 1 unsigned char dat;
106 1 for ( x=0; x<8; x++ )
107 1 {
108 2 reg = ZLG7290_DpRam + x;
109 2 dat = DispDat[x];
110 2 ZLG7290_WriteReg(reg,dat);
111 2 }
112 1 Delay(400);
113 1 }
114
115
116
117
C51 COMPILER V7.20 MAIL 01/01/2002 03:12:21 PAGE 3
118
119
120 /*
121 函数:Test_Download()
122 功能:测试下载数据功能
123 */
124 void Test_Download()
125 {
126 1 unsigned char x;
127 1 bit dp;
128 1 bit flash;
129 1 char dat;
130 1 //点亮所有数码管
131 1 dp = 1;
132 1 flash = 0;
133 1 dat = 8;
134 1 for ( x=0; x<8; x++ )
135 1 {
136 2 ZLG7290_Download(x,dp,flash,dat);
137 2 }
138 1 Delay(100);
139 1 //依次显示所有字型
140 1 dp = 0;
141 1 flash = 0;
142 1 for ( dat=0; dat<32; dat++ )
143 1 {
144 2 for ( x=0; x<8; x++ )
145 2 {
146 3 ZLG7290_Download(x,dp,flash,dat);
147 3 }
148 2 Delay(50);
149 2 }
150 1 }
151 /*
152 函数:Test_ScanNum()
153 功能:测试不同扫描位数
154 说明:扫描位数越少,数码管就越亮
155 */
156 void Test_ScanNum()
157 {
158 1 unsigned char x;
159 1 for ( x=0; x<8; x++ )
160 1 {
161 2 ZLG7290_Download(x,1,0,8);
162 2 }
163 1 Delay(100);
164 1 for ( x=0; x<8; x++ )
165 1 {
166 2 ZLG7290_WriteReg(ZLG7290_ScanNum,x);
167 2 Delay(100);
168 2 }
169 1 }
170 /*
171 函数:Test_Flash()
172 功能:测试闪烁功能
173 */
174 void Test_Flash()
175 {
176 1 char dat = 0x01;
177 1 unsigned char x;
178 1 //显示01234567
179 1 for ( x=0; x<8; x++ )
C51 COMPILER V7.20 MAIL 01/01/2002 03:12:21 PAGE 4
180 1 {
181 2 ZLG7290_Download(x,0,0,x);
182 2 }
183 1 //设置闪烁控制寄存器
184 1 ZLG7290_WriteReg(ZLG7290_FlashOnOff,0x11);//第二个参数填写占和空的时间
185 1 //闪烁演示
186 1 for ( x=0; x<8; x++ )
187 1 {
188 2 //#define ZLG7290_Flash(Fn) ZLG7290_cmd(0x70,(Fn))
189 2 ZLG7290_Flash(dat);
190 2 dat <<= 1;
191 2 Delay(300);
192 2 }
193 1 //数码管的8 个位一起闪烁
194 1 ZLG7290_Flash(0xFF);
195 1 Delay(350);
196 1 //停止闪烁
197 1 ZLG7290_Flash(0x00);
198 1 Delay(50);
199 1 }
200 /*
201 函数:Test_SegOnOff()
202 功能:测试段寻址功能
203 */
204 void Test_SegOnOff()
205 {
206 1 unsigned char seg;
207 1 ClearAll();
208 1 Delay(100);
209 1 for ( seg=0; seg<64; seg++ )
210 1 {
211 2 ZLG7290_SegOnOff(seg,1);
212 2 Delay(30);
213 2 }
214 1 Delay(100);
215 1 for ( seg=0; seg<64; seg++ )
216 1 {
217 2 ZLG7290_SegOnOff(seg,0);
218 2 Delay(30);
219 2 }
220 1 Delay(100);
221 1 }
222 /*
223 函数:DispValue()
224 功能:显示100 以内的数值
225 参数:
226 x:显示位置,取值0~6
227 dat:要显示的数据,取值0~99
228 */
229 void DispValue(char x, unsigned char dat)
230 {
231 1 unsigned char d;
232 1 d = dat / 10;
233 1 ZLG7290_Download(x,0,0,d);
234 1 d = dat - d * 10;
235 1 ZLG7290_Download(x+1,0,0,d);
236 1 }
237 /*
238 函数:DispHexValue()
239 功能:以16 进制方式显示数值
240 参数:
241 x:显示位置,取值0~6
C51 COMPILER V7.20 MAIL 01/01/2002 03:12:21 PAGE 5
242 dat:要显示的数据,取值0~255
243 */
244 void DispHexValue(char x, unsigned char dat)
245 {
246 1 unsigned char d;
247 1 d = dat / 16;
248 1 ZLG7290_Download(x,0,0,d);
249 1 d = dat - d * 16;
250 1 ZLG7290_Download(x+1,0,0,d);
251 1 }
252 /*
253 函数:Test_Key()
254 功能:测试按键功能
255 */
256 void Test_Key()
257 {
258 1 unsigned char KeyValue;
259 1 unsigned char RepeatCnt;
260 1 unsigned char FnKeyValue;
261 1 ClearAll();
262 1 EA = 0;
263 1 IT0 = 1; //负边沿触发中断
264 1 EX0 = 1; //允许外部中断
265 1 EA = 1;
266 1 for (;;)
267 1 {
268 2 if ( FlagINT ) //如果有键按下
269 2 {
270 3 //清除中断标志
271 3 FlagINT = 0;
272 3 //读取键值、连击计数器值、功能键值
273 3 ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
274 3 ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
275 3 ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
276 3 //显示键值、连击计数器值、功能键值
277 3 DispValue(0,KeyValue);
278 3 DispHexValue(3,RepeatCnt);
279 3 DispHexValue(6,FnKeyValue);
280 3 }
281 2 PCON |= 0x01; //使CPU 进入空闲状态,任一中断可唤醒
282 2 }
283 1 }
284 void main()
285 {
286 1 SystemInit(); //系统初始化
287 1 for(;;){
288 2 Test_DispBuf(); //测试直接写显存
289 2 Test_DispBuf2();
290 2 //Test_Download(); //测试下载数据
291 2 //Test_ScanNum(); //测试不同扫描位数
292 2 Test_Flash(); //测试闪烁功能
293 2 //Test_SegOnOff(); //测试段寻址功能
294 2 //Test_Key(); //测试键盘功能
295 2 }
296 1 //while (1);
297 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 648 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
C51 COMPILER V7.20 MAIL 01/01/2002 03:12:21 PAGE 6
PDATA SIZE = ---- ----
DATA SIZE = ---- 23
IDATA SIZE = ---- ----
BIT SIZE = 1 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -