?? 電子密碼鎖.lst
字號:
C51 COMPILER V8.05a 電子密碼薩 05/22/2010 20:16:09 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 電子密碼薩
OBJECT MODULE PLACED IN 電子密碼鎖.OBJ
COMPILER INVOKED BY: F:\keil軟件\C51\BIN\C51.EXE 電子密碼鎖.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************************
2
3 電子密碼鎖主函數(shù),在不斷完善中......
4
5 *******************************************************************************/
6
7 #include<reg51.h>
8 #include<12864.h>
9 #include<keypad.h>
10 #include<24C01.h>
11
12 #define uchar unsigned char
13 #define uint unsigned int
14 sbit LED1=P1^5;
15 sbit LED2=P1^6;
16 sbit INIT=P2^2;
17 sbit SOUND=P1^7;
18
19 uchar idata key[6]={0,0,0,0,0,0};
20 uchar idata iic[6]={0,1,2,3,4,5};
21
22 void press(uchar *s)
23 {
24 1 uchar dat;
25 1 //**************************************************
26 1 P3=0xf0; //保存第一位密碼
27 1 while(P3==0xf0);
28 1 dat=key_scan();
29 1 if((dat!=0x0a)&&(dat!=0x0b))
30 1 { *s=dat;
31 2 Left();
32 2 star_12864(star,0x05,16);
33 2 }
34 1 s++;
35 1 //**************************************************
36 1 P3=0xf0; //保存第二位密碼
37 1 while(P3==0xf0);
38 1 dat=key_scan();
39 1 if((dat!=0x0a)&&(dat!=0x0b))
40 1 { *s=dat;
41 2 Left();
42 2 star_12864(star,0x05,24);
43 2 }
44 1 s++;
45 1 //**************************************************
46 1 P3=0xf0; //保存第三位密碼
47 1 while(P3==0xf0);
48 1 dat=key_scan();
49 1 if((dat!=0x0a)&&(dat!=0x0b))
50 1 { *s=dat;
51 2 Left();
52 2 star_12864(star,0x05,32);
53 2 }
54 1 s++;
55 1 //**************************************************
C51 COMPILER V8.05a 電子密碼薩 05/22/2010 20:16:09 PAGE 2
56 1 P3=0xf0; //保存第四位密碼
57 1 while(P3==0xf0);
58 1 dat=key_scan();
59 1 if((dat!=0x0a)&&(dat!=0x0b))
60 1 { *s=dat;
61 2 Left();
62 2 star_12864(star,0x05,40);
63 2 }
64 1 s++;
65 1 //**************************************************
66 1 P3=0xf0; //保存第五位密碼
67 1 while(P3==0xf0);
68 1 dat=key_scan();
69 1 if((dat!=0x0a)&&(dat!=0x0b))
70 1 { *s=dat;
71 2 Left();
72 2 star_12864(star,0x05,48);
73 2 }
74 1 s++;
75 1 //**************************************************
76 1 P3=0xf0; //保存第六位密碼
77 1 while(P3==0xf0);
78 1 dat=key_scan();
79 1 if((dat!=0x0a)&&(dat!=0x0b))
80 1 { *s=dat;
81 2 Left();
82 2 star_12864(star,0x05,56);
83 2 }
84 1 //**************************************************
85 1 do{P3=0xf0; //鍵入Enter鍵盤繼續(xù)執(zhí)行下面語句,否則等待
86 2 while(P3==0xf0);
87 2 dat=key_scan();
88 2 }while(dat!=0x0b);
89 1 }
90
91 void Delay10ms(void) //延時10ms
92 {
93 1 uint i,j,k;
94 1 for(i=5;i>0;i--)
95 1 for(j=4;j>0;j--)
96 1 for(k=248;k>0;k--);
97 1
98 1 }
99
100 void main()
101 {
102 1 uchar dat;
103 1 uchar i=0,j=0,k;
104 1 uchar x;
105 1 LED1=1;
106 1 LED2=1;
107 1 SOUND=0;
108 1 INIT=1;
109 1 if(INIT==0) //密碼初始化
110 1 {
111 2 x=SendB(iic,0x50,6);
112 2 Delay10ms();
113 2 } //首先從IIC器件中讀出密碼以供下面輸入密碼進行比較
114 1 x=ReadB(iic,0x50,6);
115 1 Init_12864();
116 1 for(i=0;i<150;i++){Delay10ms();}
117 1 //**********************************若密碼不正確,循環(huán)執(zhí)行do{}while()***********************************
C51 COMPILER V8.05a 電子密碼薩 05/22/2010 20:16:09 PAGE 3
-*********
118 1 do{
119 2 LED1=1;
120 2 System(); //顯示:"請輸入密碼"字幕
121 2 press(key);
122 2 if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==i
-ic[5])) //密碼比較,若密碼正確責進入系統(tǒng),若密碼不正確則顯示密碼錯誤,重新輸入密碼
123 2 {
124 3 true();
125 3 do
126 3 {
127 4 P3=0xf0; //鍵入1或2繼續(xù)執(zhí)行下面語句,否則等待
128 4 while(P3==0xf0);
129 4 dat=key_scan();
130 4 }while(dat!=0x01&&dat!=0x02);
131 3 if(dat==1) //開鎖
132 3 {
133 4 LED1=0;
134 4 unlock();
135 4 for(i=0;i<100;i++){Delay10ms();}
136 4 continue;
137 4 }
138 3 if(dat==2) //修改密碼
139 3 {
140 4 do{
141 5 System();
142 5 press(key);
143 5 again();
144 5 press(iic);
145 5 if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(ke
-y[5]==iic[5]))
146 5 {
147 6 succeed(); //修改密碼成功
148 6 for(i=0;i<100;i++){Delay10ms();}
149 6 Delay10ms();
150 6 x=SendB(iic,0x50,6);
151 6 Delay10ms();
152 6 x=ReadB(iic,0x50,6);break;
153 6 }
154 5 else //修改密碼不成功,重新修改
155 5 {
156 6 repeat();
157 6 for(i=0;i<100;i++){Delay10ms();}
158 6 }
159 5 }while(1);
160 4 }
161 3
162 3 }
163 2 else //密碼不正確,重新輸入密碼
164 2 {
165 3 j++;
166 3 if(j==3)
167 3 {
168 4 for(i=0;i<8;i++)
169 4 {
170 5 LED2=0;
171 5 for(k=0;k<5;k++){Delay10ms();}
172 5 LED2=1;
173 5 for(k=0;k<5;k++){Delay10ms();}
174 5 }
175 4 j=0;
176 4 }
C51 COMPILER V8.05a 電子密碼薩 05/22/2010 20:16:09 PAGE 4
177 3 error();
178 3 for(i=0;i<50;i++){Delay10ms();}
179 3 }
180 2 }while(1);
181 1
182 1
183 1
184 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2448 ----
CONSTANT SIZE = 1464 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 32
IDATA SIZE = 14 ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -