{
n = ReadRawRC(ComIrqReg); i--; }
while ((i!=0) && !(n&0x01) && !(n&waitFor)); ClearBitMask(BitFramingReg,0x80);
if (i!=0) {
if(!(ReadRawRC(ErrorReg)&0x1B)) {
status = MI_OK; if (n & irqEn & 0x01)
{ status = MI_NOTAGERR; } if (Command == PCD_TRANSCEIVE) {
n = ReadRawRC(FIFOLevelReg);
lastBits = ReadRawRC(ControlReg) & 0x07; if (lastBits)
{ *pOutLenBit = (n-1)*8 + lastBits; } else
{ *pOutLenBit = n*8; } if (n == 0)
{ n = 1; } if (n > MAXRLEN)
{ n = MAXRLEN; } for (i=0; i { pOutData[i] = ReadRawRC(FIFODataReg); } } else { status = MI_ERR; } } SetBitMask(ControlReg,0x80); // stop timer now WriteRawRC(CommandReg,PCD_IDLE); return status; } ///////////////////////////////////////////////////////////////////// //开启天线 //每次启动或关闭天险发射之间应至少有1ms的间隔 } ///////////////////////////////////////////////////////////////////// void PcdAntennaOn(void) { uint8 xdata i; i = ReadRawRC(TxControlReg); if (!(i & 0x03)) { SetBitMask(TxControlReg, 0x03); } } ///////////////////////////////////////////////////////////////////// //关闭天线 ///////////////////////////////////////////////////////////////////// void PcdAntennaOff(void) { ClearBitMask(TxControlReg, 0x03); } ///////////////////////////////////////////////////////////////////// //rc522初始化 ///////////////////////////////////////////////////////////////////// void InitRc522(void) { PcdReset(); PcdAntennaOff(); delay1ms500us(); PcdAntennaOn(); M500PcdConfigISOType( 'A' ); }