📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**********方波发生器*********/
2 //作者:翰海光舟
3 //日期:2005年12月26日
4
5 /***********宏定义************/
6
7 #include<AT89X52.H>
8
9 /*******子函数声明************/
10 void delay10ms(void);
11
12 /****全局变量定义************/
13
14 unsigned char i,j; //循环变量
15 unsigned int frequency=0; //从键盘输入的频率
16 unsigned long pw; //脉冲宽度
17 unsigned char multiple; //脉宽比65536的倍数
18 unsigned int rest; //脉宽比65536的余数
19 unsigned char counter; //计数变量
20 unsigned char number=0; //数组下标
21 unsigned char buffer=0; //位选标志
22 unsigned char disbuf[4]; //缓冲数组
23 bit flag=0; //第一次按下数字键的标志,0=第一次按下
24 unsigned char code disp[]={0x3f,0x06,0x5b,0x4f,0x66,
25 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x79}; //0~9、(null)、E
26
27 sbit key0=P1^0; //0~9数字键
28 sbit key1=P1^1;
29 sbit key2=P1^2;
30 sbit key3=P1^3;
31 sbit key4=P1^4;
32 sbit key5=P1^5;
33 sbit key6=P1^6;
34 sbit key7=P1^7;
35 sbit key8=P3^0;
36 sbit key9=P3^1;
37
38 sbit makesure=P3^2; //确认键
39 sbit renew=P3^3; //重置键
40 /**********************************主函数*****************************/
41
42 void main(void)
43 {
44 1 TMOD=0x11; //中断初始化
45 1 EA=1;
46 1 ET0=1;
47 1 ET1=1;
48 1 TR1=1;
49 1
50 1 TH1=65036>>8;
51 1 TL1=65036;
52 1 P2_0=0; //点亮电源指示灯
53 1
54 1 /**************************按键查询**********************************/
55 1 while(1)
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 2
56 1 {
57 2 begin:
58 2 if(key0==0)
59 2 {
60 3 delay10ms(); //软件消抖
61 3 if(key0==0)
62 3 {
63 4 switch(number)
64 4 {
65 5 case 0:
66 5 disbuf[3]=10; //10=无效零消隐
67 5 disbuf[2]=10;
68 5 disbuf[1]=10;
69 5 disbuf[0]=0; //数码管相应位显示的数字
70 5 break;
71 5 case 1:
72 5 disbuf[3]=10;
73 5 disbuf[2]=10;
74 5 disbuf[1]=disbuf[0];
75 5 disbuf[0]=0;
76 5 break;
77 5 case 2:
78 5 disbuf[3]=10;
79 5 disbuf[2]=disbuf[1];
80 5 disbuf[1]=disbuf[0];
81 5 disbuf[0]=0;
82 5 break;
83 5 case 3:
84 5 disbuf[3]=disbuf[2];
85 5 disbuf[2]=disbuf[1];
86 5 disbuf[1]=disbuf[0];
87 5 disbuf[0]=0;
88 5 break;
89 5 }
90 4 number++;
91 4 if(number==4)
92 4 number=0;
93 4
94 4
95 4 if(flag==0)
96 4 flag=1;
97 4 else
98 4 {
99 5 frequency=(int)(frequency*10);
100 5 if(frequency>1000) //输入的频率大于1000
101 5 {
102 6 disbuf[3]=11;
103 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
104 6 frequency=0;
105 6 goto exception; //异常处理
106 6 }
107 5 }
108 4
109 4 while(key0==0);
110 4 }
111 3 }
112 2
113 2 if(key1==0)
114 2 {
115 3 delay10ms();
116 3 if(key1==0)
117 3 {
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 3
118 4 switch(number)
119 4 {
120 5 case 0:
121 5 disbuf[3]=10;
122 5 disbuf[2]=10;
123 5 disbuf[1]=10;
124 5 disbuf[0]=1;
125 5 break;
126 5 case 1:
127 5 disbuf[3]=10;
128 5 disbuf[2]=10;
129 5 disbuf[1]=disbuf[0];
130 5 disbuf[0]=1;
131 5 break;
132 5 case 2:
133 5 disbuf[3]=10;
134 5 disbuf[2]=disbuf[1];
135 5 disbuf[1]=disbuf[0];
136 5 disbuf[0]=1;
137 5 break;
138 5 case 3:
139 5 disbuf[3]=disbuf[2];
140 5 disbuf[2]=disbuf[1];
141 5 disbuf[1]=disbuf[0];
142 5 disbuf[0]=1;
143 5 break;
144 5 }
145 4 number++;
146 4 if(number==4)
147 4 number=0;
148 4
149 4 if(flag==0)
150 4 {
151 5 flag=1;
152 5 frequency=1;
153 5 }
154 4 else
155 4 {
156 5 frequency=(int)(frequency*10+1);
157 5 if(frequency>1000)
158 5 {
159 6 disbuf[3]=11;
160 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
161 6 frequency=0;
162 6 goto exception;
163 6 }
164 5 }
165 4 while(key1==0);
166 4 }
167 3 }
168 2
169 2 if(key2==0)
170 2 {
171 3 delay10ms();
172 3 if(key2==0)
173 3 {
174 4 switch(number)
175 4 {
176 5 case 0:
177 5 disbuf[3]=10;
178 5 disbuf[2]=10;
179 5 disbuf[1]=10;
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 4
180 5 disbuf[0]=2;
181 5 break;
182 5 case 1:
183 5 disbuf[3]=10;
184 5 disbuf[2]=10;
185 5 disbuf[1]=disbuf[0];
186 5 disbuf[0]=2;
187 5 break;
188 5 case 2:
189 5 disbuf[3]=10;
190 5 disbuf[2]=disbuf[1];
191 5 disbuf[1]=disbuf[0];
192 5 disbuf[0]=2;
193 5 break;
194 5 case 3:
195 5 disbuf[3]=disbuf[2];
196 5 disbuf[2]=disbuf[1];
197 5 disbuf[1]=disbuf[0];
198 5 disbuf[0]=2;
199 5 break;
200 5 }
201 4 number++;
202 4 if(number==4)
203 4 number=0;
204 4
205 4 if(flag==0)
206 4 {
207 5 flag=1;
208 5 frequency=2;
209 5 }
210 4 else
211 4 {
212 5 frequency=(int)(frequency*10+2);
213 5 if(frequency>1000)
214 5 {
215 6 disbuf[3]=11;
216 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
217 6 frequency=0;
218 6 goto exception;
219 6 }
220 5 }
221 4 while(key2==0);
222 4 }
223 3 }
224 2
225 2 if(key3==0)
226 2 {
227 3 delay10ms();
228 3 if(key3==0)
229 3 {
230 4 switch(number)
231 4 {
232 5 case 0:
233 5 disbuf[3]=10;
234 5 disbuf[2]=10;
235 5 disbuf[1]=10;
236 5 disbuf[0]=3;
237 5 break;
238 5 case 1:
239 5 disbuf[3]=10;
240 5 disbuf[2]=10;
241 5 disbuf[1]=disbuf[0];
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 5
242 5 disbuf[0]=3;
243 5 break;
244 5 case 2:
245 5 disbuf[3]=10;
246 5 disbuf[2]=disbuf[1];
247 5 disbuf[1]=disbuf[0];
248 5 disbuf[0]=3;
249 5 break;
250 5 case 3:
251 5 disbuf[3]=disbuf[2];
252 5 disbuf[2]=disbuf[1];
253 5 disbuf[1]=disbuf[0];
254 5 disbuf[0]=3;
255 5 break;
256 5 }
257 4 number++;
258 4 if(number==4)
259 4 number=0;
260 4
261 4 if(flag==0)
262 4 {
263 5 flag=1;
264 5 frequency=3;
265 5 }
266 4 else
267 4 {
268 5 frequency=(int)(frequency*10+3);
269 5 if(frequency>1000)
270 5 {
271 6 disbuf[3]=11;
272 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
273 6 frequency=0;
274 6 goto exception;
275 6 }
276 5 }
277 4 while(key3==0);
278 4 }
279 3 }
280 2
281 2 if(key4==0)
282 2 {
283 3 delay10ms();
284 3 if(key4==0)
285 3 {
286 4 switch(number)
287 4 {
288 5 case 0:
289 5 disbuf[3]=10;
290 5 disbuf[2]=10;
291 5 disbuf[1]=10;
292 5 disbuf[0]=4;
293 5 break;
294 5 case 1:
295 5 disbuf[3]=10;
296 5 disbuf[2]=10;
297 5 disbuf[1]=disbuf[0];
298 5 disbuf[0]=4;
299 5 break;
300 5 case 2:
301 5 disbuf[3]=10;
302 5 disbuf[2]=disbuf[1];
303 5 disbuf[1]=disbuf[0];
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 6
304 5 disbuf[0]=4;
305 5 break;
306 5 case 3:
307 5 disbuf[3]=disbuf[2];
308 5 disbuf[2]=disbuf[1];
309 5 disbuf[1]=disbuf[0];
310 5 disbuf[0]=4;
311 5 break;
312 5 }
313 4 number++;
314 4 if(number==4)
315 4 number=0;
316 4
317 4 if(flag==0)
318 4 {
319 5 flag=1;
320 5 frequency=4;
321 5 }
322 4 else
323 4 {
324 5 frequency=(int)(frequency*10+4);
325 5 if(frequency>1000)
326 5 {
327 6 disbuf[3]=11;
328 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
329 6 frequency=0;
330 6 goto exception;
331 6 }
332 5 }
333 4 while(key4==0);
334 4 }
335 3 }
336 2
337 2 if(key5==0)
338 2 {
339 3 delay10ms();
340 3 if(key5==0)
341 3 {
342 4 switch(number)
343 4 {
344 5 case 0:
345 5 disbuf[3]=10;
346 5 disbuf[2]=10;
347 5 disbuf[1]=10;
348 5 disbuf[0]=5;
349 5 break;
350 5 case 1:
351 5 disbuf[3]=10;
352 5 disbuf[2]=10;
353 5 disbuf[1]=disbuf[0];
354 5 disbuf[0]=5;
355 5 break;
356 5 case 2:
357 5 disbuf[3]=10;
358 5 disbuf[2]=disbuf[1];
359 5 disbuf[1]=disbuf[0];
360 5 disbuf[0]=5;
361 5 break;
362 5 case 3:
363 5 disbuf[3]=disbuf[2];
364 5 disbuf[2]=disbuf[1];
365 5 disbuf[1]=disbuf[0];
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 7
366 5 disbuf[0]=5;
367 5 break;
368 5 }
369 4 number++;
370 4 if(number==4)
371 4 number=0;
372 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -