📄 fm1715_fun.lst
字号:
C51 COMPILER V7.50 FM1715_FUN 03/03/2006 13:09:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE FM1715_FUN
OBJECT MODULE PLACED IN FM1715_fun.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FM1715_fun.c COMPACT OPTIMIZE(0,SPEED) BROWSE MODP2 DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <absacc.h>
3 #include "FM1715_reg.h"
4 #include "FM1715.h"
5
6 /****************************************************************/
7 /*名称: HL_Active */
8 /*功能: 该函数实现高级 MIFARE 卡激活命令 */
9 /*输入: Secnr: 扇区号 */
10 /* Block_Adr: 块地址 */
11 /* */
12 /*输出: 操作状态码
13 */
14 /* 读出数据存于 buffer 中 */
15 /****************************************************************/
16 uchar HL_Active(uchar Block_Adr,uchar Mode)
17 {
18 1 uchar temp;
19 1
20 1 Secnr = Block_Adr/4; //?????????
21 1
22 1 MIF_Halt(); //Halt
23 1 temp = Request(RF_CMD_REQUEST_STD); //Request
24 1 if(temp != FM1715_OK)
25 1 {
26 2 return(FM1715_REQERR);
27 2 }
28 1
29 1 temp = AntiColl(); //AntiCol
30 1 if(temp != FM1715_OK)
31 1 {
32 2 return(FM1715_ANTICOLLERR);
33 2 }
34 1
35 1 temp = Select_Card(); //Select
36 1 if(temp != FM1715_OK)
37 1 {
38 2 return(FM1715_SELERR);
39 2 }
40 1 Load_key_CPY(); //LoadKey
41 1
42 1 temp = Authentication(UID, Secnr, Mode); //Authentication
43 1 if(temp != FM1715_OK)
44 1 {
45 2 return(FM1715_AUTHERR);
46 2 }
47 1
48 1 return FM1715_OK;
49 1 }
50
51
52
53 /****************************************************************/
54 /*名称: MIF_Initival */
55 /*功能: 该函数实现 MIFARE 卡初始化值操作 */
C51 COMPILER V7.50 FM1715_FUN 03/03/2006 13:09:37 PAGE 2
56 /*输入: buff: 四个字节初始化数值起始地址 */
57 /* Block_Adr: 块地址 */
58 /*输出: FM1715_NOTAGERR: 无卡 */
59 /* FM1715_BYTECOUNTERR: 接收字节错误 */
60 /* FM1715_NOTAUTHERR: 未经权威认证 */
61 /* FM1715_EMPTY: 数据溢出错误 */
62 /* FM1715_CRCERR: CRC 校验错 */
63 /* FM1715_PARITYERR: 奇偶校验错 */
64 /* FM1715_WRITEERR: 写卡块数据出错 */
65 /* FM1715_OK: 应答正确
66 */
67 /****************************************************************/
68 uchar MIF_Initival(uchar idata *buff,uchar Block_Adr)
69 {
70 1 uchar idata temp;
71 1 uchar i;
72 1
73 1 temp = HL_Active(Block_Adr, 0);
74 1 if(temp != FM1715_OK)
75 1 {
76 2 return temp;
77 2 }
78 1
79 1 for (i = 0; i < 4; i++)
80 1 {
81 2 *(buff + 4 + i)=~(*(buff + i));
82 2 }
83 1 for (i = 0; i < 4; i++)
84 1 {
85 2 *(buff + 8 + i)=*(buff + i);
86 2 }
87 1 *(buff + 12) = Block_Adr;
88 1 *(buff + 13) = ~Block_Adr;
89 1 *(buff + 14) = Block_Adr;
90 1 *(buff + 15) = ~Block_Adr;
91 1 temp = MIF_Write(buff, Block_Adr);
92 1 return temp;
93 1 }
94
95
96
97 /****************************************************************/
98 /*名称: HL_Read */
99 /*功能: 该函数实现高级读命令 */
100 /*输入: Secnr: 扇区号 */
101 /* Block_Adr: 块地址 */
102
103 /*输出: 操作状态码
104 */
105 /* 读出数据存于 buffer 中 */
106 /****************************************************************/
107 uchar HL_Read(uchar idata *buff,uchar Block_Adr,uchar Mode)
108 {
109 1 uchar temp;
110 1
111 1 temp = HL_Active(Block_Adr, Mode);
112 1 if(temp != FM1715_OK)
113 1 {
114 2 return temp;
115 2 }
116 1
117 1 //Read
C51 COMPILER V7.50 FM1715_FUN 03/03/2006 13:09:37 PAGE 3
118 1 temp = MIF_READ(buff,Block_Adr);
119 1 if(temp != FM1715_OK)
120 1 {
121 2 return temp;
122 2 }
123 1
124 1
125 1 return FM1715_OK;
126 1 }
127
128
129 /****************************************************************/
130 /*名称: HL_Write */
131 /*功能: 该函数实现高级写命令 */
132 /*输入: buff: 待写入数据的首地址 */
133 /* Secnr: 扇区号 */
134 /* Block_Adr: 块地址 */
135
136 /*输出:操作状态码
137 */
138 /****************************************************************/
139 uchar HL_Write(uchar idata *buff,uchar Block_Adr,uchar Mode)
140 {
141 1 uchar temp;
142 1
143 1 temp = HL_Active(Block_Adr, Mode);
144 1 if(temp != FM1715_OK)
145 1 {
146 2 return temp;
147 2 }
148 1
149 1 //Write
150 1 temp = MIF_Write(buff, Block_Adr);
151 1 if(temp != FM1715_OK)
152 1 {
153 2 return FM1715_WRITEERR;
154 2 }
155 1 return FM1715_OK;
156 1 }
157
158
159 /****************************************************************/
160 /*名称: HL_add */
161 /*功能: 该函数实现高级加命令 */
162 /*输入: buff: 加数据的首地址 */
163 /* Secnr: 扇区号 */
164 /* Block_Adr: 块地址 */
165
166 /*输出:操作状态码
167 */
168 /****************************************************************/
169 uchar HL_add(uchar idata *buff,uchar Block_Adr,uchar Mode)
170 {
171 1 uchar temp;
172 1
173 1 temp = HL_Active(Block_Adr, Mode);
174 1 if(temp != FM1715_OK)
175 1 {
176 2 return temp;
177 2 }
178 1
179 1 //add
C51 COMPILER V7.50 FM1715_FUN 03/03/2006 13:09:37 PAGE 4
180 1 temp =MIF_Restore(Block_Adr);
181 1 temp =MIF_Increment(buff, Block_Adr);
182 1 temp =MIF_Transfer(Block_Adr);
183 1 if(temp != FM1715_OK)
184 1 {
185 2 return FM1715_WRITEERR;
186 2 }
187 1 return FM1715_OK;
188 1 }
189
190
191 /****************************************************************/
192 /*名称: HL_dec */
193 /*功能: 该函数实现高级减命令 */
194 /*输入: buff: 减数据的首地址 */
195 /* Secnr: 扇区号 */
196 /* Block_Adr: 块地址 */
197
198 /*输出:操作状态码
199 */
200 /****************************************************************/
201 uchar HL_dec(uchar idata *buff,uchar Block_Adr,uchar Mode)
202 {
203 1 uchar temp;
204 1
205 1 temp = HL_Active(Block_Adr, Mode);
206 1 if(temp != FM1715_OK)
207 1 {
208 2 return temp;
209 2 }
210 1
211 1 //dec
212 1 temp =MIF_Restore(Block_Adr);
213 1 temp =MIF_Decrement(buff, Block_Adr);
214 1 temp =MIF_Transfer(Block_Adr);
215 1
216 1 if(temp != FM1715_OK)
217 1 {
218 2 return FM1715_WRITEERR;
219 2 }
220 1 return FM1715_OK;
221 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 661 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = 22 ----
DATA SIZE = ---- ----
IDATA SIZE = 1 ----
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 + -