📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 05/17/2012 10:39:23 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\电子技术\Keil3\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <stc89.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4
5 sbit rs=P2^0;
6 sbit rw=P2^1;
7 sbit e=P2^2;
8 #define port P0
9
10 sbit beep=P1^0;
11 sbit led=P1^1;
12
13 uchar buffer[4];
14 uchar n;
15 uchar dat;
16 uchar js;
17
18 bit ks; //开锁
19 uchar wrong;
20 uchar bp; //蜂鸣器时间控制
21
22
23 uchar mima[17];
24 uchar mima_temp[17];
25 uchar mima1[17];
26 uchar mmxg; //密码修改控制
27
28 uchar asc[17]="01234567890ABCDEF";
29
30 void show(uchar c);
31 void lcd_wr(uchar a,uchar c);
32 void delay(uchar c);
33 void send(uchar c);
34 void IAP_Disable();
35 void eeprom_wr();
36 void eeprom_re();
37
38
39 void delay(uchar c) //1ms 误差 -0.651041666667us
40 {
41 1 unsigned char a,b;
42 1
43 1 while(c--)
44 1 {
45 2 for(b=102;b>0;b--)
46 2 for(a=3;a>0;a--);
47 2 }
48 1 }
49
50 void InitUART(void) //9600
51 {
52 1 TMOD = 0x21;
53 1 SCON = 0x50;
54 1 TH1 = 0xFD;
55 1 TL1 = TH1;
C51 COMPILER V8.02 MAIN 05/17/2012 10:39:23 PAGE 2
56 1 PCON = 0x00;
57 1 EA = 1;
58 1 ES = 1;
59 1 TR1 = 1;
60 1 }
61
62
63
64
65
66 uchar lcd_re(uchar a)
67 {
68 1 uchar c;
69 1 e=0;
70 1 rw=1;
71 1 rs=a;
72 1 ;
73 1 ;
74 1 e=1;
75 1 ;
76 1 ;
77 1 e=0;
78 1 c=port;
79 1 return c;
80 1 }
81
82 void busy()
83 {
84 1 uchar i;
85 1 i=1;
86 1 while((lcd_re(0)&0x80)&&i++);
87 1 }
88
89 void lcd_wr(uchar a,uchar c)
90 {
91 1 busy();
92 1 e=0;
93 1 rw=0;
94 1 rs=a;
95 1 port=c;
96 1 ;
97 1 ;
98 1 e=1;
99 1 ;
100 1 ;
101 1 e=0;
102 1 }
103
104 /**************初始化**************/
105
106 void lcd_int(void)
107 {
108 1 delay(15);
109 1 rs=0;
110 1 rw=0;
111 1 port=0x38;
112 1 e=1;
113 1 ;
114 1 ;
115 1 e=0;
116 1 delay(5);
117 1 port=0x38;
C51 COMPILER V8.02 MAIN 05/17/2012 10:39:23 PAGE 3
118 1 e=1;
119 1 ;
120 1 ;
121 1 e=0;
122 1 delay(5);
123 1 port=0x38;
124 1 e=1;
125 1 ;
126 1 ;
127 1 e=0;
128 1 rw=1;
129 1 rs=1;
130 1 lcd_wr(0,0x38); //显示模式设置
131 1 lcd_wr(0,0x08); //关闭显示
132 1 lcd_wr(0,0x01); //清屏
133 1 lcd_wr(0,0x02);
134 1 lcd_wr(0,0x06); //光标又移,整屏不移动
135 1 lcd_wr(0,0x0c); //开显示
136 1
137 1 }
138
139
140 //mm:ss:s
141 void show(uchar c)
142 {
143 1 uchar i;
144 1 lcd_wr(0,0x80);
145 1 lcd_wr(1,'E');
146 1 lcd_wr(1,'n');
147 1 lcd_wr(1,'t');
148 1 lcd_wr(1,'e');
149 1 lcd_wr(1,'r');
150 1 lcd_wr(1,' ');
151 1 lcd_wr(1,'P');
152 1 lcd_wr(1,'a');
153 1 lcd_wr(1,'s');
154 1 lcd_wr(1,'s');
155 1 lcd_wr(1,'W');
156 1 lcd_wr(1,'o');
157 1 lcd_wr(1,'r');
158 1 lcd_wr(1,'d');
159 1 lcd_wr(1,' ');
160 1 if(mmxg==1) lcd_wr(1,'1');
161 1 else if(mmxg==2) lcd_wr(1,'2');
162 1 else lcd_wr(1,' ');
163 1
164 1 lcd_wr(0,0xc0);
165 1 if(c<17)
166 1 {
167 2 for(i=0;i<c;i++)
168 2 lcd_wr(1,'*');
169 2 }
170 1 else
171 1 {
172 2 if(c==110)
173 2 {
174 3 lcd_wr(1,'P');
175 3 lcd_wr(1,'a');
176 3 lcd_wr(1,'s');
177 3 lcd_wr(1,'s');
178 3 lcd_wr(1,'W');
179 3 lcd_wr(1,'o');
C51 COMPILER V8.02 MAIN 05/17/2012 10:39:23 PAGE 4
180 3 lcd_wr(1,'r');
181 3 lcd_wr(1,'d');
182 3 lcd_wr(1,' ');
183 3 lcd_wr(1,'R'); //Ringht
184 3 lcd_wr(1,'i');
185 3 lcd_wr(1,'g');
186 3 lcd_wr(1,'h');
187 3 lcd_wr(1,'t');
188 3 lcd_wr(1,'!');
189 3 }
190 2 if(c==119)
191 2 {
192 3 lcd_wr(1,'P');
193 3 lcd_wr(1,'a');
194 3 lcd_wr(1,'s');
195 3 lcd_wr(1,'s');
196 3 lcd_wr(1,'W');
197 3 lcd_wr(1,'o');
198 3 lcd_wr(1,'r');
199 3 lcd_wr(1,'d');
200 3 lcd_wr(1,' ');
201 3 lcd_wr(1,'W'); //wrong
202 3 lcd_wr(1,'r');
203 3 lcd_wr(1,'o');
204 3 lcd_wr(1,'n');
205 3 lcd_wr(1,'g');
206 3 lcd_wr(1,'!');
207 3 }
208 2 }
209 1 for(i=0;i<16;i++) //写空格,防止显示重叠
210 1 lcd_wr(1,' ');
211 1 lcd_wr(0,0x0c); //开显示
212 1
213 1 }
214
215 uchar mmyz()
216 {
217 1 uchar j;
218 1 for(j=0;j<17;j++)
219 1 {
220 2 send(mima_temp[j]);
221 2 send(mima[j]);
222 2 }
223 1 if(mima_temp[16]==mima[16])
224 1 {
225 2 for(j=0;j<mima[16];j++)
226 2 if(mima_temp[j]!=mima[j]) return 2; //密码错误退出
227 2 wrong=0;
228 2 return 1;
229 2 }
230 1 else return 2;
231 1
232 1 }
233
234 main()
235 {
236 1 uchar i,j;
237 1 uchar k,s;
238 1 eeprom_re();
239 1 if(mima[16]>16)
240 1 {
241 2 for(j=0;j<17;j++)
C51 COMPILER V8.02 MAIN 05/17/2012 10:39:23 PAGE 5
242 2 mima[j]=6;
243 2 }
244 1 lcd_int();
245 1 InitUART();
246 1 ET0=1;
247 1 EX1=1; //开外部中断1
248 1 IT1=1; //下隆沿中断
249 1 show(0);
250 1 while(1)
251 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -