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

📄 pcdvalue.c

📁 RC500Basicfunctionlibrary,对于RFID开发者有很大的帮助!
💻 C
字号:
#include<reg52.h>
#include<rc500.h>

char PcdValue(uchar dd_mode,uchar addr,uchar *value)
{
    char status;
    uchar i;
    idata struct TranSciveBuffer{uchar MfCommand;
                                 uchar MfLength;
                                 uchar MfData[4];
                                }MfComData;
    struct TranSciveBuffer *pi;
    pi=&MfComData;

    PcdSetTmo(106);
    MfComData.MfCommand=PCD_TRANSCEIVE;
    MfComData.MfLength=2;
    MfComData.MfData[0]=dd_mode;
    MfComData.MfData[1]=addr;

    status=PcdComTransceive(pi);
    if(status!=MI_NOTAGERR)
    {
        if(MfComData.MfLength!=4)
        {
           status=MI_BITCOUNTERR;
        }
        else
        {
           MfComData.MfData[0]&=0x0f;
           switch(MfComData.MfData[0])
           {
              case 0x00:
                 status=MI_NOTAUTHERR;
                 break;
              case 0x0a:
                 status=MI_OK;
                 break;
              case 0x01:
                 status=MI_VALERR;
                 break;
              default:
                 status=MI_CODEERR;
                 break;
           }
        }
     }
     if(status==MI_OK)
     {
        PcdSetTmo(4);
        MfComData.MfCommand=PCD_TRANSCEIVE;
        MfComData.MfLength=4;
        pi=&MfComData;
        for(i=0;i<4;i++)
        {
            MfComData.MfData[i]=*(value+i);
        }
        status=PcdComTransceive(pi);
        if(status==MI_OK||status==MI_NOTAGERR)
        {
           if(MfComData.MfLength!=4)
           {
              status = MI_BITCOUNTERR;
           }
           else
           {
              status=MI_OK;
            }
         }
         else
         {
              status=MI_COM_ERR;
          }
     }
     if(status==MI_OK)
     {
        MfComData.MfCommand=PCD_TRANSCEIVE;
        MfComData.MfLength=2;
        MfComData.MfData[0]=PICC_TRANSFER;
        MfComData.MfData[1]=addr;
        status=PcdComTransceive(pi);
        if(status!=MI_NOTAGERR)
        {
            if(MfComData.MfLength!=4)
            {
               status=MI_BITCOUNTERR;
            }
            else
            {
               MfComData.MfData[0]&=0x0f;
               switch(MfComData.MfData[0])
               {
                  case 0x00:
                     status=MI_NOTAUTHERR;
                     break;
                  case 0x0a:
                     status=MI_OK;
                     break;
                  case 0x01:
                     status=MI_VALERR;
                     break;
                  default:
                     status=MI_CODEERR;
                     break;
               }
            }
        }
     }
   return status;
}

⌨️ 快捷键说明

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