亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? reader.c

?? 很強的射頻卡reader源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
					{
					//u_ram.host.RxBuffer[ReceivCNT]=SBUF;	
						ReceivCNT = 0;
           				Rec_Status=0;
						if (SBUF == ETX)
						{
						if( CheckSum == 0  || CheckSum == 0x10)
							DecodeFlag = 1;
						}
					}
					//if(CheckSum == u_ram.host.RxBuffer[ReceivCNT-1]	&& SBUF == ETX ) DecodeFlag = 1;
					//if(SBUF == ETX ) DecodeFlag = 1;
	  				else	
					{
						u_ram.host.RxBuffer[ReceivCNT]=SBUF;
     	      			ReceivCNT++;
						if(ReceivCNT >= MaxRxd)Rec_Status=0;  //when count out of range re-synchronous received
    						CheckSum ^=SBUF;
				    }
         		break; 

   			default:          //out received status
           		ReceivCNT = 0;
           		Rec_Status=0; //initial receiver buffer
			}	//end of switch case Rec_status
			//Regetrc500EEPROMTimeOut=C_UART_TimeOut;        //set byte time out value. The time count down at timer 0 
		}		//end of protected
	}			/*-----------end of if(RI) */

	else //------------------------------------Below code for transmit
  	{
  		TI=0;
  		if(TxFlag)
	    {
     		if(STX_Pointer != ETX_Pointer)            //checking the end of transmit buffer
     		{
	    			SBUF=u_ram.host.TxBuffer[STX_Pointer];      //output data to communication interface 
		    		STX_Pointer++;                          //pointer to next data
	    			if(STX_Pointer >= MaxTxd)STX_Pointer=0;
   			}  
     		else  
        	{
				STX_Pointer=0; 
	 			ETX_Pointer=0;
		   		SBUF=ETX;       //Transmit end of transmit code to host
				TxFlag=0;
				TxFlag1=0;	 
	 			// TxFlag=0;      //clear flag for end of transmit process
			}
  		//if(TxFlag1 == 1 ) TxFlag=0;
		}	//end of if TxFlag
   		else  
    		{   
			RS485 = 0;
			TxFlag1=1;//UART_MCR &=0xf7; //Set RS485 to received mode, the control pin is located on the 16c550
	    	REN=1;
		} 
	}//----------------------------------------end of transmit function  
}

//---------------------------------------------------------------------------------------------------------
// This function main work used for checking the control code. If parameter value match control code 
// before value inserted DLE code in to transmit buffer. 
// Send out data must be call this routine escape STX and ETX
//---------------------------------------------------------------------------------------------------------
void CheckControlCode(unsigned char value)
{
	while(WaitTxBufferEmpty()); //waitting to transmit buffer empty
  	u_ram.host.TxBuffer[ETX_Pointer]=value;                  
	ETX_Pointer++;
	if(ETX_Pointer >= MaxTxd)
	{
	  	while(WaitTxBufferEmpty()); //waitting to transmit buffer empty
	 	ETX_Pointer=0;
	}
 	TxCheckSum ^= value ;
}

//---------------------------------------------------------------------------------------------------------
// This function used for protect transmit buffer 
// return value = 0 indicated data can write to transmit buffer
// return value = 1 indicated can't write data to transmit buffer
// This routine call from CheckControlCode() routine
//---------------------------------------------------------------------------------------------------------
bit WaitTxBufferEmpty(void)
{
	if(STX_Pointer == 0 && ETX_Pointer == MaxTxd)	return 1; //buffer is full
  	else if((STX_Pointer-1)== ETX_Pointer)	return 1;       //buffer is full
   	return 0;
}
void ReturnStatus(unsigned char status)
{
	StartTransmit();   
	CheckControlCode(0x01);
  	CheckControlCode(status); 
  	CheckControlCode(TxCheckSum);
}

//---------------------------------------------------------------------------------------------------------
// This function used for send STX SQE and device address.
// When reply host command code before send data call this rountine.
//---------------------------------------------------------------------------------------------------------
void StartTransmit(void)
{
	RS485 = 1;  //UART_MCR |=0x08; //Set RS485 to transmit mode -16c550
	delay_1ms(3);
  	if(u_ram.host.RxBuffer[2] != CMD_Authentication )delay(3);
 	Rec_Status=0;
 	REN=0;
 	TI=0;
 	TxFlag=1;
 	ETX_Pointer=0;
 	STX_Pointer=0; 
 	TxCheckSum=0;
 	Regetrc500EEPROMTimeOut=C_UART_TimeOut;        //set byte time out value. The time count down at timer 0 
 	CheckControlCode(u_ram.host.RxBuffer[0]);  //sequence number   //seq  數據流水號
 	CheckControlCode(SlaveADR);  // Device address
 	SBUF=STX;                            //start transmit //02
}

//---------------------------------------------------------------------------------------------------------
//This routine used for active I/O ports.
//call from the main routine decode command code
//---------------------------------------------------------------------------------------------------------
bit SetPortActive(unsigned char SelectPort)
{
	unsigned char SelectPort0=0;   
	if(SelectPort>0x0F)
  		return 1;     //other value out of range IO.
	if(SelectPort==0) 
	{
		Output0Flag=0;
     	OutputPort0=0;	//Set to OFF
		Output1Flag=0;
     	OutputPort1=0;	//Set to OFF when port pull low
//		Output2Flag=0;
//     	OutputPort2=0;	//Set to OFF when port pull low
		//Output3Flag=0;
		//OutputPort3=0;	//Set to OFF when port pull low
		return 0;
	}
	else
	{		
		SelectPort0=SelectPort&0x01;
		if(SelectPort0)
		{
			Output0Flag=1;
     		Port.TimeOut[0]=0xFF;//set to ON forever
		}
		SelectPort0=SelectPort&0x02;
		if(SelectPort0!=0)
		{
			Output1Flag=1;
        	Port.TimeOut[1]=0xFF;  //set to ON forever
		}
//		SelectPort0=SelectPort&0x04;
//		if(SelectPort0!=0)
//		{
//			Output2Flag=1;
//			Port.TimeOut[2]=0xFF;  //set to ON forever
//		}
/*		SelectPort0=SelectPort&0x08;
		if(SelectPort0!=0)
		{
			Output3Flag=1;
			Port.TimeOut[3]=0xFF;  //set to ON forever
		}*/
		return 0;
	}
}

unsigned char GetPortStatus(unsigned char SelectPort)
{
  	SelectPort=0;
	switch(SelectPort)
	{
		case 0:
		if(!OutputPort0)//get  port0 in/output status
		{
			SelectPort|=0x01;
			SelectPort&=0xEF;
		}
		else 
		{
			SelectPort&=0xFE;
			SelectPort|=0x10;
		}
		if(!OutputPort1)//get  port1 in/output status
		{
			SelectPort|=0x02;
			SelectPort&=0xDF;
		}
		else 
		{
			SelectPort&=0xFD;
			SelectPort|=0x20;
		}
//		if(!OutputPort2)//get  port2 in/output status
//		{
//			SelectPort|=0x04;
//			SelectPort&=0xBF;
//		}
//		else 
//		{
//			SelectPort&=0xFB;
//			SelectPort|=0x40;
//		}
		/*
		if(!OutputPort3)//get  port3 in/output status
		{
			SelectPort|=0x08;
			SelectPort&=0x7F;
		}
		else 
		{
			SelectPort&=0xF7;
			SelectPort|=0x80;
		}*/
		break;
		
		default:
			SelectPort=0xff;
	}
	return(SelectPort);   
}

//---------------------------------------------------------------------------------------------------------
//This routine used for checking trigger I/O time out. When time out to close I/O ports.
//call from the timer 0 interrupt routine.
//---------------------------------------------------------------------------------------------------------
/*void CheckTimeOutIO(void)
{
	if(Output0Flag)//**********for IO port 0.
	{
		OutputPort0=1;		//ON IO port
		if(Port.TimeOut[0] < 0xFF)
     	{
     		if(Port.TimeOut[0]== 0)
     		{
				Output0Flag=0;   //time out to close IO port
				OutputPort0=0;
			}
     		Port.TimeOut[0]--;
		}       
	}		//***********end of IO port 0  

	if(Output1Flag)//**********for IO port 1.
	{
	  	OutputPort1=1;		//ON IO port
		if(Port.TimeOut[1] < 0xFF)
     	{
   		if(Port.TimeOut[1]== 0)
    		{
     		Output1Flag=0;   //time out to close IO port 
     		OutputPort1=0;
    		}
   		Port.TimeOut[1]--;
     	}       
  	} 	//******************end of IO port 1 

  	if(Output2Flag)//********for IO port 2.
	{
		OutputPort2=1;		//ON IO port
		if(Port.TimeOut[2] < 0xFF)
		{
     		if(Port.TimeOut[2]== 0)
     		{
        			Output2Flag=0;    //time out to close IO port
        			OutputPort2=0;
     		}
     		Port.TimeOut[2]--; 
	    	}       
  	}  //***************end of IO port 2
}
*/
//---------------------------------------------------------------------------------------------------------
// This routine used for toggle LED pattern.
// call from the main routine decode command code
// The parameter :RxBuffer[4] is indicated LED
//               :RxBuffer[5] is duty time of LED ON
//               :RxBuffer[6] is number of LED ON/OFF cycle
//---------------------------------------------------------------------------------------------------------
bit DecodeToggleLED(unsigned char *buffer)
{
	switch(buffer[0])
	{
	  	case 0x01://For toggle red LED parameter value
			DutyTimeLED_R=buffer[1];
			NumPeriodLED_R=buffer[2];
			RedLED_Flag=1;     //Depend on parameter value auto OFF LED at timer 0 interrupt
		break;

		case 0x02://For toggle green LED parameter value
			DutyTimeLED_G=buffer[1];
			NumPeriodLED_G=buffer[2];
			GreenLED_Flag=1;     //Depend on parameter value auto OFF LED at timer 0 interrupt
		break;

		case 0x03://For toggle red and green LED parameter value
			DutyTimeLED_R=DutyTimeLED_G=buffer[1];
			NumPeriodLED_R=NumPeriodLED_G=buffer[2];
			RedLED_Flag=1;     //Depend on parameter value auto OFF LED at timer 0 interrupt
			GreenLED_Flag=1;     
		break;

		default:
			return 1; //the data parameter out of range
  	}
	return 0;
}

//---------------------------------------------------------------------------------------------------------
//This routine used for ON LED forever.
//call from the main routine decode command code
//---------------------------------------------------------------------------------------------------------
bit SetLED_Active(unsigned char SelectLED)
{
	switch(SelectLED)
	{
		case 0x00:
			LED_R=OFF;
			LED_G=OFF;
			GreenLED_Flag=0;     
			RedLED_Flag=0;     
		break;
 
		case 0x01://For set red LED parameter value to forever ON
			LED_R= ON;   
			LED_G=OFF;
			DutyTimeLED_R=60;
			NumPeriodLED_R=0xFF;
			RedLED_Flag=1;
			GreenLED_Flag=0;  
		break;

		case 0x02://For set green LED parameter value to forever ON
			LED_G = ON;    
			LED_R=OFF;
			DutyTimeLED_G=60;
			NumPeriodLED_G=0xFF;
			GreenLED_Flag=1; 
			RedLED_Flag=0; 
			break;

		case 0x03://For toggle red and green LED parameter value
			LED_R = ON;
			LED_G = ON;
			DutyTimeLED_R=60;
			DutyTimeLED_G=60;
			NumPeriodLED_R=0xFF;
			NumPeriodLED_G=0xFF;
			RedLED_Flag=1;     //Depend on parameter value auto OFF LED at timer 0 interrupt
			GreenLED_Flag=1;     
		break;

		default:
	  		return 1; //the data parameter out of range
   	}
	return 0;
}


bit  C_Ext(unsigned char timelen)
{	
	unsigned char  C_extbuff[4];
//	if(timelen>255) return 1;
//	else 
	if(timelen==0)
	{
//		P4=P4&0xF7;
		P4=P4|0x08;
	}
	else if(timelen==255)
	{
//		P4=P4|0x08;
		P4=P4&0xF7;
		C_ExtFlag=0;
	}
	else
	{
		C_ext_CNT=timelen*225;
//		P4=P4|0x08;	
		P4=P4&0xF7;
		C_ExtFlag=1;
	}
	read_Flash(S_WIEGAND_MODE,C_extbuff,4);
	weigandFlag  	=	C_extbuff[3];	// 回到自動讀卡模式
	return 0;
}




//=======================================================*/
void delay_50us_NOP(void)
{
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}

void delay_50us(unsigned char _50us)
{
	while(--_50us)
	{
		delay_50us_NOP();
		delay_50us_NOP();
		delay_50us_NOP();
	}
}

void delay_1ms(unsigned char _1ms)
{
	while(--_1ms)
		delay_50us(20);
}

//=======================================================

void delay(unsigned char time)
{
	unsigned char i;
	while(--time)
	for(i=0;i<0x90;i++);    		
}

void SendNumber(unsigned char length, unsigned char *datas)
{
	unsigned char i;
	EA=0;
	REN=0;
	RS485 = 1;
	for(i=0;i<length;i++)
	{
	TI=0;
	SBUF=datas[i];
	while(TI==0);
	}
	RS485 = 0;
	REN=1;
	EA=1;
	
}


//發送數據
void TxOut(unsigned char length, unsigned char status,unsigned char *datas)
{
unsigned char i;
	StartTransmit();
	CheckControlCode(length+1);     //DATA LENGTH 
	CheckControlCode(status);         //STATUS
	for (i=0;i<length;i++)
	{	
		CheckControlCode(*datas);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人在线免费观看| www国产成人免费观看视频 深夜成人网| 久久久五月婷婷| 日韩理论片在线| 毛片av一区二区| 色综合婷婷久久| 久久中文娱乐网| 日韩中文字幕区一区有砖一区| 国产91丝袜在线播放| 欧美精品少妇一区二区三区| 国产精品免费免费| 精品亚洲aⅴ乱码一区二区三区| 91亚洲资源网| 日本一区二区免费在线| 日韩高清不卡一区二区| 一本大道久久a久久综合| 精品粉嫩超白一线天av| 婷婷综合五月天| 色综合天天性综合| 中文在线资源观看网站视频免费不卡| 555www色欧美视频| 色综合夜色一区| 精品99久久久久久| 丝袜美腿亚洲一区二区图片| 色综合久久久久久久久久久| 国产午夜精品一区二区三区视频 | 欧美亚洲日本一区| 国产日韩欧美精品电影三级在线| 美女网站一区二区| 欧美一区二区三区婷婷月色| 亚洲五月六月丁香激情| 欧美影院午夜播放| 亚洲免费在线看| heyzo一本久久综合| ●精品国产综合乱码久久久久| 国产精品资源网站| 国产婷婷色一区二区三区| 樱花影视一区二区| 99vv1com这只有精品| 中文字幕在线一区二区三区| 国产.精品.日韩.另类.中文.在线.播放 | 久久香蕉国产线看观看99| 久久99国产精品免费| 欧美变态tickling挠脚心| 肉丝袜脚交视频一区二区| 日韩一区二区在线观看视频播放| 视频在线观看91| 精品国产一区a| 国产在线看一区| 欧美韩国一区二区| 不卡一区二区在线| 亚洲综合图片区| 在线播放欧美女士性生活| 久久er99热精品一区二区| 精品国产乱码久久久久久浪潮| 国产在线国偷精品免费看| 中文字幕高清一区| 色婷婷综合久久久中文字幕| 亚洲影视资源网| 最新国产成人在线观看| 成人黄色一级视频| 亚洲欧美色图小说| 欧美日韩美女一区二区| 亚洲福利视频三区| 亚洲女厕所小便bbb| 日本一区二区成人| 精品国产区一区| 欧美一级二级在线观看| 欧美日韩三级一区二区| 日韩一级免费观看| 久久国产综合精品| 亚洲bt欧美bt精品| 亚洲激情中文1区| 亚洲同性gay激情无套| 国产精品午夜免费| 中文字幕成人在线观看| 中文一区二区在线观看| 久久久久久久一区| 日本一区二区免费在线观看视频| 久久久久国色av免费看影院| 久久久av毛片精品| 国产清纯白嫩初高生在线观看91 | 91看片淫黄大片一级| 成人精品视频网站| av影院午夜一区| 99精品欧美一区二区三区小说| 欧美激情一区二区三区全黄| 亚洲女同ⅹxx女同tv| 国产精品久久福利| 中文字幕欧美激情一区| 国产精品久久久久久久久免费樱桃| 国产人成亚洲第一网站在线播放| 国产欧美日韩视频一区二区| 国产欧美一区在线| 日韩伦理免费电影| 一区二区三区四区五区视频在线观看 | 激情文学综合丁香| 国产99久久久国产精品| 99久久精品免费观看| 一本到三区不卡视频| 欧美日韩国产小视频| 日韩精品一区二区三区在线| 久久综合色之久久综合| 国产精品色在线| 亚洲综合成人在线| 日本不卡视频一二三区| 国产精品乡下勾搭老头1| 不卡av在线免费观看| 色一区在线观看| 欧美一区二区国产| 岛国精品在线观看| 国产一区二区不卡老阿姨| 99久久精品免费观看| 欧美日韩一区中文字幕| 26uuu国产在线精品一区二区| 欧美高清在线视频| 性做久久久久久久久| 看国产成人h片视频| 成人av午夜影院| 欧美日本国产一区| 欧美激情一区二区三区四区 | 久久久久久免费| 一区二区三区中文字幕在线观看| 久久精品免费观看| 色欧美日韩亚洲| 精品剧情v国产在线观看在线| 亚洲蜜臀av乱码久久精品| 久久激情五月激情| 色婷婷av一区二区三区软件| 久久亚洲综合色| 午夜欧美大尺度福利影院在线看| 国产传媒欧美日韩成人| 5858s免费视频成人| 亚洲免费在线看| 国产精品亚洲成人| 制服视频三区第一页精品| 中文字幕在线不卡一区二区三区| 青草国产精品久久久久久| 一本色道综合亚洲| 97精品国产露脸对白| 国产福利一区在线观看| 91福利精品视频| 国产丝袜欧美中文另类| 丝袜a∨在线一区二区三区不卡| 成人妖精视频yjsp地址| 日韩一区二区中文字幕| 亚洲与欧洲av电影| thepron国产精品| 久久综合久久综合九色| 五月婷婷另类国产| 91精品91久久久中77777| 国产精品你懂的在线欣赏| 久久99在线观看| 91精品国产欧美一区二区18 | 欧美日韩国产片| 国产精品盗摄一区二区三区| 精品夜夜嗨av一区二区三区| 91精品国产综合久久久蜜臀图片| 一区二区国产视频| 日韩美女久久久| 日韩午夜av一区| 一区二区三区丝袜| av电影天堂一区二区在线观看| 欧美成人一区二区三区在线观看| 亚洲国产日韩一级| 日本韩国一区二区三区视频| 成人免费一区二区三区视频| 成人白浆超碰人人人人| 国产视频视频一区| 国产成人精品免费视频网站| 久久亚洲一区二区三区明星换脸 | 宅男噜噜噜66一区二区66| 一区二区三区四区乱视频| 91网址在线看| 亚洲美女电影在线| 欧美亚洲免费在线一区| 洋洋av久久久久久久一区| 欧美日韩一级视频| 五月天激情综合| 91精品麻豆日日躁夜夜躁| 蜜臀99久久精品久久久久久软件 | 欧美高清在线视频| 成人免费高清视频在线观看| 国产精品久久久久精k8| 色呦呦日韩精品| 国内精品久久久久影院色| 一本高清dvd不卡在线观看| 综合在线观看色| 日本道色综合久久| 亚洲一区二区精品3399| 欧美日韩免费在线视频| 日本欧美加勒比视频| 欧美mv日韩mv国产网站app| 激情五月婷婷综合网| 久久精品一区四区| 色综合久久综合网欧美综合网 | 美女视频黄免费的久久| 2024国产精品| 91丨porny丨在线| 日韩1区2区日韩1区2区|