📄 at89c2051单片机密码锁.lst
字号:
C51 COMPILER V8.02 AT89C2051单芲籣密码薩 08/07/2007 14:49:08 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AT89C2051单芲籣密码薩
OBJECT MODULE PLACED IN AT89C2051单片机密码锁.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AT89C2051单片机密码锁.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x51.h>
2 unsigned char led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
3 unsigned char password[7]={0,1,3,5,7,9,0};
4 unsigned char getword[7];
5 unsigned char count,bitcount;
6 unsigned char k,wrongcount;
7 unsigned long ul;
8 unsigned int n;
9 bit flag;
10 void delay10ms(void)
11 {
12 1 unsigned char i,j;
13 1 for(i=20;i>0;i--)
14 1 for(j=248;j>0;j--);
15 1 }
16 void alarmring(void) //输出报警声音
17 {
18 1 for(k=0;k<2;k++)
19 1 {
20 2 for(ul=0;ul<1000;ul++)
21 2 {
22 3 for(n=0;n<80;n++);
23 3 P3_7=~P3_7;
24 3 }
25 2 for(ul=0;ul<800;ul++)
26 2 {
27 3 for(n=0;n<100;n++);
28 3 P3_7=~P3_7;
29 3 }
30 2 }
31 1 }
32 void delay3s(void) //延时程序
33 {
34 1 unsigned char i;
35 1 for(i=3;i>0;i--)
36 1 {
37 2 for(ul=0;ul<1000;ul++)
38 2 {
39 3 for(n=0;n<80;n++);
40 3 P3_4=~P3_4;
41 3 if((P3_0==0)||(P3_1)==0)
42 3 {
43 4 delay10ms();
44 4 if((P3_0==0)||(P3_1)==0)
45 4 {
46 5 i=3;
47 5 alarmring();
48 5 }
49 4 }
50 3 }
51 2 for(ul=0;ul<800;ul++)
52 2 {
53 3 for(n=0;n<100;n++);
54 3 P3_4=~P3_4;
55 3 if((P3_0==0)||(P3_1)==0)
C51 COMPILER V8.02 AT89C2051单芲籣密码薩 08/07/2007 14:49:08 PAGE 2
56 3 {
57 4 delay10ms();
58 4 if((P3_0==0)||(P3_1)==0)
59 4 {
60 5 i=3;
61 5 alarmring();
62 5 }
63 4 }
64 3 }
65 2 }
66 1 }
67 void rightring(void) //输出叮咚声音
68 {
69 1 for(ul=0;ul<800;ul++)
70 1 {
71 2 for(n=0;n<40;n++);
72 2 P3_7=~P3_7;
73 2 }
74 1 for(ul=0;ul<1000;ul++)
75 1 {
76 2 for(n=0;n<60;n++);
77 2 P3_7=~P3_7;
78 2 }
79 1 }
80 comp(void) //密码比较程序
81 {
82 1
83 1 unsigned char m;
84 1 for (m=1;m<6;m++)
85 1 {
86 2 if (getword[m]==password[m])
87 2 flag = 1;
88 2 else
89 2 {
90 3 flag = 0;
91 3 m = 6;
92 3 wrongcount++;
93 3 }
94 2 }
95 1 return(flag);
96 1 }
97 void pressring(void) //输出按键声音
98 {
99 1 unsigned long c;
100 1 unsigned int n;
101 1 for(c=0;c<50;c++)
102 1 {
103 2 for(n=0;n<50;n++); //延时
104 2 P3_7=~P3_7; //取反输出到喇叭的信号
105 2 }
106 1 }
107 void main(void)
108 {
109 1 bitcount=0;
110 1 count=0;
111 1 P3_2=1;
112 1 P3_3=0;
113 1 P3_4=0;
114 1 P3_5=0;
115 1 P3_7=0;
116 1 k=0;
117 1 while(1)
C51 COMPILER V8.02 AT89C2051单芲籣密码薩 08/07/2007 14:49:08 PAGE 3
118 1 {
119 2 if(P3_1==0)
120 2 {
121 3 pressring();
122 3 delay10ms();
123 3 if(P3_1==0)
124 3 {
125 4 count++;
126 4 if(count>9)
127 4 {
128 5 count=0;
129 5 }
130 4 P1=led[count];
131 4 while(P3_1==0);
132 4 }
133 3 }
134 2 if(P3_0==0)
135 2 {
136 3 pressring();
137 3 delay10ms();
138 3 if(P3_0==0)
139 3 {
140 4 bitcount++;
141 4 if(bitcount<7)
142 4 P1=led[bitcount];
143 4 getword[--bitcount]=count;
144 4 bitcount++;
145 4 count=0;
146 4 if(bitcount>6)
147 4 {
148 5
149 5
150 5 bitcount=0;
151 5 P1=led[bitcount];
152 5 comp();
153 5 if(flag==1)
154 5 {
155 6 k=0;
156 6 P3_3=~P3_3;
157 6 P3_2=~P3_2;
158 6 rightring();
159 6 }
160 5 if(flag==0)
161 5 {
162 6 alarmring();
163 6 //k++;
164 6 if(wrongcount>2)
165 6 {
166 7 delay3s();
167 7 }
168 6 }
169 5
170 5 }
171 4 while(P3_0==0);
172 4 }
173 3 }
174 2
175 2 }
176 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.02 AT89C2051单芲籣密码薩 08/07/2007 14:49:08 PAGE 4
CODE SIZE = 789 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 5
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -