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

📄 scanner.c

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 C
📖 第 1 页 / 共 4 页
字号:
      			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 db(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
		      	{				
			        viccdata[0] = 15;     		//len
			        flags = ISOFlagsSys&0xfb;	// not inventory
	        		flags |= 0x20;			// address_flag	,no security
	        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作 			        
			      	viccdata[1] = flags;     	//flags
			      	viccdata[2] = 0x23;		//cmd
			      	for(j=0;j<8;j++)		// copy uid
			      	{
			      		viccdata[3+j] = labeldata[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;
      			
      				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
		{
				viccdata[0] = 15;     			//len
				flags = ISOFlagsSys&0xfb;		// not inventory
	        	flags |= 0x20;				// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作 
				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;
      			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;
      			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 dbTime(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();
      			
      				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
		{			
			viccdata[0] = 15;     //len
			flags = ISOFlagsSys&0xfb;	// not inventory
	        	flags |= 0x20;	// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	      		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();
      			
      			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();
      			
      			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 dbComPrefix(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
		      	{	        
	        		viccdata[0] = 15;     	//len
	        		flags = ISOFlagsSys&0xfb;	// not inventory
	        		flags |= 0x20;		// address_flag	,no security
	        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	      			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;
      				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(ec == 0x0d0a)
	      			{
	      				serialPortOutput1byte(ec>>8);
	      				serialPortOutput1byte(ec&0xff);
	      			}
	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
			}
		}
		else	//different uid
		{
	        	viccdata[0] = 15;     	//len
	        	flags = ISOFlagsSys&0xfb;	// not inventory
	        	flags |= 0x20;		// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	      		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;
      			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(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;
      			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(ec == 0x0d0a)
      			{
      				serialPortOutput1byte(ec>>8);

⌨️ 快捷键说明

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