📄 zlg500s.lst
字号:
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ZLG500S
OBJECT MODULE PLACED IN zlg500s.OBJ
COMPILER INVOKED BY: D:\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 SerBfr[LENGTH] = 0;
52 1
53 1 Status = Zlg500S_Cmd();
54 1
55 1 if(Status == OK)
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 2
56 1 {
57 2 Status = SerBfr[STATUS];
58 2 if(Status == OK)
59 2 memcopy(DvcInfo,&SerBfr[DATA],SerBfr[LENGTH]);
60 2 }
61 1 return Status;
62 1 }
63 #endif
64
65 #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
83
84 #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
102
103 #if PCDLoadKey_en
104 INT8U PCDLoadKey(INT8U KEYAB,INT8U SecNr,INT8U *Key)
105 {
106 1 INT8U Status;
107 1
108 1 SerBfr[CMDTYPE] = 1;
109 1 SerBfr[COMMAND] = 'E';
110 1 SerBfr[LENGTH] = 8;
111 1 SerBfr[DATA] = KEYAB;
112 1 SerBfr[DATA+1] = SecNr;
113 1 memcopy(&SerBfr[DATA+2],Key,6);
114 1
115 1 Status = Zlg500S_Cmd();
116 1
117 1 if(Status == OK)
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 3
118 1 {
119 2 Status = SerBfr[STATUS];
120 2 }
121 1 return Status;
122 1 }
123 #endif
124
125 #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
145
146 #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
167
168 #if PiccRequest_en
169 INT8U PiccRequest(INT8U Req_Code,INT8U *TagType)
170 {
171 1 INT8U Status;
172 1
173 1 SerBfr[CMDTYPE] = 2;
174 1 SerBfr[COMMAND] = 'A';
175 1 SerBfr[LENGTH] = 1;
176 1 SerBfr[DATA] = Req_Code;
177 1
178 1 Status = Zlg500S_Cmd();
179 1
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 4
180 1 if(Status == OK)
181 1 {
182 2 Status = SerBfr[STATUS];
183 2 if(Status == OK)
184 2 {
185 3 *TagType = SerBfr[DATA];
186 3 *(TagType+1) = SerBfr[DATA+1];
187 3 }
188 2 }
189 1 return Status;
190 1 }
191 #endif
192
193 #if PiccAnticoll_en
194 INT8U PiccAnticoll(INT8U Sel_Code,INT8U Bcnt,INT8U *PiccSnr)
195 {
196 1 INT8U Status;
197 1
198 1 SerBfr[CMDTYPE] = 2;
199 1 SerBfr[COMMAND] = 'B';
200 1 SerBfr[LENGTH] = 2;
201 1 SerBfr[DATA] = Sel_Code;
202 1 SerBfr[DATA+1] = Bcnt;
203 1
204 1 Status = Zlg500S_Cmd();
205 1
206 1 if(Status == OK)
207 1 {
208 2 Status = SerBfr[STATUS];
209 2 if(Status == OK)
210 2 {
211 3 memcopy(PiccSnr,&SerBfr[DATA],4);
212 3 }
213 2 }
214 1 return Status;
215 1 }
216 #endif
217
218 #if PiccSelect_en
219 INT8U PiccSelect(INT8U Sel_Code,INT8U *PiccSnr,INT8U *Sak)
220 {
221 1 INT8U Status;
222 1
223 1 SerBfr[CMDTYPE] = 2;
224 1 SerBfr[COMMAND] = 'C';
225 1 SerBfr[LENGTH] = 5;
226 1 SerBfr[DATA] = Sel_Code;
227 1 memcopy(&SerBfr[DATA+1],PiccSnr,4);
228 1
229 1 Status = Zlg500S_Cmd();
230 1
231 1 if(Status == OK)
232 1 {
233 2 Status = SerBfr[STATUS];
234 2 if(Status == OK)
235 2 {
236 3 *Sak = SerBfr[DATA];
237 3 }
238 2 }
239 1 return Status;
240 1 }
241 #endif
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 5
242
243 #if PiccHalt_en
244 INT8U PiccHalt()
245 {
246 1 INT8U Status;
247 1
248 1 SerBfr[CMDTYPE] = 2;
249 1 SerBfr[COMMAND] = 'D';
250 1 SerBfr[LENGTH] = 0;
251 1
252 1 Status = Zlg500S_Cmd();
253 1
254 1 if(Status == OK)
255 1 {
256 2 Status = SerBfr[STATUS];
257 2 }
258 1 return Status;
259 1 }
260 #endif
261
262 #if PiccAuthE2_en
263 INT8U PiccAuthE2(INT8U KeyAB,INT8U *PiccSnr,INT8U SecNr,INT8U Block)
264 {
265 1 INT8U Status;
266 1
267 1 SerBfr[CMDTYPE] = 2;
268 1 SerBfr[COMMAND] = 'E';
269 1 SerBfr[LENGTH] = 7;
270 1 SerBfr[DATA] = KeyAB;
271 1 memcopy(&SerBfr[DATA+1],PiccSnr,4);
272 1 SerBfr[DATA+5] = SecNr;
273 1 SerBfr[DATA+6] = Block;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -