📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 04/02/2007 15:23:04 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE OPTIMIZE(6,SPEED) BROWSE INCDIR(.\;.\c51) DEFINE(KEIL) DEBUG O
-BJECTEXTEND PRINT(.\lst\main.lst) OBJECT(.\obj\main.obj)
stmt level source
1 /*验证1:读卡序列号函数readsnr(cardsnr)*/
2
3 #include "main.h"
4 #include "rc500.h"
5 #include "lcd.h"
6 #include "led.h"
7 #include " VIIC_C51.H"
8 uchar idata t_buff[16],cardsnr[4];
9 uchar xdata buff[16];
10 unsigned long keynumber;
11 unsigned char disp_buff[6];
12 unsigned char keybuff[6];
13 uint tage;
14 bit T0IR;
15 bit dataconctrl;
16 bit keyflag;
17 uint consmeny;
18 uint d;
19 ////////////////////////////////////////////////////////////
20
21
22 time0() interrupt 1 using 1 /*50ms*/
23 {
24 1 if(tage)
25 1 tage--; // Decrease timeout counter
26 1 if(!tage)
27 1 {
28 2 T0IR = 1; // Set timeout state
29 2 TR0 = 0;
30 2 ES=1; //when the time is out,enable ES,can access eeprom this time
31 2
32 2 }
33 1 TF0 = 0;
34 1
35 1
36 1 }
37
38 startwait(uchar time)
39 { tage=time*2;T0IR=0;
40 1 TR0=1;ET0=1;EA=1;ES=0;
41 1
42 1 }
43
44 void putbyte(uchar c)
45 {
46 1 SBUF=c;
47 1 while(!TI);TI=0;
48 1 }
49
50 void urtinit() //串口初始化
51 { TMOD = 0x21;
52 1 PCON = 0x80;
53 1 SCON = 0x50;
54 1 TH1=0xFD; TL1=0xFD; TR1=1; //19200.n,8.1
C51 COMPILER V7.06 MAIN 04/02/2007 15:23:04 PAGE 2
55 1
56 1 }
57
58
59 void setmiyao(void)
60 {
61 1 char buff1[6],buff2[6];
62 1
63 1 buff1[0]=0xff;
64 1 buff1[1]=0xff;
65 1 buff1[2]=0xff;
66 1 buff1[3]=0xff;
67 1 buff1[4]=0xff;
68 1 buff1[5]=0xff;
69 1
70 1 buff2[0]=0xff;
71 1 buff2[1]=0xff;
72 1 buff2[2]=0xff;
73 1 buff2[3]=0xff;
74 1 buff2[4]=0xff;
75 1 buff2[5]=0xff;
76 1
77 1
78 1
79 1 if(rc500_keys(KEYA,0x03,buff1,buff)==MI_OK)
80 1 { putbyte(0xaa);
81 2 }
82 1
83 1 if(rc500_keys(KEYB,0x03,buff2,buff)==MI_OK)
84 1 { putbyte(0xbb);
85 2 }
86 1
87 1
88 1
89 1
90 1 }
91
92 /************************************声响1子程序***********/
93 void alar(uint k,uchar h)
94 {//TOGGLE_WD();
95 1 while(h--)
96 1 {_alarm=ON;
97 2
98 2 delay_10ms(k);
99 2 _alarm=OFF;
100 2 delay_10ms(k);
101 2 }
102 1 }
103 ////////////////////////////////////////////////////////////
104
105 uchar rcinit()
106 {
107 1 alar(30,1);
108 1 RC500_CS = TRUE; // Enable the CS for RC500
109 1 P1=P2=P3=0xff;
110 1 IT0 = 1; // Config ext0 as edge trigger for RC500
111 1 EX0 = 1; // Enable ext0 interrupt for RC500
112 1 EA = TRUE; // Enable all interrupts
113 1 OpenIO();
114 1 if(M500PcdConfig()!=MI_OK)
115 1 {alar(30,1);
116 2 putbyte(0x11);
C51 COMPILER V7.06 MAIN 04/02/2007 15:23:04 PAGE 3
117 2 return(NOK);
118 2 }
119 1 else
120 1 {
121 2 alar(10,3);
122 2 putbyte(0x33);
123 2 return(OK);}
124 1 }
125
126 void keymovedisp(unsigned char key)
127 { unsigned char dat;
128 1 dat=key;
129 1 keybuff[5]=keybuff[4];
130 1 keybuff[4]=keybuff[3];
131 1 keybuff[3]=keybuff[2];
132 1 keybuff[2]=keybuff[1];
133 1 keybuff[1]=keybuff[0];
134 1 keybuff[0]=dat;
135 1 disp_num(keybuff);
136 1 }
137
138
139 void hextobcd(uint x,uchar *d2)
140 { char i;
141 1 uint d1[6];
142 1 // uchar d2[6];
143 1 for(i=0;i<6;i++)
144 1 {
145 2 d1[i]=x/10;
146 2 d2[i]=x%10;
147 2 x=d1[i];
148 2 }
149 1
150 1 //bcd[3]=(d2[1]<<4)|d2[0];
151 1 //bcd[2]=(d2[3]<<4)|d2[2];
152 1 // bcd[1]=(d2[5]<<4)|d2[4];
153 1 // bcd[0]=0x00;
154 1 }
155
156 void dispyuer(uint x)
157 {
158 1 hextobcd(x,keybuff);
159 1 disp_num_dot2(keybuff);
160 1 }
161 uchar readmfandwrite()
162 {
163 1 uchar wrong;
164 1 startwait(20);/*等待刷卡???*/
165 1 while(!T0IR&&keyflag==0)
166 1 {
167 2
168 2 if(rc500(READ,KEYA,0x0D,t_buff,cardsnr)==MI_OK) //有卡???
169 2 { M500PiccHalt();
170 3 d=256*t_buff[1]+t_buff[0];
171 3 d=d-consmeny;
172 3 // putbyte(t_buff[1]);
173 3 // putbyte(t_buff[0]);
174 3
175 3 putbyte(cardsnr[0]);
176 3 putbyte(cardsnr[1]);
177 3 putbyte(cardsnr[2]);
178 3 putbyte(cardsnr[3]);
C51 COMPILER V7.06 MAIN 04/02/2007 15:23:04 PAGE 4
179 3 t_buff[0]=d;
180 3 t_buff[1]=d>>8;
181 3 wrong=rc500(WRITE,KEYA,0x0D,t_buff,cardsnr);
182 3 if(wrong==MI_OK)
183 3 {//putbyte(t_buff[1]);
184 4 // putbyte(t_buff[0]);
185 4 alar(50,1);
186 4 disp_cls();
187 4 dispyuer(d);
188 4 }
189 3
190 3 }
191 2 M500PiccHalt();
192 2
193 2 }
194 1
195 1 keyflag=1;
196 1 return 1;
197 1 }
198
199 void key_pross()
200 {
201 1 unsigned char key;
202 1 key=get_key(); // 从键盘程序返回键盘值
203 1 if (key!=0xff) //若无输入,则重新开始循环体
204 1 {
205 2 switch(key)
206 2 {case 0:disp_cls();consmeny=0;keybuff[3]=0x00;keybuff[2]=0x00;keybuff[1]=0x00;keybuff[0]=0x00;
207 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
208 3 case 1: disp_cls();consmeny=100;keybuff[3]=0x00;keybuff[2]=0x01;keybuff[1]=0x00;keybuff[0]=0x00;
209 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
210 3 case 2: disp_cls();consmeny=200;keybuff[3]=0x00;keybuff[2]=0x02;keybuff[1]=0x00;keybuff[0]=0x00;
211 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
212 3 case 3: disp_cls();consmeny=300;keybuff[3]=0x00;keybuff[2]=0x03;keybuff[1]=0x00;keybuff[0]=0x00;
213 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
214 3 case 4: disp_cls();consmeny=400;keybuff[3]=0x00;keybuff[2]=0x04;keybuff[1]=0x00;keybuff[0]=0x00;
215 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
216 3 case 5: disp_cls();consmeny=500;keybuff[3]=0x00;keybuff[2]=0x05;keybuff[1]=0x00;keybuff[0]=0x00;
217 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
218 3 case 6: disp_cls();consmeny=600;keybuff[3]=0x00;keybuff[2]=0x06;keybuff[1]=0x00;keybuff[0]=0x00;
219 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
220 3 case 7: disp_cls();consmeny=700;keybuff[3]=0x00;keybuff[2]=0x07;keybuff[1]=0x00;keybuff[0]=0x00;
221 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
222 3 case 8: disp_cls();consmeny=800;keybuff[3]=0x00;keybuff[2]=0x08;keybuff[1]=0x00;keybuff[0]=0x00;
223 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
224 3 case 9: disp_cls();consmeny=900;keybuff[3]=0x00;keybuff[2]=0x09;keybuff[1]=0x00;keybuff[0]=0x00;
225 3 disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
226 3 case 10: break;
227 3 case 11: break;
228 3 case 12: break;
229 3 case 13: break;
230 3 case 14: break;
231 3 case 15: break;
232 3 default: break;
233 3
234 3 }
235 2
236 2 /*if(0<=key&&key<=9)
237 2 { keymovedisp(key);
238 2 }
239 2 else if(key==15) //确定键
240 2 {keyflag=0;
C51 COMPILER V7.06 MAIN 04/02/2007 15:23:04 PAGE 5
241 2
242 2 keybuff[3]=0x03;
243 2 keybuff[2]=0x02;
244 2 keybuff[1]=0x01;
245 2 keybuff[0]=0x00;
246 2
247 2 consmeny=keybuff[3]*1000+keybuff[2]*100+keybuff[1]*10+keybuff[0];
248 2 disp_num_dot(keybuff);
249 2
250 2 // putbyte(consmeny);
251 2 // consmeny=consmeny>>8;
252 2 // putbyte(consmeny);
253 2 }
254 2 else if(key==14) //清零键
255 2 {keybuff[5]=0x00;
256 2 keybuff[4]=0x00;
257 2 keybuff[3]=0x00;
258 2 keybuff[2]=0x00;
259 2 keybuff[1]=0x00;
260 2 keybuff[0]=0x00;
261 2 disp_cls();
262 2 }
263 2 */
264 2 }
265 1 }
266
267 main()
268 {
269 1 urtinit();
270 1 putbyte(0x55);
271 1 disp_int();
272 1 rcinit();
273 1 keyflag=1;
274 1 setmiyao();
275 1 while(1)
276 1 { key_pross();
277 2 readmfandwrite();
278 2 /*
279 2 if(rc500(READ,KEYA,0x0D,t_buff,cardsnr)==MI_OK) //有卡???
280 2 {M500PiccHalt();
281 2 alar(50,1);
282 2 putbyte(0xaa);
283 2 if(rc500(WRITE,KEYA,0x0D,t_buff,cardsnr)==MI_OK)
284 2 {//putbyte(t_buff[1]);
285 2 //putbyte(t_buff[0]);
286 2 //alar(50,1);
287 2 putbyte(0xbb);
288 2 }
289 2
290 2 }
291 2
292 2
293 2 */
294 2
295 2 }
296 1
297 1 }
298
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1333 ----
C51 COMPILER V7.06 MAIN 04/02/2007 15:23:04 PAGE 6
CONSTANT SIZE = ---- ----
XDATA SIZE = 38 33
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 20 ----
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 + -