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

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

?? serial.c

?? 射頻遙控器串行通訊程序
?? C
字號:
//=====================================================
#include <SST89x5x4.H>
//#include <REG51F.H>

#include    "serial.h"
#include   "lcdm11264.h"
#define		McuClk	12
extern void  delay(uint num);
uchar  idata  cDataBuffer[32] ;			// Command Received Buffer
uchar  cpIn = 0, cpOut = 0, TmpcpOut ;  // Manage the Command Buffer

bit    bdata  bBufferFull = FALSE, bTxBufEmpty = TRUE ;
uchar recflag=0;
uchar  cDataCheckSum, TimeClick ;
uint TimeDelay;
uchar  cRecFlag, uCommandLen, uCommandID ;

unsigned int  KeyDelay;

void   SendByteToModem( uchar cbyte )
{
	while(!bTxBufEmpty);
	SBUF = cbyte;
	bTxBufEmpty = FALSE;
	cDataCheckSum ^= cbyte;		//Calculate the CheckSum
}

// Check the Checksum of the buffered command
char CheckCommandSum( char ComLen )
{
 uchar iN, uCheckSum, tpr, tByte ;
	
	uCheckSum = fRFSOH ;
	tpr = cpOut ;			// The CommandLen include the Checksum
	
	for( iN=0; iN<ComLen; iN++ ) { // The Command Header--- SOH ComId ComplexId Len
		tByte = cDataBuffer[tpr] ;
		uCheckSum  ^= tByte ;
		tpr = (++tpr)&0x1F ;
	}
	
	tByte = cDataBuffer[tpr] ;  	 		// The Send CheckSum
	if( uCheckSum==tByte ) 					// The Command is Right
		return  TRUE ;		
	else 
		return FALSE ;
}


//=========================================================
//Send RF Packget Header
//=========================================================
void	SendRFSOH( void )
{

	TimeDelay = 0 ;
//	while( TimeDelay<6 ) ;
	SendByteToModem( 0x55 ) ;
	SendByteToModem( 0xAA ) ;
	SendByteToModem( fModemFb ) ;
	SendByteToModem( fModemCb ) ;		//Send RF Protocol
	cDataCheckSum = 0 ;				//CheckSum reset
}


//-----------------------------------------------------
void OpenComm( unsigned long Baud ) 
{
	cpIn = 0 ;  cpOut = 0 ;	 
	TmpcpOut = 0 ;			//Init the Command Buffer
	bBufferFull = FALSE ;  	 
	bTxBufEmpty = TRUE ;
	
	SCON = 0x52 ;
	PCON = 0x80 ;
	TMOD = 0x21 ;
	
	TL1 = 256 - (SysOscRate/Baud/McuClk/16) ;
	TH1 = 256 - (SysOscRate/Baud/McuClk/16) ;

	PS = 1;
	TR1 = 1;
	ES = 1;		ET1 = 0 ;

	RI=0;					// Clear HW_UART receive and transmit
	TI=0;					// complete indicators.
}


//-------------------------------------------------------------
// Timer0 used for the System Clk, Timer1 for the Xray Counter
//-------------------------------------------------------------
void InitTimer0(void)
{
	TMOD  = 0x21 ;		//Timer 0, 16 Bit Timer Ways Timer 1 8 Bit autoload

	TL0 = (65536 - (SysOscRate/McuClk * TIMER0/1000)) % 256 ;    
	TH0 = (65536 - (SysOscRate/McuClk * TIMER0/1000)) / 256 ;

	ET0 = 1 ;
	TR0 = 1 ;
}

//=====================================================
static void  Timer0( void )  interrupt  1 
{
	TF0 = 0 ;
	TR0 = 0 ;

	++ TimeClick ;  //Led Light time
	++ TimeDelay ;

	++ KeyDelay;

	TL0 = (65536 - (SysOscRate/McuClk * TIMER0/1000)) % 256 ;
	TH0 = (65536 - (SysOscRate/McuClk * TIMER0/1000)) / 256 ;

  TR0 = 1 ;
}

// Communication with the Host CPU Data Buffer
/*static void SerialTxRx(void)  interrupt  4  /* UART1 */
/*{uchar i;
	if( RI ) 
	{
		if( !bBufferFull ) 
		{

			i=SBUF;
		//	outhz12(1,2,&i);
//OutNum12xy(1,5,0,&i);
			if(recflag==4)
				{
					cDataBuffer[cpIn] = i;
					cpIn = (++cpIn)&0x1F ;
					if( cpIn == cpOut )	
					{ bBufferFull = TRUE ;recflag=0;}
				}
			else
			{
				switch(recflag)
		    	{
				case 3:
					if(i==0x00)
    					recflag=4;
					else if(i==0x55) 
						recflag=1;
					else
						recflag=0;
					break;
				case 2:
					if(i==0xFF)
    					recflag=3;
					else if(i==0x55) 
						recflag=1;
					else
						recflag=0;
					break;		
				case 1:
					if(i==0xAA)
    					recflag=2;
					else if(i==0x55) 
						recflag=1;
					else
						recflag=0;
					break;
				case 0:
					if(i==0x55)
    					recflag=1;
					break;	
         		default : recflag=10;
				}
				if(recflag!=0&&recflag!=10)
				{
					cDataBuffer[cpIn] = i;
					cpIn = (++cpIn)&0x1F ;
					if( cpIn == cpOut )	
						{ bBufferFull = TRUE ;recflag=0;}
				}
			}
		}
				
		/*	if(recflag==0)
  				if(i==0x55)
    				recflag=1;
  
				if(recflag==1)
				{
            		cDataBuffer[cpIn] = i;

					cpIn = (++cpIn)&0x1F ;
					if( cpIn == cpOut )	
					{ bBufferFull = TRUE ;recflag=0;}*/
				//}	
			
		//} 
/*		RI = 0 ; // End the Receive
	}
	else 
	{
		bTxBufEmpty = TRUE ;
		TI = 0 ;
	}
}
*/
static void SerialTxRx(void)  interrupt  4  /* UART1 */
{uchar i;
static uchar  tempid;
	if( RI ) 
	{
		if( !bBufferFull ) 
		{

			i=SBUF;
		//	outhz12(1,2,&i);
//OutNum12xy(1,5,0,&i);
			if(recflag==4)
				{
					cDataBuffer[cpIn] = i;
					cpIn = (++cpIn)&0x1F ;
					if( cpIn == cpOut )	
					{ bBufferFull = TRUE ;recflag=0;}
				}
			else
			{
				switch(recflag)
		    	{
				case 3:
					if(i==(0xFF^tempid))
    					recflag=4;
					else if(i==0x00) 
						recflag=1;
					else
						recflag=0;
					break;
				case 2:
					if(i!=0x00)
					{
						tempid=i;
    					recflag=3;
					}
					else //if(i==0x55) 
						recflag=1;
					//else
					//	recflag=0;
					break;		
				case 1:
					if(i==0x21)
    					recflag=2;
					else if(i==0x00) 
						recflag=1;
					else
						recflag=0;
					break;
				case 0:
					if(i==0x00)
    					recflag=1;
					break;	
         		default : recflag=10;
				}
				if(recflag!=0&&recflag!=10)
				{
					cDataBuffer[cpIn] = i;
					cpIn = (++cpIn)&0x1F ;
					if( cpIn == cpOut )	
						{ bBufferFull = TRUE ;recflag=0;}
				}
			}
		}
				
		/*	if(recflag==0)
  				if(i==0x55)
    				recflag=1;
  
				if(recflag==1)
				{
            		cDataBuffer[cpIn] = i;

					cpIn = (++cpIn)&0x1F ;
					if( cpIn == cpOut )	
					{ bBufferFull = TRUE ;recflag=0;}*/
				//}	
			
		//} 
		RI = 0 ; // End the Receive
	}
	else 
	{
		bTxBufEmpty = TRUE ;
		TI = 0 ;
	}
}


/*-------------------------------------------------------------------
Process the Serial1 Receiver buffer to determain whether have command
have received
Command Style  #SOH #COMID #COMPLEXID #DATA LENGTH (2 BYTE)  XXXXX...XXX (DATA Body) CheckSum
--------------------------------------------------------------------*/
char	CheckDataBuffer( void )
{
 uchar  tByte, bBufLen ;
 IntToByte bToi ;

	bBufLen = (cpIn-cpOut) & 0x1F ;		//Test the Bytes In Buffer
	if( bBufferFull ) {
		bBufLen = 31 ;
//		bBufferFull = FALSE ;
	}
	if( bBufLen	>= 5 ) {	   //Have Received a Message Header
		if(cRecFlag==0x04) 
		{   //Get the Command Data Length
			tByte = cDataBuffer[TmpcpOut] ;
			bToi.Bytes.lByte = tByte ;
			TmpcpOut = (++TmpcpOut)&0x1F ;
			tByte = cDataBuffer[TmpcpOut] ;
			bToi.Bytes.hByte = tByte ;
			TmpcpOut = (++TmpcpOut)&0x1F ;
			uCommandLen = bToi.uValue + 1 ;	 	//LOW BYTES FIRST   Include the Checksum
			if( uCommandLen>30 ) {
				cRecFlag = 0 ; 
				cpOut = (TmpcpOut-2)&0x1F ; 
			}	// All the Command <= 31
			else  cRecFlag = 0x08 ;
		}

		if( cRecFlag==0x08 ) 
		{ 	// Receiver the Command Data Body
			bBufLen =  (cpIn-TmpcpOut)&0x1F ;		// The Data Body Length
			if( bBufLen >= uCommandLen ) {
				TmpcpOut =  (TmpcpOut+uCommandLen)&0x1F ; 	 // Set the TmpcpOut to the next Command
				cRecFlag = 0x10 ;    // Have Received the full Command	cpOut Point to the Command Header
			}
		}
		else 
		{	//Search the Header
			while( TmpcpOut != cpIn |(bBufferFull ==TRUE))//changed by zdy
			{//Searching for the Header of the command
				tByte = cDataBuffer[TmpcpOut] ;
				TmpcpOut = (++TmpcpOut)&0x1F ;
				switch ( cRecFlag ) {
					case 2 :
						if( (uCommandID^tByte)==0xFF ) cRecFlag = 0x04 ; 
						else { cRecFlag = 0 ;	 TmpcpOut = cpOut ; }
						break ;
					case 1 :
						uCommandID = tByte ;
						cRecFlag = 0x02 ;
						break ;
					case 0 :
						if(tByte==fRFSOH) cRecFlag = 0x01 ;
						else cRecFlag = 0x00 ;
						cpOut = TmpcpOut ;		// Set the cpOut To the Begine of the Command
						break ;					// Search the header SOH of the command
					default : 
						cRecFlag = 0x00 ;
						cpOut = TmpcpOut ;
						break ;		
				}
				if ( cRecFlag == 0x04 )  break ;   // Exit the while
				else if(TmpcpOut == cpIn)  break ;//added by zdy
			}// End while
		}
		bBufferFull = FALSE ;
 	}// End if BufferLen < 5  

if(cRecFlag==0x10)  return TRUE ;
	else return FALSE ;
//return TRUE ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品写真在线观看| av影院午夜一区| 成人av资源下载| 欧美一区二区二区| 亚洲人吸女人奶水| 国产在线一区观看| 91精品黄色片免费大全| 日韩毛片精品高清免费| 韩国女主播一区| 91精品国产乱| 亚洲一区免费在线观看| av一二三不卡影片| 久久精品夜色噜噜亚洲a∨| 视频一区二区中文字幕| 日本乱码高清不卡字幕| 国产精品素人一区二区| 精品亚洲国产成人av制服丝袜| 欧美网站一区二区| 亚洲精品国产视频| av一区二区三区四区| 国产亚洲欧美一级| 紧缚奴在线一区二区三区| 日韩一区和二区| 亚洲mv在线观看| 欧洲另类一二三四区| 国产精品久久久久久久第一福利| 麻豆精品一区二区综合av| 欧美日韩你懂得| 香蕉加勒比综合久久| 欧美日韩国产小视频| 亚洲一二三区视频在线观看| 日本高清不卡aⅴ免费网站| 亚洲欧洲99久久| 色综合网色综合| 亚洲欧美aⅴ...| 欧美色欧美亚洲另类二区| 午夜伊人狠狠久久| 欧美一区二区美女| 丝瓜av网站精品一区二区| 欧美精品v国产精品v日韩精品| 一区二区三区在线免费播放| 欧美在线视频日韩| 三级亚洲高清视频| 欧美变态tickling挠脚心| 免费在线观看一区| 亚洲精品在线三区| www.日韩av| 亚洲综合一区在线| 91麻豆精品国产91久久久久久| 久久精品国产第一区二区三区| 日韩精品一区二区在线观看| 国内国产精品久久| 亚洲婷婷综合久久一本伊一区| 91在线无精精品入口| 亚洲aaa精品| 欧美xxxxxxxx| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲特黄一级片| 4438x成人网最大色成网站| 国产一区二区在线视频| 日韩一区有码在线| 91精品国产色综合久久ai换脸| 国产精品一区免费在线观看| 亚洲色图视频网站| 日韩午夜精品电影| 成人免费不卡视频| 亚洲大型综合色站| 久久久久高清精品| 欧洲亚洲精品在线| 另类小说欧美激情| 亚洲免费在线视频| xfplay精品久久| 在线一区二区视频| 国内精品久久久久影院色| 亚洲色图色小说| 久久久精品一品道一区| 欧美日韩国产美女| 成人综合婷婷国产精品久久| 国产一区久久久| 亚洲制服丝袜av| 国产午夜精品久久久久久久 | 九一九一国产精品| 自拍偷在线精品自拍偷无码专区| 91精品国产综合久久久久久久久久 | 中文一区一区三区高中清不卡| 在线观看网站黄不卡| 粉嫩av一区二区三区粉嫩| 婷婷中文字幕综合| 亚洲免费在线观看视频| 国产调教视频一区| 日韩精品一区二区三区四区| 欧美丝袜自拍制服另类| 福利一区二区在线| 国产一区不卡视频| 激情偷乱视频一区二区三区| 亚洲高清中文字幕| 日韩理论在线观看| 国产精品久久久久毛片软件| 精品国产伦一区二区三区观看体验| 在线观看日韩毛片| 日本国产一区二区| 在线免费观看视频一区| 99久久精品国产观看| 国产91精品久久久久久久网曝门| 激情五月激情综合网| 肉丝袜脚交视频一区二区| 亚洲国产毛片aaaaa无费看| 亚洲日本va午夜在线影院| 国产精品午夜免费| 中文字幕一区二区三区精华液| 精品日产卡一卡二卡麻豆| 日韩精品在线看片z| 欧美一级搡bbbb搡bbbb| 日韩精品一区国产麻豆| 精品福利av导航| 久久精品一区二区三区不卡牛牛| 2020国产精品自拍| 国产清纯在线一区二区www| 欧美激情一区二区| 国产精品初高中害羞小美女文| 中文字幕乱码久久午夜不卡 | 性感美女极品91精品| 亚洲成人动漫在线观看| 日本欧美一区二区三区乱码| 日本va欧美va欧美va精品| 久久激情五月婷婷| 成人美女在线观看| 91久久线看在观草草青青| 91国偷自产一区二区使用方法| 欧美亚洲图片小说| 欧美一个色资源| 久久久综合视频| 亚洲女与黑人做爰| 天堂蜜桃91精品| 黄色资源网久久资源365| 成人h动漫精品一区二区| 91亚洲午夜精品久久久久久| 欧美日韩中字一区| 久久亚洲春色中文字幕久久久| 欧美国产乱子伦| 亚洲va国产天堂va久久en| 精品一区二区影视| 99国内精品久久| 日韩一区二区三区免费看| 国产亚洲欧洲997久久综合| 亚洲精品乱码久久久久久| 蜜桃精品视频在线| 97精品电影院| 精品日韩成人av| 亚洲欧美激情插| 国产综合久久久久影院| 91免费视频观看| 日韩精品一区二| 亚洲欧美激情视频在线观看一区二区三区 | 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品毛片大码女人| 性欧美大战久久久久久久久| 国模冰冰炮一区二区| 色视频成人在线观看免| 久久免费视频一区| 一区二区成人在线观看| 国产一区二区精品在线观看| 欧美日韩午夜在线| 国产精品区一区二区三| 蜜臀av在线播放一区二区三区| 不卡欧美aaaaa| 26uuu亚洲| 亚洲va天堂va国产va久| 成人教育av在线| 日韩一级视频免费观看在线| 亚洲精品综合在线| 国产高清精品在线| 日韩欧美中文一区二区| 亚洲一区在线观看免费 | 亚洲欧美成aⅴ人在线观看| 国产一区二区在线观看视频| 3d动漫精品啪啪| 亚洲国产一区视频| av成人免费在线观看| 久久久亚洲高清| 久久se精品一区精品二区| 欧美日韩成人综合在线一区二区| 自拍偷拍欧美激情| 成人永久aaa| 国产午夜亚洲精品理论片色戒| 久久不见久久见免费视频7| 91麻豆精品国产自产在线观看一区| 亚洲精品国产一区二区三区四区在线 | 欧美日韩情趣电影| 亚洲精品免费电影| 91美女福利视频| 亚洲四区在线观看| 色偷偷久久一区二区三区| 国产精品久久久久精k8| 成人激情动漫在线观看| 亚洲国产高清aⅴ视频| eeuss国产一区二区三区| 国产精品理伦片| 99精品一区二区| 一区二区三区欧美激情|