📄 main.lst
字号:
284 3 for(i=0;i<4;i++)
285 3 {
286 4 TxData(buf[i]);
287 4 k=k+buf[i];
288 4 }
289 3
290 3 TxData(k);
291 3 TxData(0xfd);
292 3 spkl(1);
293 3 Delay(255);
294 3 Delay(255);
295 3 Delay(255);
296 3 SN=0;
297 3 }
298 2 }
299 1
300 1 }
*** WARNING C280 IN LINE 247 OF F:\5000\JOP\洗车计费\C\2\MAIN.C: 'j': unreferenced local variable
C51 COMPILER V6.02 MAIN 01/16/2009 14:50:25 PAGE 6
301
302 //读取卡号,
303 ulong Read_Card()
304 {
305 1 uchar i=0; //起始为的计数值
306 1 uchar error; //时间溢出的计数值
307 1 uchar error_flag; //时间溢出标志
308 1 uchar row,col; //行列寄存器
309 1 uchar row_parity; //行校验寄存器
310 1 uchar col_parity[5]; //列校验寄存器
311 1 uchar _data; //数据寄存器
312 1 ulong temp; //卡号寄存器
313 1 ulong timeout=0; //搜索次数寄存器
314 1 while(1)
315 1 {
316 2 if(timeout==10)return 0;//尝试10次搜索,如没有责返回0
317 2 else timeout++;
318 2 error=0;
319 2 while(Manchester_IN==0)//等高电平
320 2 {
321 3 if(error==TIME_OF)break;//超时退出
322 3 else error++;
323 3 }
324 2 if(error==100)continue;//结束本次主循环
325 2 else error=0;
326 2 Delay384us();
327 2 if(Manchester_IN)//寻找真正的1起始位,利用01的波形确定1起始位,即最后一位加第一位
328 2 {
329 3 for(i=0;i<8;i++)//判断是否是真的起始位
330 3 {
331 4 error=0; //限定等待时间
332 4 while(Manchester_IN)
333 4 {
334 5 if(error==TIME_OF)
335 5 {
336 6 error_flag=1;//时间溢出
337 6 break; //退出
338 6 }
339 5 else error++;
340 5 }
341 4 Delay384us(); //延时至下一码原
342 4 if(Manchester_IN&&error_flag==0); //判断下一位是否为1 和是否没有时间溢出
343 4 else break; //不是1退出,溢出退出
344 4 }
345 3 if(error_flag)//因时间溢出造成的本次主循环退出
346 3 {
347 4 error_flag=0;
348 4 continue; //退出本次循环
349 4 }
350 3 else;
351 3 if(i==8) //起始位接受完并且正确后开始接受数据
352 3 {
353 4 error_flag=0;
354 4 error=0; //限定等待时间
355 4 while(Manchester_IN)
356 4 {
357 5 if(error==TIME_OF)
358 5 {
359 6 error_flag=0;
360 6 break; //时间溢出造成的出错
361 6 }
362 5 else error++;
C51 COMPILER V6.02 MAIN 01/16/2009 14:50:25 PAGE 7
363 5 }
364 4 if(error_flag)
365 4 {
366 5 error_flag=0;
367 5 continue; //因等待待第一个正式数据错误引起的本次主循环退出
368 5 }
369 4 else;
370 4 //所有列校验清零
371 4 col_parity[0]=col_parity[1]=col_parity[2]=col_parity[3]=col_parity[4]=0;
372 4 for(row=0;row<11;row++) //共11行数据
373 4 {
374 5 for(col=0,row_parity=0/*行校验清零*/;col<5;col++)//共5列数据
375 5 {
376 6 Delay384us(); //延时至下一码原
377 6 if(Manchester_IN)_data=1; //数据为1
378 6 else _data=0; //数据为0
379 6 if(col<4&&row<10) //数据区的接受,后四个字节
380 6 {
381 7 temp<<=1; //左移一位
382 7 temp+=(ulong)_data; //数据相加
383 7 }
384 6 else;
385 6 row_parity+=_data; //行校验加入数据
386 6 col_parity[col]+=_data; //相应列校验加入数据 虽最后一列没有校验但为了方便也加上
387 6 error=0; //限定等待时间清零
388 6 while(Manchester_IN==(bit)_data)
389 6 {
390 7 if(error==TIME_OF) //由于时间溢出造成的数据出错
391 7 {
392 8 error_flag=1;
393 8 break; //退出本while循环
394 8 }
395 7 else error++;
396 7 }
397 6 if(error_flag)break; //出错退出内层for循环
398 6 else;
399 6 }
400 5 if(row<10)//最后一行没有校验所以要加限制
401 5 {
402 6 if((row_parity&0x01)||error_flag) //出错退出外for循环
403 6 {
404 7 temp=0;
405 7 error_flag=1;
406 7 break; //退出
407 7 }
408 6 else;
409 6 }
410 5 else;
411 5 }
412 4
413 4 //对最后接收的列校验进行判断,及对来自上面数据错误error_flag处理以结束本次主循环
414 4 if(error_flag||((col_parity[0]&0x01)&&(col_parity[1]&0x01)&&(col_parity[2]&0x01)&&(col_parity[3]&0x01)
-))
415 4 { //最后一列没有校验
416 5 error_flag=0;
417 5 temp=0;
418 5 continue; //退出本次循环
419 5 }
420 4 else return temp;//将正确的数据返回
421 4 }
422 3 continue;
423 3 }
C51 COMPILER V6.02 MAIN 01/16/2009 14:50:25 PAGE 8
424 2 continue;
425 2 }
426 1 }
C51 COMPILER V6.02 MAIN 01/16/2009 14:50:25 PAGE 9
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
rxdata . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
temp . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
Manchester_IN. . . . . . . . . . . . . ABSBIT ----- BIT 0095H 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
green. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
EXF2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
_spkl. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
BEEP . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
SN . . . . . . . . . . . . . . . . . . PUBLIC DATA U_LONG 0000H 4
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
MODE . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0096H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_TxData. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ook. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
rxbuf. . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0004H 64
RCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
_spk . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
TCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
SBUF . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0099H 1
PCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
buf. . . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0044H 16
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
com. . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
j. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
crc. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
temp . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0003H 1
orde . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
ook. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0005H 2
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
C51 COMPILER V6.02 MAIN 01/16/2009 14:50:25 PAGE 10
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
CFE. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0094H 1
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
_Delay . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
n. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
TL1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008BH 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
Inituart . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
Read_Card. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
error. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
error_flag . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
row. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
col. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
row_parity . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
col_parity . . . . . . . . . . . . . AUTO DATA ARRAY 0003H 5
_data. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0008H 1
temp . . . . . . . . . . . . . . . . AUTO DATA U_LONG 0009H 4
timeout. . . . . . . . . . . . . . . AUTO DATA U_LONG 000DH 4
rxs. . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0054H 1
EXEN2. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
readid . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
j. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
k. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
com_isr. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ook. . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
s. . . . . . . . . . . . . . . . . . . PUBLIC DATA PTR 0055H 3
C51 COMPILER V6.02 MAIN 01/16/2009 14:50:25 PAGE 11
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
Delay384us . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1559 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 88 29
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -