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