📄 sy.lst
字号:
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SY
OBJECT MODULE PLACED IN SY.OBJ
COMPILER INVOKED BY: D:\keil uvision3\C51\BIN\C51.EXE SY.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.H>
2 unsigned char ps[]={1,2,3,4,5};//密码
3 unsigned char code dispbit[]={0x04,0x08,0x10,0x20,
4 0x40,0x80};//数码管片选
5 unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
6 0x6d,0x7d,0x07,0x7f,0x6f,
7 0x00,0x73,0xff};//数码驱动
8 unsigned char dispbuf[6]={11,10,10,10,10,10};//数码管初始化
9 unsigned char dispcount;//变量
10 unsigned char flashcount;//变量
11 unsigned char temp;//数据暂存
12 unsigned char key;//按键
13 unsigned char keycount;//输入数据数目
14 unsigned char pslen=5;//输入数据位数
15 unsigned char getps[6];//输入数据
16 bit keyoverflag;//数据溢出标志
17 bit rightflag;//正确标志
18 bit errorflag;//错误标志
19 unsigned int second3;//三秒计时
20 bit alarmflag;//警报标志
21 unsigned int js=2;
22 unsigned int aa=1;//变量
23 unsigned int bb;//变量
24 unsigned int cc;//变量
25 unsigned int dd;//变量
26 unsigned int ee;//变量
27 sbit K4=P2^4;
28 sbit K5=P2^5;
29 sbit K6=P2^6;
30 sbit K7=P2^7;
31 sbit L=P3^1;
32 void main(void)
33 {
34 1 unsigned char i,j;
35 1 TMOD=0x01;
36 1 TH0=(65536-500)/256;
37 1 TL0=(65536-500)%256;
38 1 TR0=1;
39 1 ET0=1;
40 1 EA=1;
41 1 while(1)
42 1 {
43 2 P2=0xff;
44 2 K4=0;
45 2 temp=P2;
46 2 temp=temp & 0x0f;
47 2 if (temp!=0x0f)
48 2 {
49 3 for(i=10;i>0;i--)
50 3 for(j=248;j>0;j--);
51 3 temp=P2;
52 3 temp=temp & 0x0f;
53 3 if (temp!=0x0f)
54 3 {
55 4 temp=P2;
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 2
56 4 temp=temp & 0x0f;
57 4 switch(temp)
58 4 {
59 5 case 0x0e:
60 5 key=4;
61 5 break;
62 5 case 0x0d:
63 5 key=3;
64 5 break;
65 5 case 0x0b:
66 5 key=2;
67 5 break;
68 5 case 0x07:
69 5 key=1;
70 5 break;
71 5 }
72 4 temp=P2;
73 4 if((key>=0) && (key<10))
74 4 { keycount++;
75 5 if(keycount<6)
76 5 {
77 6 getps[keycount]=key;
78 6 dispbuf[keycount]=12;
79 6 }
80 5 if(keycount==5)
81 5 {
82 6 keycount=5;
83 6 }
84 5 else if(keycount>5)
85 5 {
86 6 keycount=5;
87 6 keyoverflag=1;//key overflow
88 6 }
89 5 }
90 4 else if(key==11)//delete key
91 4 {
92 5 if(keycount>0)
93 5 {
94 6 getps[keycount]=0;
95 6 dispbuf[keycount]=10;
96 6 keycount--;
97 6 }
98 5 else
99 5 {
100 6 keyoverflag=1;
101 6 }
102 5 }
103 4 else if(key==10)//enter key
104 4 {
105 5 if(keycount!=pslen)//输入数据不是六位
106 5 {
107 6 keyoverflag=1;
108 6 second3=0;
109 6 }
110 5 else
111 5 {
112 6 for(i=0;i<keycount;i++)
113 6 {
114 7 if(getps[i+1]!=ps[i])
115 7 {
116 8 i=keycount;
117 8 errorflag=1;
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 3
118 8 rightflag=0;
119 8 second3=0;
120 8 goto a;
121 8 }
122 7 }
123 6 errorflag=0;
124 6 rightflag=1;
125 6 a: i=keycount;
126 6 }
127 5 }
128 4 temp=temp & 0x0f;
129 4 while(temp!=0x0f)
130 4 {
131 5 temp=P2;
132 5 temp=temp & 0x0f;
133 5 }
134 4 }
135 3 }
136 2
137 2
138 2 P2=0xff;
139 2 K5=0;
140 2 temp=P2;
141 2 temp=temp & 0x0f;
142 2 if (temp!=0x0f)
143 2 {
144 3 for(i=10;i>0;i--)
145 3 for(j=248;j>0;j--);
146 3 temp=P2;
147 3 temp=temp & 0x0f;
148 3 if (temp!=0x0f)
149 3 {
150 4 temp=P2;
151 4 temp=temp & 0x0f;
152 4 switch(temp)
153 4 {
154 5 case 0x0e:
155 5 key=8;
156 5 break;
157 5 case 0x0d:
158 5 key=7;
159 5 break;
160 5 case 0x0b:
161 5 key=6;
162 5 break;
163 5 case 0x07:
164 5 key=5;
165 5 break;
166 5 }
167 4 temp=P2;
168 4 if((key>=0) && (key<10))
169 4 {keycount++;
170 5 if(keycount<6)
171 5 {
172 6 getps[keycount]=key;
173 6 dispbuf[keycount]=12;
174 6 }
175 5 if(keycount==5)
176 5 {
177 6 keycount=5;
178 6 }
179 5 else if(keycount>5)
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 4
180 5 {
181 6 keycount=5;
182 6 keyoverflag=1;//key overflow
183 6 }
184 5 }
185 4 else if(key==11)//delete key
186 4 {
187 5 if(keycount>0)
188 5 {
189 6 getps[keycount]=0;
190 6 dispbuf[keycount]=10;
191 6 keycount--;
192 6 }
193 5 else
194 5 {
195 6 keyoverflag=1;
196 6 }
197 5 }
198 4 else if(key==10)//enter key
199 4 {
200 5 if(keycount!=pslen)
201 5 {
202 6 keyoverflag=1;
203 6 second3=0;
204 6 }
205 5 else
206 5 {
207 6 for(i=0;i<keycount;i++)
208 6 {
209 7 if(getps[i+1]!=ps[i])
210 7 {
211 8 i=keycount;
212 8 errorflag=1;
213 8 rightflag=0;
214 8 second3=0;
215 8 goto a4;
216 8 }
217 7 }
218 6 errorflag=0;
219 6 rightflag=1;
220 6 a4: i=keycount;
221 6 }
222 5 }
223 4 temp=temp & 0x0f;
224 4 while(temp!=0x0f)
225 4 {
226 5 temp=P2;
227 5 temp=temp & 0x0f;
228 5 }
229 4 }
230 3 }
231 2
232 2 P2=0xff;
233 2 K6=0;
234 2 temp=P2;
235 2 temp=temp & 0x0f;
236 2 if (temp!=0x0f)
237 2 {
238 3 for(i=10;i>0;i--)
239 3 for(j=248;j>0;j--);
240 3 temp=P2;
241 3 temp=temp & 0x0f;
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 5
242 3 if(temp!=0x0f)
243 3 {
244 4 temp=P2;
245 4 temp=temp & 0x0f;
246 4 switch(temp)
247 4 {
248 5 case 0x0e:
249 5 keyoverflag=1;
250 5 break;
251 5 case 0x0d:
252 5 key=11;
253 5 break;
254 5 case 0x0b:
255 5 key=10;
256 5 break;
257 5 case 0x07:
258 5 key=9;
259 5 break;
260 5 }
261 4 temp=P2;
262 4 if((key>=0) && (key<10))
263 4 {keycount++;
264 5 if(keycount<6)
265 5 {
266 6 getps[keycount]=key;
267 6 dispbuf[keycount]=12;
268 6 }
269 5 if(keycount==5)
270 5 {
271 6 keycount=5;
272 6 }
273 5 else if(keycount>5)
274 5 {
275 6 keycount=5;
276 6 keyoverflag=1;//key overflow
277 6 }
278 5 }
279 4 else if(key==11)//delete key
280 4 {
281 5 if(keycount>0)
282 5 {
283 6 getps[keycount]=0;
284 6 dispbuf[keycount]=10;
285 6 keycount--;
286 6 }
287 5 else
288 5 {
289 6 keyoverflag=1;
290 6 }
291 5 }
292 4 else if(key==10)//enter key
293 4 {
294 5 if(keycount!=pslen)
295 5 {
296 6 keyoverflag=1;
297 6 second3=0;
298 6 }
299 5 else
300 5 {
301 6 for(i=0;i<keycount;i++)
302 6 {
303 7 if(getps[i+1]!=ps[i])
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 6
304 7 {
305 8 i=keycount;
306 8 errorflag=1;
307 8 rightflag=0;
308 8 second3=0;
309 8 goto a3;
310 8 }
311 7 }
312 6 errorflag=0;
313 6 rightflag=1;
314 6 a3: i=keycount;
315 6 }
316 5 }
317 4 temp=temp & 0x0f;
318 4 while(temp!=0x0f)
319 4 {
320 5 temp=P2;
321 5 temp=temp & 0x0f;
322 5 }
323 4 }
324 3 }
325 2
326 2 P2=0xff;
327 2 K7=0;
328 2 temp=P2;
329 2 temp=temp & 0x0f;
330 2 if (temp!=0x0f)
331 2 {
332 3 for(i=10;i>0;i--)
333 3 for(j=248;j>0;j--);
334 3 temp=P2;
335 3 temp=temp & 0x0f;
336 3 if (temp!=0x0f)
337 3 {
338 4 temp=P2;
339 4 temp=temp & 0x0f;
340 4 switch(temp)
341 4 {
342 5 case 0x0e:
343 5 keyoverflag=1;
344 5 break;
345 5 case 0x0d:
346 5 keyoverflag=1;
347 5 break;
348 5 case 0x0b:
349 5 keyoverflag=1;
350 5 break;
351 5 case 0x07:
352 5 keyoverflag=1;
353 5 break;
354 5 }
355 4 temp=P2;
356 4 if((key>=0) && (key<10))
357 4 { keycount++;
358 5 if(keycount<6)
359 5 {
360 6 getps[keycount]=key;
361 6 dispbuf[keycount]=12;
362 6 }
363 5 if(keycount==5)
364 5 {
365 6 keycount=5;
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 7
366 6 }
367 5 else if(keycount>5)
368 5 {
369 6 keycount=5;
370 6 keyoverflag=1;//key overflow
371 6 }
372 5 }
373 4 else if(key==11)//delete key
374 4 {
375 5 if(keycount>0)
376 5 {
377 6 getps[keycount]=0;
378 6 dispbuf[keycount]=10;
379 6 keycount--;
380 6 }
381 5 else
382 5 {
383 6 keyoverflag=1;
384 6 }
385 5 }
386 4 else if(key==10)//enter key
387 4 {
388 5 if(keycount!=pslen)
389 5 {
390 6 keyoverflag=1;
391 6 second3=0;
392 6 }
393 5 else
394 5 {
395 6 for(i=0;i<keycount;i++)
396 6 {
397 7 if(getps[i+1]!=ps[i])
398 7 {
399 8 i=keycount;
400 8 errorflag=1;
401 8 rightflag=0;
402 8 second3=0;
403 8 goto a2;
404 8 }
405 7 }
406 6 errorflag=0;
407 6 rightflag=1;
408 6 a2: i=keycount;
409 6 }
410 5 }
411 4 temp=temp & 0x0f;
412 4 while(temp!=0x0f)
413 4 {
414 5 temp=P2;
415 5 temp=temp & 0x0f;
416 5 }
417 4 }
418 3 }
419 2 }
420 1 }
421
422
423 void format(void)
424 {keycount=0;
425 1 for(ee=0;ee<=pslen;ee++)
426 1 getps[ee]=0;
427 1 dispbuf[0]=11;
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 8
428 1 for(ee=1;ee<=pslen;ee++)
429 1 dispbuf[ee]=10;
430 1 errorflag=0;
431 1 rightflag=0;
432 1 keyoverflag=0;
433 1 P0=0xff;
434 1 js=2;
435 1 }
436
437
438 void t0(void) interrupt 1 using 0
439 {unsigned char m;
440 1 TH0=(65536-500)/256;
441 1 TL0=(65536-500)%256;
442 1 flashcount++;
443 1 if(flashcount==8)
444 1 {
445 2 flashcount=0;
446 2 P1=dispcode[dispbuf[dispcount]];
447 2 P3=dispbit[dispcount];
448 2 dispcount++;
449 2 if(dispcount==6)
450 2 {
451 3 dispcount=0;
452 3 }
453 2 }
454 1 if((errorflag==1) && (rightflag==0))
455 1 {for(m=0;m<=4;m++)
456 2 dispbuf[m]=10;
457 2 bb++;
458 2 if(bb==400)
459 2 {aa=aa*2;
460 3 if(aa==0)
461 3 {aa=1;}
462 3 bb=0;
463 3 L=~L;
464 3 }
465 2 P0=~aa;
466 2 second3++;
467 2 if(second3==3200)
468 2 {dispbuf[5]=js;
469 3 second3=0;
470 3 js--;
471 3 }
472 2 if(dispbuf[5]==0)
473 2 {dispbuf[5]=js;
474 3 format();
475 3 }
476 2 }
477 1 else if((errorflag==0) && (rightflag==1))
478 1 {
479 2 P0=0x00;
480 2 cc++;
481 2 if(cc==10000)
482 2 {
483 3 P0=0xff;
484 3 format();
485 3 cc=0;
486 3 }
487 2 }
488 1 if(keyoverflag==1)
489 1 {for(m=0;m<=4;m++)
C51 COMPILER V7.50 SY 08/03/2007 16:41:09 PAGE 9
490 2 dispbuf[m]=10;
491 2 P0=0x7e;
492 2 second3++;
493 2 if(second3==3200)
494 2 {dispbuf[5]=js;
495 3 second3=0;
496 3 js--;
497 3 }
498 2 if(dispbuf[5]==0)
499 2 {dispbuf[5]=js;
500 3 format();
501 3 }
502 2 }
503 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1418 ----
CONSTANT SIZE = 19 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 37 ----
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -