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

📄 zlg500b.lst

📁 RFID 使用C8051F020和周立功RC500开发模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
 161          #if mifs_anticoll_en
              uchar mifs_anticoll(uchar _Bcnt,uchar idata *_SNR)              //开始防冲突操作,返回卡的序列号
              {
                      ser_buffer[SEQNR]=0;
                      ser_buffer[COMMAND]=0x42;                                        //
                      ser_buffer[LENGTH]=0x01;
                      ser_buffer[DATA]=_Bcnt;
                      
                      if(ser_comm()!=COMM_OK)
                              return COMM_ERR;                                //己经将数据发出
                              
                      if(ser_buffer[STATUS]==MI_OK)
                      {
                              memcpy(_SNR,&ser_buffer[DATA],4);                       //复制字符得到卡序列号
                      }
                      return ser_buffer[STATUS];              
              }
              #endif
 179          
C51 COMPILER V7.20   ZLG500B                                                               05/28/2007 14:55:19 PAGE 4   

 180          #if mifs_anticoll2_en
              uchar mifs_anticoll2(uchar _Encoll,uchar _Bcnt,uchar idata *_SNR)                       //可禁止或允许多张卡进入
              {
                      ser_buffer[SEQNR]=0;
                      ser_buffer[COMMAND]=0x71;
                      ser_buffer[LENGTH]=0x02;
                      ser_buffer[DATA]=_Encoll;
                      ser_buffer[DATA+1]=_Bcnt;
                      
                      if(ser_comm()!=COMM_OK)
                              return COMM_ERR;
                              
                      if(ser_buffer[STATUS]==MI_OK)
                      {
                              memcpy(_SNR,&ser_buffer[DATA],4);                                               //复制字符得到卡序列号
                      }
                      return ser_buffer[STATUS];
              }
              #endif
 199          
 200          #if mifs_select_en
              uchar mifs_select(uchar idata *_SNR,uchar idata *_Size)                         //选择卡,返回卡的存贮容量
              {
                      ser_buffer[SEQNR]=0;
                      ser_buffer[COMMAND]=0x43;
                      ser_buffer[LENGTH]=0x04;
                      memcpy(&ser_buffer[DATA],_SNR,4);                               //数据字节为卡的序列号
                              
                      if(ser_comm()!=COMM_OK)
                              return COMM_ERR;
                              
                      if(ser_buffer[STATUS]==MI_OK)
                      {
                              *_Size=ser_buffer[DATA];                        //返回卡的容量
                      }
                      return ser_buffer[STATUS];      
              }
              #endif
 218          
 219          #if mifs_authentication_en
 220          uchar mifs_authentication(uchar _Mode,uchar _SecNr)                     //开始进行验证操作
 221          {
 222   1              ser_buffer[SEQNR]=0;
 223   1              ser_buffer[COMMAND]=0x44;
 224   1              ser_buffer[LENGTH]=0x02;
 225   1              ser_buffer[DATA]=_Mode;
 226   1              ser_buffer[DATA+1]=_SecNr;                              //所访问卡的扇区号   必须小于16
 227   1              
 228   1              if(ser_comm()!=COMM_OK)
 229   1                      return COMM_ERR;
 230   1              
 231   1              return ser_buffer[STATUS];      
 232   1      }
 233          #endif
 234          
 235          #if mifs_authentication2_en
 236          uchar mifs_authentication2(uchar _Mode,uchar _SecNr,uchar _KeyNr)               //可选择密匙区验证
 237          {                                                                                                                                               //_KeyNr 用于证实的密钥区号
 238   1              ser_buffer[SEQNR]=0;
 239   1              ser_buffer[COMMAND]=0x72;
 240   1              ser_buffer[LENGTH]=0x03;
 241   1              ser_buffer[DATA]=_Mode;
C51 COMPILER V7.20   ZLG500B                                                               05/28/2007 14:55:19 PAGE 5   

 242   1              if(_SecNr<=32)
 243   1                      ser_buffer[DATA+1]=_SecNr;
 244   1              else
 245   1                      ser_buffer[DATA+1]=32+((_SecNr-32)<<2);                    //为了支持S70卡
 246   1              ser_buffer[DATA+2]=_KeyNr;
 247   1              
 248   1              if(ser_comm()!=COMM_OK)
 249   1                      return COMM_ERR;
 250   1              
 251   1              return ser_buffer[STATUS];      
 252   1      }
 253          #endif
 254          
 255          #if mifs_authKey_en                                                                                                     //ISO 9798-2在RWM和RFID之间使用3轮确认
 256          uchar mifs_authKey(uchar _Mode,uchar _SecNr,uchar *_Key)                        //直接密码验证
 257          {                                                                                                                                       //_Key用于证实的密码首址
 258   1              ser_buffer[SEQNR]=0;
 259   1              ser_buffer[COMMAND]=0x73;
 260   1              ser_buffer[LENGTH]=0x08;
 261   1              ser_buffer[DATA]=_Mode;
 262   1              if(_SecNr<=32)
 263   1                      ser_buffer[DATA+1]=_SecNr;
 264   1              else
 265   1                      ser_buffer[DATA+1]=32+((_SecNr-32)<<2);                 //为了支持S70卡
 266   1              memcpy(&ser_buffer[DATA+2],_Key,6);                                             //将密码向500B上面发
 267   1              
 268   1              
 269   1              if(ser_comm()!=COMM_OK)
 270   1                      return COMM_ERR;
 271   1              
 272   1              return ser_buffer[STATUS];      
 273   1      }
 274          #endif
 275          
 276          #if mifs_halt_en
 277          uchar mifs_halt(void)                                   //将卡置于挂起状态
 278          {
 279   1              ser_buffer[SEQNR]=0;
 280   1              ser_buffer[COMMAND]=0x45;
 281   1              ser_buffer[LENGTH]=0x00;
 282   1              
 283   1              if(ser_comm()!=COMM_OK)
 284   1                      return COMM_ERR;
 285   1              
 286   1              return ser_buffer[STATUS];      
 287   1      }
 288          #endif
 289          
 290          #if mifs_read_en
 291          uchar mifs_read(uchar _Adr,uchar idata *_Data)                  //从卡中相应地址中读出一个16字节的数据块
 292          {
 293   1              ser_buffer[SEQNR]=0;
 294   1              ser_buffer[COMMAND]=0x46;
 295   1              ser_buffer[LENGTH]=0x01;
 296   1              ser_buffer[DATA]=_Adr;
 297   1                      
 298   1              if(ser_comm()!=COMM_OK)
 299   1                      return COMM_ERR;
 300   1                      
 301   1              if(ser_buffer[STATUS]==MI_OK)                                   //如果读成功
 302   1              {
 303   2                      memcpy(_Data,&ser_buffer[DATA],16);                     //将数据复制出来
C51 COMPILER V7.20   ZLG500B                                                               05/28/2007 14:55:19 PAGE 6   

 304   2              }
 305   1              return ser_buffer[STATUS];              
 306   1      }
 307          #endif
 308          
 309          #if mifs_write_en
 310          uchar mifs_write(uchar _Adr,uchar idata *_Data)                 //向指定地址写入16字节的数据
 311          {
 312   1              ser_buffer[SEQNR]=0;
 313   1              ser_buffer[COMMAND]=0x47;
 314   1              ser_buffer[LENGTH]=17;
 315   1              ser_buffer[DATA]=_Adr;
 316   1              memcpy(&ser_buffer[DATA+1],_Data,16);           //将要发送的数据复制到数据帧中
 317   1                      
 318   1              if(ser_comm()!=COMM_OK)
 319   1                      return COMM_ERR;
 320   1              
 321   1              return ser_buffer[STATUS];              
 322   1      }
 323          #endif
 324          
 325          #if mifs_increment_en
              uchar mifs_increment(uchar _Adr,long idata *_Value)                     //增加访问单元块的字节中的数值,并将结果保存在卡的内

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -