📄 zlg500s.lst
字号:
274 1
275 1 Status = Zlg500S_Cmd();
276 1
277 1 if(Status == OK)
278 1 {
279 2 Status = SerBfr[STATUS];
280 2 }
281 1 return Status;
282 1 }
283 #endif
284
285 #if PiccAuthKey_en
INT8U PiccAuthKey(INT8U KeyAB,INT8U *PiccSnr,INT8U *Key,INT8U Block)
{
INT8U Status;
SerBfr[CMDTYPE] = 2;
SerBfr[COMMAND] = 'F';
SerBfr[LENGTH] = 12;
SerBfr[DATA] = KeyAB;
memcopy(&SerBfr[DATA+1],PiccSnr,4);
memcopy(&SerBfr[DATA+5],Key,6);
SerBfr[DATA+11] = Block;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
}
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 6
return Status;
}
#endif
307
308 #if PiccRead_en
309 INT8U PiccRead(INT8U Block,INT8U *Bfr)
310 {
311 1 INT8U Status;
312 1
313 1 SerBfr[CMDTYPE] = 2;
314 1 SerBfr[COMMAND] = 'G';
315 1 SerBfr[LENGTH] = 1;
316 1 SerBfr[DATA] = Block;
317 1
318 1 Status = Zlg500S_Cmd();
319 1
320 1 if(Status == OK)
321 1 {
322 2 Status = SerBfr[STATUS];
323 2 if(Status == OK)
324 2 {
325 3 memcopy(Bfr,&SerBfr[DATA],16);
326 3 }
327 2 }
328 1 return Status;
329 1 }
330 #endif
331
332 #if PiccWrite_en
333 INT8U PiccWrite(INT8U Block,INT8U *Bfr)
334 {
335 1 INT8U Status;
336 1
337 1 SerBfr[CMDTYPE] = 2;
338 1 SerBfr[COMMAND] = 'H';
339 1 SerBfr[LENGTH] = 17;
340 1 SerBfr[DATA] = Block;
341 1 memcopy(&SerBfr[DATA+1],Bfr,16);
342 1
343 1 Status = Zlg500S_Cmd();
344 1
345 1 if(Status == OK)
346 1 {
347 2 Status = SerBfr[STATUS];
348 2 }
349 1 return Status;
350 1 }
351 #endif
352
353 #if PiccULWrite_en
INT8U PiccULWrite(INT8U Block,INT8U *Bfr)
{
INT8U Status;
SerBfr[CMDTYPE] = 2;
SerBfr[COMMAND] = 'I';
SerBfr[LENGTH] = 5;
SerBfr[DATA] = Block;
memcopy(&SerBfr[DATA+1],Bfr,16);
Status = Zlg500S_Cmd();
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 7
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
373
374 #if PiccValue_en
375 INT8U PiccValue(INT8U Mode,INT8U Block,INT8U *Value,INT8U TransBlock)
376 {
377 1 INT8U Status;
378 1
379 1 SerBfr[CMDTYPE] = 2;
380 1 SerBfr[COMMAND] = 'J';
381 1 SerBfr[LENGTH] = 7;
382 1 SerBfr[DATA] = Mode;
383 1 SerBfr[DATA+1] = Block;
384 1 memcopy(&SerBfr[DATA+2],Value,4);
385 1 SerBfr[DATA+6] = TransBlock;
386 1
387 1 Status = Zlg500S_Cmd();
388 1
389 1 if(Status == OK)
390 1 {
391 2 Status = SerBfr[STATUS];
392 2 }
393 1 return Status;
394 1 }
395 #endif
396
397 #if PiccReset_en
INT8U PiccReset(INT8U _1ms)
{
INT8U Status;
SerBfr[CMDTYPE] = 2;
SerBfr[COMMAND] = 'L';
SerBfr[LENGTH] = 1;
SerBfr[DATA] = _1ms;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
416
417 #if PiccActiveTypeA_en
INT8U PiccActiveTypeA( INT8U BaudRate,
INT8U Req_Code,
INT8U *Atq,
INT8U *Ats,
INT8U *PiccSnrLen,
INT8U *PiccSnr )
{
INT8U Status;
SerBfr[CMDTYPE] = 2;
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 8
SerBfr[COMMAND] = 'M';
SerBfr[LENGTH] = 2;
SerBfr[DATA] = BaudRate;
SerBfr[DATA+1] = Req_Code;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
if(Status == OK)
{
*Atq = SerBfr[DATA];
*(Atq+1) = SerBfr[DATA+1];
*Ats = SerBfr[DATA+2];
*PiccSnrLen = SerBfr[DATA+3];
memcopy(PiccSnr,&SerBfr[DATA+4],*PiccSnrLen);
}
}
return Status;
}
#endif
450
451 #if PiccAutoDetect_en
452 INT8U PiccAutoDetect(INT8U OutMode, INT8U TxMode, INT8U Req_Code,
453 INT8U AuthMode, INT8U KEYAB, INT8U *Key, INT8U Block)
454 {
455 1 INT8U Status;
456 1
457 1 SerBfr[CMDTYPE] = 2;
458 1 SerBfr[COMMAND] = 'N';
459 1
460 1 if(AuthMode == 0)
461 1 SerBfr[LENGTH] = 4;
462 1 else
463 1 { SerBfr[DATA+4] = KEYAB;
464 2 if(AuthMode == 'E')
465 2 {
466 3 SerBfr[DATA+5] = *Key;
467 3 SerBfr[DATA+6] = Block;
468 3 SerBfr[LENGTH] = 7;
469 3 }
470 2 else if(AuthMode == 'F')
471 2 {
472 3 memcopy(&SerBfr[DATA+5],Key,6);
473 3 SerBfr[DATA+11] = Block;
474 3 SerBfr[LENGTH] = 12;
475 3 }
476 2 else
477 2 return COMMERR;
478 2 }
479 1
480 1 SerBfr[DATA] = OutMode;
481 1 SerBfr[DATA+1] = TxMode;
482 1 SerBfr[DATA+2] = Req_Code;
483 1 SerBfr[DATA+3] = AuthMode;
484 1
485 1 Status = Zlg500S_Cmd();
486 1
487 1 if(Status == OK)
488 1 {
489 2 Status = SerBfr[STATUS];
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 9
490 2 }
491 1 return Status;
492 1 }
493 #endif
494
495 #if PiccADRcv_en
496 /***********************************************************************************
497 模块产生中断后,直接读取数据
498 输入: 无
499 输出: TxDrv——TX驱动,0x01——仅TX1,0x02——仅TX2,0x03——TX1、TX2全驱动
500 TagType——目标类型,同PiccRequest函数
501 Sak——选择应答,同PiccSelect函数
502 Snr——序列号,,同PiccSelect函数
503 DTBfr——块数据首址
504 返回: 0——成功,其它值——失败
505 ***********************************************************************************/
506 INT8U PiccADRcv(INT8U *TxDrv,INT8U *TagType,INT8U *Sak,INT8U *Snr,INT8U *DTBfr)
507 {
508 1 INT8U Status = 0xff;
509 1
510 1 if(Ser_Rcv())
511 1 {
512 2 if(SEQ == (SerBfr[CMDTYPE]&0xf0))
513 2 { //包号匹配
514 3 Status = OK;
515 3 }
516 2 else
517 2 Status = SEQERR; //包号不匹配
518 2
519 2 if(Status == OK)
520 2 {
521 3 Status = SerBfr[STATUS];
522 3 if(Status == OK)
523 3 {
524 4 *TxDrv = SerBfr[DATA];
525 4 TagType[0] = SerBfr[DATA+1];
526 4 TagType[1] = SerBfr[DATA+2];
527 4 *Sak = SerBfr[DATA+3];
528 4 memcopy(Snr,&SerBfr[DATA+5],SerBfr[DATA+4]);
529 4 if(DTBfr != 0)
530 4 memcopy(DTBfr,&SerBfr[DATA+5+SerBfr[DATA+4]],16);
531 4 }
532 3 }
533 2 }
534 1 return Status;
535 1 }
536 #endif
537
538 #if PiccReadADDT_en
539 /***********************************************************************************
540 发送读自动检测命令
541 输入: Mode:0x00——停止检测,0x01——继续检测
542 输出: TxDrv——TX驱动,0x01——仅TX1,0x02——仅TX2,0x03——TX1、TX2全驱动
543 TagType——目标类型,同PiccRequest函数
544 Sak——选择应答,同PiccSelect函数
545 Snr——序列号,,同PiccSelect函数
546 DTBfr——块数据首址
547 返回: 0——成功,
548 -1——未检测到卡
549 -100——未进入自动检测
550 其它值——失败
551 ***********************************************************************************/
C51 COMPILER V8.02 ZLG500S 03/16/2009 15:23:02 PAGE 10
552 INT8U PiccReadADDT(INT8U Mode,INT8U *TxDrv,INT8U *TagType,INT8U *Sak,INT8U *Snr,INT8U *DTBfr) //若DTBfr为
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -