📄 iso14443a.lst
字号:
C51 COMPILER V7.20 ISO14443A 11/02/2005 12:55:38 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE ISO14443A
OBJECT MODULE PLACED IN ISO14443A.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ISO14443A.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************************************
2 * Company : 3ALOGICS *
3 ************************************************************/
4 #include <stdio.h>
5
6 #include "common.h"
7 #include "base.h"
8
9 void AREG_Set(void)
10 {
11 1 Write(0x31, 0x00); //CWConduct
12 1
13 1 Write(0x11, 0x5B); //CWConduct
14 1 Write(0x12, 0x3F); //CWConduct
15 1 Write(0x19, 0x01); //rxcontrol1 0111_0011
16 1 Write(0x1C, 0x18); //rxthreshold, for analog
17 1 Write(0x15, 0x10); //Modwidth(AType, Default : 13)
18 1
19 1 Write(0x14, 0x01); // Coder A Set.
20 1 Write(0x1A, 0x08); // DeCoder A Set.
21 1 Write(0x21, 0x06); // RxWait Set.
22 1
23 1 if (AutoMode != 0xAF) {
24 2 printf("A Type Register Set !! \n " );
25 2 }
26 1
27 1 Write(0x1E, 0x81);
28 1 // Write(0x1F, 0x85); // AThresh high/ Athersh low
29 1 // Write(0x22, 0x03); //ChannelRedundancy |0|0|CRC3309|CRC8|RxCRCEn|TxCRCEn|ParityOdd|ParityEn|
30 1 Write(0x0a, 0x00); //Error Clear
31 1 }
32
33 void Exec_REQA(void)
34 {
35 1 BYTE i;
36 1 //Write(0x31, 0x01); //Option Select A/B Type
37 1 Write(0x0F, 0x07); //BITFRAME |0| RxAlign | 0 | TxLastBits |
38 1 Write(0x22, 0x03); //ChannelRedundancy |0|0|CRC3309|CRC8|RxCRCEn|TxCRCEn|ParityOdd|ParityEn|
39 1 Write(0x09, 0x01); //Control |0|0|StandBy|PowerDown|Crypto1On|TStopNow|TStartNow|FlushFIFO|
40 1 Write(0x02, 0x26); //transmit data
41 1 Write(0x01, 0x1E); //Transceive
42 1 DelayIdleTime(4);
43 1
44 1
45 1 if( Read(0x04) == 0x02 ) // ATQA Response O.K
46 1 {
47 2 for(i=0; i<2; i++) CIDBuf[i] = Read(0x02);
48 2 printf("REQA O.K!! = %02X %02X \n ", (int)CIDBuf[0], (int)CIDBuf[1] );
49 2 LCDType = 1;
50 2 DisplayLCD();
51 2 }
52 1 else { // No ATQA Response
53 2 printf("No Response !! \n " );
54 2 Write(0x01, 0x00);
55 2 return;
C51 COMPILER V7.20 ISO14443A 11/02/2005 12:55:38 PAGE 2
56 2 }
57 1 }
58
59 void Exec_RDID(void)
60 {
61 1 BYTE i;
62 1
63 1 //Write(0x31, 0x01); //Option Select A/B Type
64 1
65 1 Write(0x1A, 0x28); // ZeroAfterColl activation
66 1 Write(0x09, 0x01); // Clear FIFO
67 1 Write(0x02, 0x93); // 93 -> FIFO
68 1 Write(0x02, 0x20); // NVB -> FIFO
69 1
70 1 Write(0x01, 0x1E); // Transceive
71 1
72 1 DelayIdleTime(5);
73 1 //Display_SFR();
74 1
75 1 if( Read(0x04) == 0x05 ) { // UID Read O.K
76 2 //printf("ERR = %02X \n ", (int)Read(0x0A));
77 2 SUMA = 0x00;
78 2 for(i=0; i<0x05; i++) {
79 3 CIDBuf[i] = Read(0x02);
80 3 SUMA = SUMA | CIDBuf[i];
81 3 };
82 2 if (SUMA == 0x00) { return; };
83 2
84 2
85 2 printf("A Type ID = %02X %02X %02X %02X %02X \n ",
86 2 (int)CIDBuf[0], (int)CIDBuf[1], (int)CIDBuf[2], (int)CIDBuf[3], (int)CIDBuf[4]);
87 2 LCDType = 2;
88 2 DisplayLCD();
89 2
90 2 Write(0x01, 0x00);
91 2 return;
92 2 }
93 1 else { // UID Read Fail
94 2 printf("ID Read Fail !! \n " ) ; // Fail Indicator
95 2 Write(0x01, 0x00);
96 2 return;
97 2 }
98 1 }
99
100 void Exec_REQA_RDID(void)
101 {
102 1 BYTE i;
103 1
104 1 Write(0x0F, 0x07); //BITFRAME |0| RxAlign | 0 | TxLastBits |
105 1 Write(0x22, 0x03); //ChannelRedundancy |0|0|CRC3309|CRC8|RxCRCEn|TxCRCEn|ParityOdd|ParityEn|
106 1 Write(0x09, 0x01); //Control |0|0|StandBy|PowerDown|Crypto1On|TStopNow|TStartNow|FlushFIFO|
107 1 Write(0x02, 0x26); //transmit data
108 1
109 1 Write(0x01, 0x1E); //Transceive
110 1
111 1 DelayIdleTime(1);
112 1
113 1 if( Read(0x04) == 0x02 ) // ATQA Response O.K
114 1 {
115 2 Write(0x1A, 0x28); // ZeroAfterColl activation
116 2 Write(0x09, 0x01); // Clear FIFO
117 2 Write(0x02, 0x93); // 93 -> FIFO
C51 COMPILER V7.20 ISO14443A 11/02/2005 12:55:38 PAGE 3
118 2 Write(0x02, 0x20); // NVB -> FIFO
119 2
120 2 Write(0x01, 0x1E); // Transceive
121 2
122 2 DelayIdleTime(2);
123 2
124 2 if( Read(0x04) == 0x05 ) { // UID Read O.K
125 3 for(i=0; i<5; i++) CIDBuf[i] = Read(0x02);
126 3 printf("A Type ID = %02X %02X %02X %02X %02X \n " ,
127 3 (int)CIDBuf[0], (int)CIDBuf[1], (int)CIDBuf[2], (int)CIDBuf[3], (int)CIDBuf[4]);
128 3 LCDType = 2;
129 3 DisplayLCD();
130 3 //printf("ERR = %02X \n ", (int)Read(0x0A));
131 3 Write(0x01, 0x00);
132 3 return;
133 3 }
134 2 else { // UID Read Fail
135 3 printf("ID Read Fail !! \n " ) ; // Fail Indicator
136 3 Write(0x01, 0x00);
137 3 return;
138 3 }
139 2 }
140 1 else { // No ATQA Response
141 2 printf("No Response !! \n " );
142 2 Write(0x01, 0x00);
143 2 return;
144 2 }
145 1 }
146
147 void Exec_REQA_RDID_Auto(void)
148 {
149 1 BYTE i;
150 1
151 1 Write(0x0F, 0x07); //BITFRAME |0| RxAlign | 0 | TxLastBits |
152 1 Write(0x22, 0x03); //ChannelRedundancy |0|0|CRC3309|CRC8|RxCRCEn|TxCRCEn|ParityOdd|ParityEn|
153 1 Write(0x09, 0x01); //Control |0|0|StandBy|PowerDown|Crypto1On|TStopNow|TStartNow|FlushFIFO|
154 1 Write(0x02, 0x26); //transmit data
155 1
156 1 Write(0x01, 0x1E); //Transceive
157 1
158 1 DelayIdleTime(1);
159 1
160 1 if( Read(0x04) == 0x02 ) // ATQA Response O.K
161 1 {
162 2 Write(0x1A, 0x28); // ZeroAfterColl activation
163 2 Write(0x09, 0x01); // Clear FIFO
164 2 Write(0x02, 0x93); // 93 -> FIFO
165 2 Write(0x02, 0x20); // NVB -> FIFO
166 2
167 2 Write(0x01, 0x1E); // Transceive
168 2
169 2 DelayIdleTime(2);
170 2
171 2 if (Read(0x0A) != 0x00)
172 2 {
173 3 Write(0x01, 0x00);
174 3 return;
175 3 }
176 2 else if( Read(0x04) == 0x05 ) { // UID Read O.K
177 3 for(i=0; i<5; i++) CIDBuf[i] = Read(0x02);
178 3 printf("A Type ID = %02X %02X %02X %02X %02X \n " ,
179 3 (int)CIDBuf[0], (int)CIDBuf[1], (int)CIDBuf[2], (int)CIDBuf[3], (int)CIDBuf[4]);
C51 COMPILER V7.20 ISO14443A 11/02/2005 12:55:38 PAGE 4
180 3 LCDType = 2;
181 3 DisplayLCD();
182 3 Write(0x01, 0x00);
183 3 return;
184 3 }
185 2 else { // UID Read Fail
186 3 //printf("ID Read Fail !! \n " ) ; // Fail Indicator
187 3 Write(0x01, 0x00);
188 3 return;
189 3 }
190 2 }
191 1 else { // No ATQA Response
192 2 //printf("No Response !! \n " );
193 2 Write(0x01, 0x00);
194 2 return;
195 2 }
196 1 }
197
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 845 ----
CONSTANT SIZE = 129 ----
XDATA SIZE = ---- 4
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -