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

📄 scanner.c

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 C
📖 第 1 页 / 共 4 页
字号:
      				serialPortOutput1byte(ec&0xff);
      			}
      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
      		}      		
      	}
      	else
      	{;}	//error	       
}
static void dbTimeComPrefix(void)
{
	uchar i,j,m,k;   
	uchar flags = 0;
	uchar num_card;	

	myInvOut();       	
	num_card = labeldata[0];	
	if(num_card != 0)bReadTag = 1;      		     		
	if( num_card == 1)
    {
      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID 
      		
	      	if(compareUid()==0 )	// same uid
	      	{
		      	if(trigger == 0)// single read
		      	{
				flags = ISOFlagsSys&0xfb;	// not inventory
	        		flags |= 0x20;	// address_flag	,no security
	        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        		viccdata[0] = 15;     //len
	      			viccdata[1] = flags;     //flags
	      			viccdata[2] = 0x23;	//cmd
	      			for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
	      	
		      		viccdata[11] = db_adr;	//start addr
		      		viccdata[12] = (db_n+1);		// length
		      		wr_crc_send(); 	                                                   

	      			ISOMode = ISOModeSys&0xe7;	//read ,all	      		
	      			m = sendISOCmd(ISOMode);
	      			CS_RAM_1;
	      			getBufferTime();
      			
	      			serialPortOutput1byte(deviceAddr);	//sen out addr
	      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*5;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]); 
      				}
      				else	//不含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*4;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]);
      				}
      				
	      			if(sc == 0x0d0a)
	      			{
	      				serialPortOutput1byte(sc>>8);
	      				serialPortOutput1byte(sc&0xff);
	      			}
	      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	      			serialPortOutput1byte(Day);
	      			serialPortOutput1byte(Hour);
	      			serialPortOutput1byte(Minute);
	      			serialPortOutput1byte(Second);	//send out time	
	      			if(ec == 0x0d0a)
	      			{
	      				serialPortOutput1byte(ec>>8);
	      				serialPortOutput1byte(ec&0xff);
	      			}
	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec      			      	
			}
		}
		else	//different uid
		{
			flags = ISOFlagsSys&0xfb;	// not inventory
	        	flags |= 0x20;			// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        	viccdata[0] = 15;     		//len
	      		viccdata[1] = flags;     	//flags
	      		viccdata[2] = 0x23;		//cmd
	      		for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid	      		
		      	viccdata[11] = db_adr;		//start addr
		      	viccdata[12] = (db_n+1);		// length
		      	wr_crc_send();                   

	      		ISOMode = ISOModeSys&0xe7;	//read ,all		      	
	      		m = sendISOCmd(ISOMode);
	      		CS_RAM_1;	
	      		getBufferTime();
      			
	      		serialPortOutput1byte(deviceAddr);	//send out addr
	      		if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}
      			
	      		if(sc == 0x0d0a)
	      		{
	      			serialPortOutput1byte(sc>>8);
	      			serialPortOutput1byte(sc&0xff);
	      		}
	      		else 	serialPortOutput1byte(sc&0xff);//send out sc
	      		serialPortOutput1byte(Day);
	      		serialPortOutput1byte(Hour);
	      		serialPortOutput1byte(Minute);
	      		serialPortOutput1byte(Second);	//send out time	
	      		if(ec == 0x0d0a)
	      		{
	      			serialPortOutput1byte(ec>>8);
	      			serialPortOutput1byte(ec&0xff);
	      		}
	      		else 	serialPortOutput1byte(ec&0xff);//sendout ec 						
		}
		for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid		      		
      	} 
      	else if( num_card >= 2)  //exist card
	{                    	
	        flags = ISOFlagsSys&0xfb;	// not inventory
	        flags |= 0x20;	// address_flag	,no security
	        if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        for(i=0;i<num_card;i++)	// read multiple blocks
	        {
	        	viccdata[0] = 15;     //len
	      		viccdata[1] = flags;     //flags
	      		viccdata[2] = 0x23;	//cmd
	      		for(j=0;j<8;j++)	// copy uid
	      		{
	      			viccdata[3+j] = labeldata[i*10+10-j];	      			
	      		}
	      		viccdata[11] = db_adr;	//start addr
	      		viccdata[12] = (db_n+1);		// length
	      		wr_crc_send();           

      			ISOMode = ISOModeSys&0xe7;	//read ,all	      		
      			m = sendISOCmd(ISOMode);
      			CS_RAM_1;
      			getBufferTime();
      			
      			serialPortOutput1byte(deviceAddr);	//sen out addr
      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}
      			
      			if(sc == 0x0d0a)
      			{
      				serialPortOutput1byte(sc>>8);
      				serialPortOutput1byte(sc&0xff);
      			}
      			else 	serialPortOutput1byte(sc&0xff);//send out sc
      			serialPortOutput1byte(Day);
      			serialPortOutput1byte(Hour);
      			serialPortOutput1byte(Minute);
      			serialPortOutput1byte(Second);	//send out time	
      			if(ec == 0x0d0a)
      			{
      				serialPortOutput1byte(ec>>8);
      				serialPortOutput1byte(ec&0xff);
      			}
      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
      		}      		
      	}
      	else
      	{;}	//error	     
}
		
static void snrDb(void)
{
		uchar i,j,m,k;   
		uchar flags = 0;
		uchar num_card;	

		myInvOut();       	
      	num_card = labeldata[0];	
      	if(num_card != 0)bReadTag = 1;	     		
		if( num_card == 1)
      	{
      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID       		
	      	if(compareUid()==0 )	// same uid
	      	{
		      	if(trigger == 0)// single read
		      	{
					flags = ISOFlagsSys&0xfb;	// not inventory
	        		flags |= 0x20;	// address_flag	,no security       
	        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
		        	viccdata[0] = 15;     //len
		      		viccdata[1] = flags;     //flags
		      		viccdata[2] = 0x23;	//cmd
		      		for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
		      		
		      		viccdata[11] = db_adr;	//start addr
		      		viccdata[12] = (db_n+1);		// length
		      		wr_crc_send();   

	      			ISOMode = ISOModeSys&0xe7;	//read ,all		      		
	      			m = sendISOCmd(ISOMode);	      			
	      			CS_RAM_1;
	      			for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
	      			if(sc == 0x0d0a)
	      			{
	      				serialPortOutput1byte(sc>>8);
	      				serialPortOutput1byte(sc&0xff);
	      			}
	      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	      			
	      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*5;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]); 
      				}
      				else	//不含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*4;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]);
      				}     
      				 				
	      			if(ec == 0x0d0a)
	      			{
	      				serialPortOutput1byte(ec>>8);
	      				serialPortOutput1byte(ec&0xff);
	      			}
	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec      			      	
			}
		}
		else	//different uid
		{
				flags = ISOFlagsSys&0xfb;	// not inventory
	        	flags |= 0x20;	// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
		        viccdata[0] = 15;     //len
		      	viccdata[1] = flags;     //flags
		      	viccdata[2] = 0x23;	//cmd
		      	for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
		      	
		      	viccdata[11] = db_adr;	//start addr
		      	viccdata[12] = (db_n+1);// length
		      	wr_crc_send();            

	      		ISOMode = ISOModeSys&0xe7;	//read ,all		      	
	      		m = sendISOCmd(ISOMode);       			
	      		CS_RAM_1;
	      		for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);	
	      		if(sc == 0x0d0a)
	      		{
	      			serialPortOutput1byte(sc>>8);
	      			serialPortOutput1byte(sc&0xff);
	      		}
	      		else 	serialPortOutput1byte(sc&0xff);//send out sc
	      		if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}    
      							
	      		if(ec == 0x0d0a)
	      		{
	      			serialPortOutput1byte(ec>>8);
	      			serialPortOutput1byte(ec&0xff);
	      		}
	      		else 	serialPortOutput1byte(ec&0xff);//sendout ec					
		}
		for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid		      		
      	} 
      	else if( num_card >= 2)  //exist card
		{                    	
	        flags = ISOFlagsSys&0xfb;	// not inventory
	        flags |= 0x20;	// address_flag	,no security
	        if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        for(i=0;i<num_card;i++)	// read multiple blocks
	        {
	        	viccdata[0] = 15;     //len
	      		viccdata[1] = flags;     //flags
	      		viccdata[2] = 0x23;	//cmd
	      		for(j=0;j<8;j++)	// copy uid
	      		{
	      			viccdata[3+j] = labeldata[i*10+10-j];
	      		}
	      		viccdata[11] = db_adr;	//start addr
	      		viccdata[12] = (db_n+1);		// length
	      		wr_crc_send();                                                    

      			ISOMode = ISOModeSys&0xe7;	//read ,all	      		
      			m = sendISOCmd(ISOMode); 
      			CS_RAM_1;
      			for(j=0;j<8;j++)
      			{      				
      				serialPortOutput1byte(labeldata[i*10+3+j]);
      			}
      			if(sc == 0x0d0a)
      			{
      				serialPortOutput1byte(sc>>8);
      				serialPortOutput1byte(sc&0xff);
      			}
      			else 	serialPortOutput1byte(sc&0xff);//send out sc
      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}    
      			 				
      			if(ec == 0x0d0a)
      			{
      				serialPortOutput1byte(ec>>8);
      				serialPortOutput1byte(ec&0xff);
      			}
      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
      		}      		
      	}
      	else
      	{;}	//error      
}
static void snrDbTime(void)
{
		uchar i,j,m,k;   
		uchar flags = 0;
		uchar num_card;	

		myInvOut();       	
      	num_card = labeldata[0];		     		
      	if(num_card != 0)bReadTag = 1;
		if( num_card == 1)
      	{
      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID       		
	      	if(compareUid()==0 )	// same uid
	      	{
		      	if(trigger == 0)// single read
		      	{
		      		flags = ISOFlagsSys&0xfb;	// not inventory
	        		flags |= 0x20;	// address_flag	,no security
	        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        		viccdata[0] = 15;     //len
	      			viccdata[1] = flags;     //flags
	      			viccdata[2] = 0x23;	//cmd
	      			for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
	      		
		      		viccdata[11] = db_adr;	//start addr
		      		viccdata[12] = (db_n+1);// length
		      		wr_crc_send(); 	                                                   

	      			ISOMode = ISOModeSys&0xe7;//read ,all	      			
	      			m = sendISOCmd(ISOMode);
					CS_RAM_1;
	      			getBufferTime();
	      			
	      			for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
	      			if(sc == 0x0d0a)
	      			{
	      				serialPortOutput1byte(sc>>8);
	      				serialPortOutput1byte(sc&0xff);
	      			}
	      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*5;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]); 
      				}
      				else	//不含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*4;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]);
      				}
	      			if(sc == 0x0d0a)
	      			{
	      				serialPortOutput1byte(sc>>8);
	      				serialPortOutput1byte(sc&0xff);
	      			}
	      			else 	serialPortOutput1byte(sc&0xff);//send out sc	
	      			serialPortOutput1byte(Day);
	      			serialPortOutput1byte(Hour);
	      			serialPortOutput1byte(Minute);
	      			serialPortOutput1byte(Second);	//send out time	      			
	      			if(ec == 0x0d0a)
	      			{
	      				serialPortOutput1byte(ec>>8);
	      				serialPortOutput1byte(ec&0xff);
	      			}
	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec 
			}
		}
		else	//different uid
		{
				flags = ISOFlagsSys&0xfb;	// not inventory
	        	flags |= 0x20;	// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作	
	        	viccdata[0] = 15;     //len
	      		viccdata[1] = flags;     //flags
	      		viccdata[2] = 0x23;	//cmd
	      		for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
	      		
		      	viccdata[11] = db_adr;	//start addr
		      	viccdata[12] = (db_n+1);		// length
		      	wr_crc_send(); 	                                                   

	      		ISOMode = ISOModeSys&0xe7;	//read ,all		      		
	      		m = sendISOCmd(ISOMode);
				CS_RAM_1;
	      		getBufferTime();
	      		
	      		for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);	
	      		if(sc == 0x0d0a)
	      		{
	      			serialPortOutput1byte(sc>>8);
	      			serialPortOutput1byte(sc&0xff);
	      		}
	      		else 	serialPortOutput1byte(sc&0xff);//send out sc
	      		if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}
	      		if(sc == 0x0d0a)
	      		{
	      			serialPortOutput1byte(sc>>8);
	      			serialPortOutput1byte(sc&0xff);
	      		}
	      		else 	serialPortOutput1byte(sc&0xff);//send out sc	
	      		serialPortOutput1byte(Day);
	      		serialPortOutput1byte(Hour);
	      		serialPortOutput1byte(Minute);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -