📄 dianzimimasuo.lst
字号:
C51 COMPILER V9.01 DIANZIMIMASUO 04/09/2012 09:13:21 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE DIANZIMIMASUO
OBJECT MODULE PLACED IN dianzimimasuo.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE dianzimimasuo.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include<reg52.h>
4 #include<intrins.h>
5 // #include<c02.h>
6 #define uchar unsigned char
7 #define uint unsigned int
8 sbit key=P3^2;
9 sbit cs=P2^7;
10 sbit dat=P3^6;
11 sbit clk=P3^7;
12 sbit bill=P1^6;
13 // #ifndef _24c02_H_
14 // #define _24c02_H_ //24c02驱动程序
15 #define WriteDeviceAddress 0xa0
16 #define ReadDeviceAddress 0xa1
17 sbit SDA=P3^5;
18 sbit SCK=P3^4;
19 void delay10ms(void)
20 {unsigned char i,j;
21 1 for(i=20;i>0;i--)
22 1 for(j=248;j>0;j--);
23 1 }
24 void DelayWait()
25 { _nop_();
26 1 _nop_();
27 1 _nop_();
28 1 _nop_();
29 1 _nop_();
30 1 _nop_();
31 1 _nop_();
32 1 }
33 void Start_Cond()
34 { SDA=1;
35 1 DelayWait();
36 1 SCK=1;
37 1 DelayWait();
38 1 SDA=0;
39 1 DelayWait();
40 1 SCK=0;
41 1 }
42 void Stop_Cond()
43 { SDA=0;
44 1 DelayWait();
45 1 SCK=1;
46 1 DelayWait();
47 1 SDA=1;
48 1 DelayWait();
49 1 SCK=0;
50 1 }
51 void Ack()
52 { SDA=0;
53 1 SCK=1;
54 1 DelayWait();
55 1 SCK=0;
C51 COMPILER V9.01 DIANZIMIMASUO 04/09/2012 09:13:21 PAGE 2
56 1 DelayWait();
57 1 }
58 void NoAck()
59 { unsigned char i;
60 1 SDA=1;
61 1 _nop_();
62 1 SCK=1;
63 1 DelayWait();
64 1 while((SDA==1)&&(i<250))i++;
65 1 SCK=0;
66 1 DelayWait();
67 1 }
68 bit Write8Bit(unsigned char input)
69 { unsigned char i;
70 1 for(i=0;i<8;i++)
71 1 { SCK=0;
72 2 input<<=1;
73 2 SDA=CY;
74 2 DelayWait();
75 2 SCK=1;
76 2 DelayWait();
77 2 SCK=0;
78 2 }
79 1 SCK=0;
80 1 DelayWait();
81 1 SDA=1;
82 1 DelayWait();
83 1 return(CY);
84 1 }
85 unsigned char Read8Bit()
86 { unsigned char i,j=0;
87 1 SCK=0;
88 1 DelayWait();
89 1 SDA=1;
90 1 DelayWait();
91 1 for(i=8;i!=0;i--)
92 1 { SCK=1;
93 2 DelayWait();
94 2 j=(j<<1)|SDA;
95 2 SCK=0;
96 2 DelayWait();
97 2 }
98 1 return j;
99 1 }
100 unsigned char Read_one_Flash(unsigned char nAddr)
101 { unsigned char Data;
102 1 Start_Cond();
103 1 Write8Bit(WriteDeviceAddress);
104 1 NoAck();
105 1 Write8Bit(nAddr);
106 1 NoAck();
107 1 Start_Cond();
108 1 DelayWait();
109 1 Write8Bit(ReadDeviceAddress);
110 1 NoAck();
111 1 Data=Read8Bit();
112 1 Stop_Cond();
113 1 return(Data);
114 1 }
115 void Write_one_Flash(unsigned char nAddr,unsigned char Data)
116 { Start_Cond();
117 1 Write8Bit(WriteDeviceAddress);
C51 COMPILER V9.01 DIANZIMIMASUO 04/09/2012 09:13:21 PAGE 3
118 1 NoAck();
119 1 Write8Bit(nAddr);
120 1 NoAck();
121 1 Write8Bit(Data);
122 1 NoAck();
123 1 Stop_Cond();
124 1 }
125 void Read_Flash(unsigned char *nContent,unsigned char nAddr,unsigned char nLen)
126 { unsigned char count;
127 1 for(count=0;count<nLen;count++)
128 1 {*(nContent+count)=Read_one_Flash (nAddr+count);}
129 1 }
130 void Write_Flash(unsigned char *nContent,unsigned char nAddr,unsigned char nLen)
131 { unsigned char temp;
132 1 unsigned char count;
133 1 for(count=0;count<nLen;count++)
134 1 {temp=*(nContent+count);
135 2 Write_one_Flash((nAddr+count),temp);
136 2 delay10ms();
137 2 delay10ms();
138 2 }
139 1 }
140 // #endif
141 uchar b[6]={0x01,0x02,0x03,0x04,0x05,0x06},c[6]={0x02,0x03,0x04,0x05,0x06,0x07};
142 uchar *q,*r,count;
143 void first(void)
144 { q=b;r=c;
145 1 Write_Flash(q,0x00,6);
146 1 Write_Flash(r,0x06,6);
147 1 }
148 void delayus(uchar i)
149 {uchar j;
150 1 do
151 1 {for(j=0;j<8;j++);
152 2 }while(i--);
153 1 }
154 void delayms(uchar i)
155 {uint j;
156 1 do
157 1 {for(j=0;j<333;j++);
158 2 }while(i--);
159 1 }
160 void bill1(void)//输入密码正确
161 { uchar i=2;
162 1 while(i)
163 1 { delayms(22);
164 2 delayms(22);
165 2 bill=0;
166 2 delayms(22);
167 2 delayms(22);
168 2 bill=1;
169 2 --i;
170 2 }
171 1 }
172 void bill2(void)//输入密码错误
173 { uchar i=10;
174 1 while(i)
175 1 { delayms(7);
176 2 delayms(7);
177 2 bill=0;
178 2 delayms(7);
179 2 delayms(7);
C51 COMPILER V9.01 DIANZIMIMASUO 04/09/2012 09:13:21 PAGE 4
180 2 bill=1;
181 2 --i;
182 2 }
183 1 }
184 void send(uchar j)
185 {uchar i;
186 1 clk=0;
187 1 delayus(5);
188 1 for(i=0;i<8;i++)
189 1 {if(j&0x80)
190 2 dat=1;
191 2 else
192 2 dat=0;
193 2 clk=1;
194 2 delayus(1);
195 2 clk=0;
196 2 delayus(1);
197 2 j=j<<1;
198 2 }
199 1 dat=0;
200 1 return;
201 1 }
202 uchar receive()
203 { uchar i,j;
204 1 j=1;
205 1 clk=0;
206 1 dat=1;
207 1 delayus(5);
208 1 for(i=0;i<8;i++)
209 1 { clk=1;
210 2 delayus(1);
211 2 j=j*2;
212 2 if(dat)
213 2 j|=0x01;
214 2 clk=0;
215 2 delayus(1);
216 2 }
217 1 dat=0;
218 1 return j;
219 1 }
220 bit compare(uchar *string1,uchar *string2)
221 {uchar t;
222 1 for(t=0;t<6;t++)
223 1 {if(string1[t]!=string2[t])
224 2 return(0);
225 2 }
226 1 return(1);
227 1 }
228 void main()
229 {bit js,k,jp;
230 1 uchar i,keynum,s;
231 1 uchar a[7],d[6],*p,*u;
232 1 first();
233 1 p=a;u=d;
234 1 Read_Flash(u,0x06,6);
235 1 count=0;
236 1
237 1 k=0;
238 1 cs=1;
239 1 key=1;
240 1 clk=0;
241 1 dat=0;
C51 COMPILER V9.01 DIANZIMIMASUO 04/09/2012 09:13:21 PAGE 5
242 1 delayms(25);
243 1 cs=0;
244 1 send(0xa4);
245 1 cs=1;
246 1 while(1)
247 1 { for(count=0;count<7;count++)
248 2 { if(key==0)
249 3 { cs=0;
250 4 send(0x15);
251 4 keynum=receive();
252 4 cs=1;
253 4 switch(keynum)
254 4 { case 0x1e: i=0x0d;break; //0x0d,改密键
255 5 case 0x16: i=0x0c;break;
256 5 case 0x0e: i=0x0b;break;
257 5 case 0x06: i=0x0a;break;
258 5 case 0x1d: i=0x0e;break; //0x0e,取消键
259 5 case 0x15: i=0x09;break;
260 5 case 0x0d: i=0x06;break;
261 5 case 0x05: i=0x03;break;
262 5 case 0x1c: i=0x0f;break; //0x0f,确定键
263 5 case 0x14: i=0x08;break;
264 5 case 0x0c: i=0x05;break;
265 5 case 0x04: i=0x02;break;
266 5 case 0x1b: i=0x00;break;
267 5 case 0x13: i=0x07;break;
268 5 case 0x0b: i=0x04;break;
269 5 case 0x03: i=0x01;break;
270 5 default : break;
271 5 }
272 4 if(count<6)
273 4 { if((i!=0x0f)&&(i!=0x0e)&&(i!=0x0d))
274 5 {cs=0;send(0xcb);send(0x00);cs=1;a[count]=i;} }
275 4 if(i==0x0e)
276 4 {count=0;cs=0;send(0xa4);cs=1;}
277 4 if((i=0x0f)&&(count==6))
278 4 {count=0;cs=0;send(0xcb);send(0x0f);cs=1;
279 5 js=compare(p,q); jp=compare(p,u); k=js|jp;
280 5 if(k) bill1(); else bill2(); }
281 4 if((i=0x0d)&&k)
282 4 {cs=0;send(0xcb);send(0x0d);cs=1;count=0;
283 5 for(s=0;s<6;s++)
284 5 {d[s]=a[s];} Write_Flash(u,0x06,6);}
285 4 while(key==0);
286 4 }
287 3 while(key!=0);
288 3 cs=0;
289 3 send(0xa0);
290 3 cs=1;
291 3 } } }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1015 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 38
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -