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