⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlg500s.lst

📁 ZLG522S的功能、硬件接口和ZLG500S相同
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -