📄 zlg500s.lst
字号:
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ZLG500S
OBJECT MODULE PLACED IN zlg500s.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE zlg500s.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #define Zlg500S_GLOBALS
2 #include "config.h"
3 #include "Zlg500S.h"
4 #include "zlg500S_comm.h"
5
6 static void memcopy(INT8U *DBfr,INT8U *SBfr,INT8U Len);
7 static INT8U SEQ = 0xf0; //包号,见通信协议
8
9 INT8U Zlg500S_Cmd()
10 {
11 1 INT8U Status;
12 1
13 1 SEQ += 0x10;
14 1 SerBfr[CMDTYPE] |= SEQ; //命令类型与包号组成一个字节
15 1
16 1 Status = Ser_Send();
17 1
18 1 if(!Status)
19 1 return COMMERR;
20 1
21 1 WaitRespDly = ZLG500S_DELAY_500ms; //延时500ms
22 1 while(WaitRespDly) //等待响应
23 1 {
24 2 if(Ser_Rcv())
25 2 break;
26 2 }
27 1
28 1 if(WaitRespDly == 0)
29 1 { //100ms内未收到响应
30 2 Status = COMMERR;
31 2 }
32 1 else
33 1 {
34 2 if(SEQ == (SerBfr[CMDTYPE]&0xf0))
35 2 { //包号匹配
36 3 Status = OK;
37 3 }
38 2 else
39 2 Status = SEQERR; //包号不匹配
40 2 }
41 1 return Status;
42 1 }
43
44 #if GetDvcInfo_en
45 INT8U GetDvcInfo(INT8U *DvcInfo)
46 {
47 1 INT8U Status;
48 1
49 1 SerBfr[CMDTYPE] = 1;
50 1 SerBfr[COMMAND] = 'A';
51 1
52 1 SerBfr[LENGTH] = 0;
53 1
54 1 Status = Zlg500S_Cmd();
55 1
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 2
56 1 if(Status == OK)
57 1 {
58 2 Status = SerBfr[STATUS];
59 2 if(Status == OK)
60 2 memcopy(DvcInfo,&SerBfr[DATA],SerBfr[LENGTH]);
61 2 }
62 1 return Status;
63 1 }
64 #endif
65
66 #if PCDConfig_en
INT8U PCDConfig()
{
INT8U Status;
SerBfr[CMDTYPE] = 1;
SerBfr[COMMAND] = 'B';
SerBfr[LENGTH] = 0;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
84
85 #if PCDClose_en
INT8U PCDClose()
{
INT8U Status;
SerBfr[CMDTYPE] = 1;
SerBfr[COMMAND] = 'C';
SerBfr[LENGTH] = 0;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
103
104 #if PCDLoadKey_en
105 INT8U PCDLoadKey(INT8U KEYAB,INT8U SecNr,INT8U *Key)
106 {
107 1 INT8U Status;
108 1
109 1 SerBfr[CMDTYPE] = 1;
110 1 SerBfr[COMMAND] = 'E';
111 1 SerBfr[LENGTH] = 8;
112 1 SerBfr[DATA] = KEYAB;
113 1 SerBfr[DATA+1] = SecNr;
114 1 memcopy(&SerBfr[DATA+2],Key,6);
115 1
116 1 Status = Zlg500S_Cmd();
117 1
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 3
118 1 if(Status == OK)
119 1 {
120 2 Status = SerBfr[STATUS];
121 2 }
122 1 return Status;
123 1 }
124 #endif
125
126 #if PCDWriteReg_en
INT8U PCDWriteReg(INT8U RegAddr,INT8U RegValue)
{
INT8U Status;
SerBfr[CMDTYPE] = 1;
SerBfr[COMMAND] = 'F';
SerBfr[LENGTH] = 2;
SerBfr[DATA] = RegAddr;
SerBfr[DATA+1] = RegValue;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
146
147 #if PCDReadReg_en
INT8U PCDReadReg(INT8U RegAddr,INT8U *RegValue)
{
INT8U Status;
SerBfr[CMDTYPE] = 1;
SerBfr[COMMAND] = 'G';
SerBfr[LENGTH] = 1;
SerBfr[DATA] = RegAddr;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
if(Status == OK)
*RegValue = SerBfr[DATA];
}
return Status;
}
#endif
168
169 #if PiccRequest_en
170 INT8U PiccRequest(INT8U Req_Code,INT8U *TagType)
171 {
172 1 INT8U Status;
173 1
174 1 SerBfr[CMDTYPE] = 2;
175 1 SerBfr[COMMAND] = 'A';
176 1 SerBfr[LENGTH] = 1;
177 1 SerBfr[DATA] = Req_Code;
178 1
179 1 Status = Zlg500S_Cmd();
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 4
180 1
181 1 if(Status == OK)
182 1 {
183 2 Status = SerBfr[STATUS];
184 2 if(Status == OK)
185 2 {
186 3 *TagType = SerBfr[DATA];
187 3 *(TagType+1) = SerBfr[DATA+1];
188 3 }
189 2 }
190 1 return Status;
191 1 }
192 #endif
193
194 #if PiccAnticoll_en
195 INT8U PiccAnticoll(INT8U Sel_Code,INT8U Bcnt,INT8U *PiccSnr)
196 {
197 1 INT8U Status;
198 1
199 1 SerBfr[CMDTYPE] = 2;
200 1 SerBfr[COMMAND] = 'B';
201 1 SerBfr[LENGTH] = 2;
202 1 SerBfr[DATA] = Sel_Code;
203 1 SerBfr[DATA+1] = Bcnt;
204 1
205 1 Status = Zlg500S_Cmd();
206 1
207 1 if(Status == OK)
208 1 {
209 2 Status = SerBfr[STATUS];
210 2 if(Status == OK)
211 2 {
212 3 memcopy(PiccSnr,&SerBfr[DATA],4);
213 3 }
214 2 }
215 1 return Status;
216 1 }
217 #endif
218
219 #if PiccSelect_en
220 INT8U PiccSelect(INT8U Sel_Code,INT8U *PiccSnr,INT8U *Sak)
221 {
222 1 INT8U Status;
223 1
224 1 SerBfr[CMDTYPE] = 2;
225 1 SerBfr[COMMAND] = 'C';
226 1 SerBfr[LENGTH] = 5;
227 1 SerBfr[DATA] = Sel_Code;
228 1 memcopy(&SerBfr[DATA+1],PiccSnr,4);
229 1
230 1 Status = Zlg500S_Cmd();
231 1
232 1 if(Status == OK)
233 1 {
234 2 Status = SerBfr[STATUS];
235 2 if(Status == OK)
236 2 {
237 3 *Sak = SerBfr[DATA];
238 3 }
239 2 }
240 1 return Status;
241 1 }
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 5
242 #endif
243
244 #if PiccHalt_en
245 INT8U PiccHalt()
246 {
247 1 INT8U Status;
248 1
249 1 SerBfr[CMDTYPE] = 2;
250 1 SerBfr[COMMAND] = 'D';
251 1 SerBfr[LENGTH] = 0;
252 1
253 1 Status = Zlg500S_Cmd();
254 1
255 1 if(Status == OK)
256 1 {
257 2 Status = SerBfr[STATUS];
258 2 }
259 1 return Status;
260 1 }
261 #endif
262
263 #if PiccAuthE2_en
264 INT8U PiccAuthE2(INT8U KeyAB,INT8U *PiccSnr,INT8U SecNr,INT8U Block)
265 {
266 1 INT8U Status;
267 1
268 1 SerBfr[CMDTYPE] = 2;
269 1 SerBfr[COMMAND] = 'E';
270 1 SerBfr[LENGTH] = 7;
271 1 SerBfr[DATA] = KeyAB;
272 1 memcopy(&SerBfr[DATA+1],PiccSnr,4);
273 1 SerBfr[DATA+5] = SecNr;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -