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

📄 iso15693uid16.txt

📁 同时读取ISO15693(I CODE II,My-D卡)16张卡的硬件接口C程序
💻 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 + -