#include#include
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define GetRegPage(addr)(0x80 | (addr>>3))
idata struct TranSciveBuffer{uchar MfCommand;
uchar MfLength;
uchar MfData[19];
};
void delay(uchar t)
{
uchar i,j;
for(i=0;ifor(j=0;j<110;j++);
}
void WriteRawIO(unsigned char Address,unsigned char value)
{
XBYTE[Address]=value;
}
unsigned char ReadRawIO(unsigned char Address)
{
return XBYTE[Address];
}
void WriteRC(unsigned char Address, unsigned char value)
{
WriteRawIO(0x00,GetRegPage(Address));
WriteRawIO(Address,value);
}
unsigned char ReadRC(unsigned char Address)
{
WriteRawIO(0x00,GetRegPage(Address));
return ReadRawIO(Address);
}
void ClearBitMask(uchar reg,uchar mask)
{
char tmp=0x0;
tmp = ReadRC(reg);
WriteRC(reg,tmp & ~mask);
}
void SetBitMask(uchar reg,uchar mask)
{
char tmp=0x0;
tmp=ReadRC(reg);
WriteRC(reg,tmp|mask);
}
void FlushFIFO(void)
{
SetBitMask(RegControl,0x01);
}
void PcdAntennaOff()
{
ClearBitMask(RegTxControl,0x03);
}
void PcdAntennaOn()
{
SetBitMask(RegTxControl,0x03);
}
void PcdSetTmo(unsigned char tmoLength)
{
switch(tmoLength)
{
case 1:
WriteRC(RegTimerClock,0x07);
WriteRC(RegTimerReload,0x6a);
break;
case 2:
WriteRC(RegTimerClock,0x07);
WriteRC(RegTimerReload,0xa0);
break;
case 3:
WriteRC(RegTimerClock,0x09);
WriteRC(RegTimerReload,0xa0);
break;