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