📄 wrrc500.lst
字号:
C51 COMPILER V8.01 WRRC500 03/29/2008 15:10:44 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE WRRC500
OBJECT MODULE PLACED IN wrrc500.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wrrc500.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <absacc.h>
2 #include <reg51.h>
3 #include <intrins.h>
4
5
6 #include "MfErrNo.h"
7 #include "Rc500.h"
8 #include "Rc500reg.h"
9 #include "time.h"
10
11
12 sfr AUXR = 0x8E;
13 sfr WDTC = 0xC0;
14 sfr WDTD = 0x85;
15
16 #define uchar unsigned char
17 #define inf_NACK 0x08 //Tag card error
18
19 sbit S_INT = P3^3;
20 sbit S_RST = P1^0;
21 sbit RS485_DE = P1^4;
22
23 unsigned int MRC500_CNT; //Delay Counter
24 unsigned char code keya[6] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
25 unsigned char code writeblock6[16]={0x06,0x72,0x10,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
26 0x00,0x00,0x00,0x00,0x00,} ;
27 unsigned char code writeblock8[16]={0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
28 0x00,0x00,0x00,0x00,0x00,} ;
29 unsigned char data snr[4];
30 unsigned char data databuf[16];
31 unsigned char receive_len,send_num,send_len;//串口接收字节长度
32 unsigned char receive_buf[20];
33 unsigned char send_buf[20];
34 unsigned char data cardnum[4];
35 int data j,k,m,n,l;
36 bit first_receive;
37 bit send_status;
38 bit receive_status;
39 bit read_status;
40 main()
41 {
42 1 unsigned char tt[2];
43 1 int data i;
44 1
45 1 AUXR = 0x0; /*EXTRAM=1*/
46 1 TMOD = 0x21;
47 1 TCON = 0x40;
48 1 TH1 = 0xF4;//2400
49 1 //TH1 = 0xFD;//9600
50 1 TH0 = 0xD0;
51 1 PCON = 0x00;//SMOD=0;
52 1 SCON = 0x50;
53 1 RS485_DE=0;
54 1 IE = 0x92;//turn on EA,ES,ET0
55 1 //EA=0;
C51 COMPILER V8.01 WRRC500 03/29/2008 15:10:44 PAGE 2
56 1 TR1 = 1;
57 1 TR0 = 0;
58 1 WDTC = 0x09;//
59 1 WDTD = 0xDD;//
60 1 WDTC = WDTC|0x02;//
61 1
62 1 send_len=0;
63 1 receive_status = 0;//一串数据接收成功标志 1-成功
64 1 read_status = 0;
65 1
66 1 for(i=0;i<16;i++)
67 1 {
68 2 databuf[i]=i;
69 2 }
70 1
71 1 WDTD = 0xDD;
72 1 WDTC = WDTC|0x02;
73 1 S_RST=0;
74 1 for(i=0;i<3000;i++);
75 1 S_RST=1;
76 1 WDTD = 0xDD;
77 1 WDTC = WDTC|0x02;
78 1 for(i=0;i<3000;i++);
79 1 S_RST=0;
80 1 WDTD = 0xDD;
81 1 WDTC = WDTC|0x02;
82 1 for(i=0;i<3000;i++);
83 1
84 1
85 1 MCRReset_1();
86 1
87 1 WDTD = 0xDD;
88 1 WDTC = WDTC|0x02;
89 1 Mf500PcdConfig();
90 1 WDTD = 0xDD;
91 1 WDTC = WDTC|0x02;
92 1 MRC500LoadKey1(keya) ;
93 1
94 1 WDTD = 0xDD;
95 1 WDTC = WDTC|0x02;
96 1 while(1)
97 1 {
98 2
99 2 if(Mf500PiccCommonRequest(0x52, tt)!=MI_OK) continue;
100 2 WDTD = 0xDD;
101 2 WDTC = WDTC|0x02;
102 2 j=15;
103 2 if(Mf500PiccCascAnticoll(snr)!=MI_OK) continue;
104 2 WDTD = 0xDD;
105 2 WDTC = WDTC|0x02;
106 2 k=25;
107 2 if(Mf500PiccCascSelect(snr)!=MI_OK) continue;
108 2
109 2 WDTD = 0xDD;
110 2 WDTC = WDTC|0x02;
111 2 m=35;
112 2 cardnum[0]=snr[0];
113 2 cardnum[1]=snr[1];
114 2 cardnum[2]=snr[2];
115 2 cardnum[3]=snr[3];
116 2
117 2 if(MRC500PiccAuthentication( PICC_AUTHENT1A, snr,8)!=MI_OK) continue;
C51 COMPILER V8.01 WRRC500 03/29/2008 15:10:44 PAGE 3
118 2 n=45;
119 2 WDTD = 0xDD;
120 2 WDTC = WDTC|0x02;
121 2 //if(Mf500PiccWrite(8,writeblock6)!=MI_OK) continue;
122 2 //WDTD = 0xDD;
123 2 //WDTC = WDTC|0x02;
124 2 if(Mf500PiccRead(8,databuf)!=MI_OK) continue;
125 2 l=55;
126 2 read_status=1;
127 2
128 2 WDTD = 0xDD;
129 2 WDTC = WDTC|0x02;
130 2
131 2 delay_1ms(1);
132 2 send_buf[0] = 0x70;
133 2 send_buf[1] = 0x0A;
134 2 send_buf[2] = 0x0A;
135 2 if(read_status==1) //有卡
136 2 {
137 3 send_buf[3] = databuf[0];//取电卡性质
138 3 send_buf[4] = databuf[1];//楼栋号
139 3 send_buf[5] = databuf[2];//楼层号
140 3 send_buf[6] = databuf[3];//房间号
141 3 send_buf[7] = databuf[4];//卡号1
142 3 send_buf[8] = databuf[5];//卡号2
143 3 send_buf[9] = databuf[6];//卡号3
144 3 send_buf[10] = databuf[7];//卡号4
145 3 //set_checksum(11,send_buf);//加校验码
146 3 send_len = 11;
147 3 }
148 2 else //无卡
149 2 {
150 3 send_buf[3] = 0x00;
151 3 send_buf[4] = 0x00;
152 3 send_buf[5] = 0x00;
153 3 send_buf[6] = 0x00;
154 3 //set_checksum(7,send_buf);//加校验码
155 3 send_len =9;
156 3 }
157 2 send_num = 1;
158 2 send_status = 1;
159 2
160 2 receive_status = 0;
161 2 // }
162 2
163 2 // rc500_status = MCRReset_1();
164 2 read_status =0;
165 2 // Mf500PiccHalt() ;
166 2 }
167 1
168 1
169 1 }
170
171
172
173 ///////////////////////////////////////////////////////////////////////
174 // M I F A R E M O D U L E C O N F I G U R A T I O N
175 ///////////////////////////////////////////////////////////////////////
176
177 void Mf500PcdConfig(void)
178 {
179 1 RegClockQControl=0x0;
C51 COMPILER V8.01 WRRC500 03/29/2008 15:10:44 PAGE 4
180 1 RegClockQControl=0x40;
181 1
182 1 MRC500_CNT=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -