📄 lock.lst
字号:
C51 COMPILER V7.00 LOCK 03/13/2006 09:30:19 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE LOCK
OBJECT MODULE PLACED IN .\lock.OBJ
COMPILER INVOKED BY: d:\Keil_C\C51\BIN\C51.EXE .\lock.c DEBUG OBJECTEXTEND
stmt level source
1 #include <at89x51.h>
2 unsigned char number[]={10,10,10,10,10,10,10,11};
3 unsigned char led[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0x10,0xce,0x9c,
4 0xce,0x9e,0xec,0xde,0x01,0x8c,0x00};
5 unsigned char scan[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
6 unsigned long num=0;
7 unsigned char i=0,m=0;
8 unsigned char oc=0,set=0;
9 unsigned char key[]={0,0,0,0,0,0,0};
10 unsigned char num2[]={10,10,10,10,10,10,10};
11 bit s=0;
12
13 unsigned long ten (unsigned char n)
14 {
15 1 unsigned long tens=1;
16 1 for(n;n>0;n--)
17 1 {
18 2 tens=tens*10;
19 2 }
20 1 return tens;
21 1 }
22
23 void putnum (unsigned char t)
24 {
25 1 unsigned char n=t-1;
26 1 unsigned long num1=num;
27 1 number[n]=num1/ten(n);
28 1 for(n;n>0;n--)
29 1 {
30 2 number[n-1]=num1%ten(n)/ten(n-1);
31 2 }
32 1 }
33
34 void setnum (unsigned char t)
35 {
36 1 if (i!=7)
37 1 {
38 2 num=num*10+t;
39 2 i++;
40 2 putnum(i);
41 2 }
42 1 }
43
44 void time0 (void) interrupt 1
45 {
46 1 TH0=(65536-3000)/256;
47 1 TL0=(65536-3000)%256;
48 1 P0=led[number[m]];
49 1 P2=scan[m];
50 1 m++;
51 1 if(m==8) m=0;
52 1 }
53
54 void delay (void)
55 {
C51 COMPILER V7.00 LOCK 03/13/2006 09:30:19 PAGE 2
56 1 unsigned char x,y,z;
57 1 for(x=10;x>0;x--)
58 1 for(y=10;y>0;y--)
59 1 for(z=248;z>0;z--);
60 1 }
61
62 void error (void)
63 {
64 1 P1_3=1;
65 1 number[0]=17;
66 1 number[1]=17;
67 1 number[2]=19;
68 1 number[3]=18;
69 1 number[4]=0;
70 1 number[5]=18;
71 1 number[6]=18;
72 1 number[7]=14;
73 1 delay();
74 1 delay();
75 1 number[0]=17;
76 1 number[1]=19;
77 1 number[2]=17;
78 1 delay();
79 1 delay();
80 1 number[0]=19;
81 1 number[1]=17;
82 1 number[2]=17;
83 1 delay();
84 1 delay();
85 1 P1_3=0;
86 1 }
87
88 void main (void)
89 {
90 1 TMOD=0x01;
91 1 TH0=(65536-3000)/256;
92 1 TL0=(65536-3000)%256;
93 1 ET0=1;
94 1 EA=1;
95 1 TR0=1;
96 1 while(1)
97 1 {
98 2 P3=0xef;
99 2 if(P3!=0xef)
100 2 {
101 3 delay();
102 3 if(P3!=0xef)
103 3 {
104 4 switch (P3)
105 4 {
106 5 case 0xee:
107 5 if(oc==0)
108 5 {
109 6 setnum(0);
110 6 }
111 5 if(oc==1)
112 5 {
113 6 if(set==1)
114 6 {
115 7 setnum(0);
116 7 }
117 6 }
C51 COMPILER V7.00 LOCK 03/13/2006 09:30:19 PAGE 3
118 5 break;//col1
119 5 case 0xed:
120 5 if(oc==1)
121 5 {
122 6 if(set==0)
123 6 {
124 7 P1_4=0;
125 7 }
126 6 }
127 5 break;//lock open
128 5 case 0xeb:
129 5 if(oc==1)
130 5 {
131 6 if(set==0)
132 6 {
133 7 P1_4=1;
134 7 }
135 6 }
136 5 break;//lock close
137 5 case 0xe7:
138 5 if(oc==1)
139 5 {
140 6 set=1;
141 6 number[0]=10;
142 6 number[1]=10;
143 6 number[2]=10;
144 6 number[3]=10;
145 6 number[4]=10;
146 6 number[5]=10;
147 6 number[6]=10;
148 6 number[7]=12;
149 6 }
150 5 break;//setting key
151 5 }
152 4 }
153 3 while(P3!=0xef);
154 3 }//P3=0xfe row4
155 2 P3=0xdf;
156 2 if(P3!=0xdf)
157 2 {
158 3 delay();
159 3 if(P3!=0xdf)
160 3 {
161 4 switch (P3)
162 4 {
163 5 case 0xde:
164 5 if(oc==0)
165 5 {
166 6 setnum(7);
167 6 }
168 5 if(oc==1)
169 5 {
170 6 if(set==1)
171 6 {
172 7 setnum(7);
173 7 }
174 6 }
175 5 break;//col1
176 5 case 0xdd:
177 5 if(oc==0)
178 5 {
179 6 setnum(8);
C51 COMPILER V7.00 LOCK 03/13/2006 09:30:19 PAGE 4
180 6 }
181 5 if(oc==1)
182 5 {
183 6 if(set==1)
184 6 {
185 7 setnum(8);
186 7 }
187 6 }
188 5 break;
189 5 case 0xdb:
190 5 if(oc==0)
191 5 {
192 6 setnum(9);
193 6 }
194 5 if(oc==1)
195 5 {
196 6 if(set==1)
197 6 {
198 7 setnum(9);
199 7 }
200 6 }
201 5 break;
202 5 case 0xd7:
203 5 if(oc==1)
204 5 {
205 6 if(set==0)
206 6 {
207 7 number[0]=10;
208 7 number[1]=10;
209 7 number[2]=10;
210 7 number[3]=10;
211 7 number[4]=10;
212 7 number[5]=10;
213 7 number[6]=10;
214 7 number[7]=11;
215 7 i=0;
216 7 num=0;
217 7 oc=0;
218 7 }
219 6 if(set==1)
220 6 {
221 7 number[0]=17;
222 7 number[1]=16;
223 7 number[2]=15;
224 7 number[3]=1;
225 7 number[4]=15;
226 7 number[5]=14;
227 7 number[6]=13;
228 7 number[7]=0;
229 7 i=0;
230 7 num=0;
231 7 set=0;
232 7 }
233 6 }
234 5 break;//cancel
235 5 }
236 4 }
237 3 while(P3!=0xdf);
238 3 }//P3=0xde row3
239 2 P3=0xbf;
240 2 if(P3!=0xbf)
241 2 {
C51 COMPILER V7.00 LOCK 03/13/2006 09:30:19 PAGE 5
242 3 delay();
243 3 if(P3!=0xbf)
244 3 {
245 4 switch (P3)
246 4 {
247 5 case 0xbe:
248 5 if(oc==0)
249 5 {
250 6 setnum(4);
251 6 }
252 5 if(oc==1)
253 5 {
254 6 if(set==1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -