📄 iso15693uid16.txt
字号:
版权:www.rfidx.com.cn 富库智能科技
www.focool.com
对硬件接口部分扫描程序
------------------------------------------------------------------------------------------------------
ISO15693_UID_16
------------------------------------------------------------------------------------------------------
0 = rptr; 总接收到的数据
1; 有效卡数量
2; 有冲突卡数量
3~10;冲突卡位置
11卡号,10个字节一组卡好,前两个字节保留
char ISO15693_UID_16(unsigned char flags,
unsigned char AFI,
unsigned char masklengh,
unsigned char uid,
unsigned char rcv)
{
unsigned char idata TimerReload, status, cnt,err, ts,col, rcvLen = 1,txdatalength,i;
bit flag;use to check the existing of the tag in the RFfield
unsigned char reclength,cardno=0,collno=0;
unsigned char rptr=11,cptr=3;
unsigned char cmd[20];
cmd[0] = flags 0x06;
cmd[1] = ISO15693_INVENTORY;
txdatalength= 2;
if ( flags & 0x10 )
{
cmd[txdatalength] = AFI;
txdatalength++;
}
for(i=0;i10;i++)
{
rcv[i]=0x00;
}
cmd[txdatalength] = masklengh;
txdatalength++;
if (masklengh%8)
{
cnt = masklengh8 + 1;
}
else
{
cnt = masklengh8;
}
if (cnt)
{
for(i=0;icnt;i++)
{
cmd[txdatalength] = uid;
txdatalength++;
uid++;
}
}
TimerReload = 0x1F;
flag = 0;
status = TI_OK;
RegChannelRedundancy = RegChannelRedundancy 0x04; txcrc enable
RegTimerReload = TimerReload;
RegTimerControl = 0x02;
RegCoderControl = RegCoderControl & (~0x80);
RegInterruptRq = 0x3F;
RegControl=RegControl 0x01;
RegCommand = 0x00;
for (ts = 0; ts txdatalength; ts++)
{
RegFIFOData = cmd[ts];
}
RegCommand = PCD_TRANSCEIVE;
MRC500_CNT =0x00;
while ((!(RegInterruptRq & 0x10)) && (MRC500_CNT 30000) )
{
MRC500_CNT += 1;
}
if(MRC500_CNT 20000) access mrc500 timeout
{
RegCommand=0x00; PCD_IDLE;
status= TI_ACCESSTIMEOUT;
MRC500_CNT =0x00;
return status;
}
RegChannelRedundancy = RegChannelRedundancy &(~0x04); crc
RegTxControl = RegTxControl 0x10; 100 module
RegCoderControl = RegCoderControl 0x80; one pusle
for (ts=0; ts16; ts++)
{
status = TI_OK;
RegInterruptRq = 0x3F;
WDTD=0x87;
WDTC=0x1F;
while (!(RegInterruptRq & 0x28 ));
if (RegInterruptRq & 0x20)
{
status = I2_NO_TAG;
}
else
{
if(RegInterruptRq & 0x08)
{
err = RegErrorFlag;
if (err & 0x08)
{
status = I2_CRCERR;
}
if (err & 0x01)
{
status = I2_COLLERR;
col = RegCollPos;
}
if (err & 0x04)
{
status = I2_FRAMINGERR;
}
}
}
if ((status == TI_OK) (status == I2_COLLERR))
{
reclength = RegFIFOLength;
if ( status == TI_OK )
{
for(cnt=1;cnt=reclength;cnt++)
{
rcv[rptr] = RegFIFOData;
rptr++;
}
cardno++;
}
else
{
rcv[cptr] = ts;
cptr++;
collno++;
}
}
if (ts 15)
{
RegControl = RegControl 0x01;
RegCommand = PCD_TRANSCEIVE;
delay_1ms(1);
}
}
rcv[0] = rptr; 总接收到的数据
rcv[1] = cardno; 有效卡数量
rcv[2] = collno; 有冲突卡数量
RegCoderControl = RegCoderControl & (~0x80);
RegTxControl = RegTxControl & (~0x10);
WDTD=0x87;
WDTC=0x1F;
if(cardno0)
{
return TI_OK;
}
else if(collno0)
{
return TI_OK;
}
else
{
return status;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -