?? pcdvalue.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 + -