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

📄 back.c

📁 这是一个对OSD芯片upd6464A操作的接口测试程序,使用KC51编译一个高速球键盘程序
💻 C
📖 第 1 页 / 共 2 页
字号:
							 cKeyCodeReceiveState=0;
							 continue;					   //处理并且清除接收标志
						 }
 
						
							 
							 x=3;
							 	 pKeyCode=sKeyCode;	
							 *pKeyCode=0xa0;	   //起始同步码
							
							 ++pKeyCode;  //跳过发送地址
							 ++pKeyCode;
							 *pKeyCode=id;	   //ID码
   
							 cKeyCodeReceiveState=0;//已取走第3个码
							 do
							 {
							//	 x=x+*pKeyCode	;	//从第二个开始累加校验
								 while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								 ++x;	
							 }while(x!=9);	 //读码结束标志
 /*__________________________________________switch end________________
			以上是接收的串口数据程序员
			__________________________________________________________*/
/*-----------------------------------------------------
		   下面是发送解码后处理程序
		   ________________________________________________________*/
			
		

/*-----------------------------------------------------
		   上面是发送解码后处理程序
		   ________________________________________________________*/						
						



				}	 				//end case while rotate
			break; //finish case 
  /*____________________999999999999999999______________________________
三星协议结束
 _______________________9999999999999999_______________________________*/

 
 case PELCOP:	   
  		while(1)
			 {	
	
			 	 WDT_cls();	
 			if(PELCOP!=cProtocol)   // 利用协议出错处理
			 goto ERRor;
			if(!cKeyCodeReceiveState)  	continue;
			/*__________________________________________switch begin________________
			以下是接收的串口数据程序员
			__________________________________________________________*/
			if(0xa0!=cKeyCodeReceive)
			{
				 cKeyCodeReceiveState=0;
				 continue;					//首码错则结束  进  入  循  环
				 }
		
			   cKeyCodeReceiveState=0; 
						 while(!cKeyCodeReceiveState)  
						 {
							 WDT_cls();	

						 }
						 				 
 
 						 if( cKeyCodeReceive!=id)	//说明是正确的键盘码转入处理程序

						 {							   //不是本球机的接收码ID不正确或者是一误码都必须会结束
							 cKeyCodeReceiveState=0;
							 continue;					   //处理并且清除接收标志
						 }
 
						
							 
							 x=2;
							 	 pKeyCode=sKeyCode;	
							 *pKeyCode=0xa0;	   //起始同步码
							 	
							 ++pKeyCode;
							 *pKeyCode=id;	   //ID码
   
							 cKeyCodeReceiveState=0;//已取走第2个码
							 do
							 {
							//	 x=x+*pKeyCode	;	//从第二个开始累加校验
								 while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								 ++x;	
							 }while(x!=8);	 //读码结束标志
 /*__________________________________________switch end________________
			以上是接收的串口数据程序员
			__________________________________________________________*/
/*-----------------------------------------------------
		   下面是发送解码后处理程序
		   ________________________________________________________*/
			
		

/*-----------------------------------------------------
		   上面是发送解码后处理程序
		   ________________________________________________________*/						
						



				}	 				//end case while rotate
			break; //finish case 
  /*____________________999999999999999999______________________________
PELCOP协议结束
 _______________________9999999999999999_______________________________*/
 case B01:	   

				while(1)
			 {	
	
			 	 WDT_cls();	
 			if(B01!=cProtocol)   // 利用协议出错处理
			 goto ERRor;
			if(!cKeyCodeReceiveState)  	continue;
			/*__________________________________________switch begin________________
			以下是接收的串口数据程序员
			__________________________________________________________*/
			if(0xa0!=cKeyCodeReceive)
			{
				 cKeyCodeReceiveState=0;
				 continue;					//首码错则结束  进  入  循  环
				 }
		
			   cKeyCodeReceiveState=0; 
						 while(!cKeyCodeReceiveState)  
						 {
							 WDT_cls();	

						 }
													 
 
 						 if( cKeyCodeReceive!=id)	//说明是正确的键盘码转入处理程序

						 {							   //不是本球机的接收码ID不正确或者是一误码都必须会结束
							 cKeyCodeReceiveState=0;
							 continue;					   //处理并且清除接收标志
						 }
 
						
							 
							 x=2;
							 	 pKeyCode=sKeyCode;	
							 *pKeyCode=0xa0;	   //起始同步码
							 ++pKeyCode;
							 *pKeyCode=id;	   //ID码
   
							 cKeyCodeReceiveState=0;//已取走第2个码
							 do
							 {
							//	 x=x+*pKeyCode	;	//从第二个开始累加校验
								 while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								 ++x;	
							 }while(x!=11);	 //读码结束标志
 /*__________________________________________switch end________________
			以上是接收的串口数据程序员
			__________________________________________________________*/
/*-----------------------------------------------------
		   下面是发送解码后处理程序
		   ________________________________________________________*/
			
		

/*-----------------------------------------------------
		   上面是发送解码后处理程序
		   ________________________________________________________*/						
						



				}	 				//end case while rotate
			break; //finish case 
  /*____________________999999999999999999______________________________
B01协议结束
 _______________________9999999999999999_______________________________*/
 case YAAN:	   
  		while(1)
			 {	
	
			 	 WDT_cls();	
 			if(YAAN!=cProtocol)   // 利用协议出错处理
			 goto ERRor;
			if(!cKeyCodeReceiveState)  	continue;
			/*__________________________________________switch begin________________
			以下是接收的串口数据程序员
			__________________________________________________________*/
			if(0x02!=cKeyCodeReceive)
			{
				 cKeyCodeReceiveState=0;
				 continue;					//首码错则结束  进  入  循  环
				 }
		
			   cKeyCodeReceiveState=0; 
						 while(!cKeyCodeReceiveState)  
						 {
							 WDT_cls();	

						 }
						 				 
 
 						 if( cKeyCodeReceive!=id)	//说明是正确的键盘码转入处理程序

						 {							   //不是本球机的接收码ID不正确或者是一误码都必须会结束
							 cKeyCodeReceiveState=0;
							 continue;					   //处理并且清除接收标志
						 }
 	
							 	 pKeyCode=sKeyCode;	
							 *pKeyCode=0x02;	   //起始同步码
							 	
							 ++pKeyCode;
							 *pKeyCode=id;	   //ID码
   
							 cKeyCodeReceiveState=0;//已取走第2个码
							  while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								  if((sKeyCode[2]>1)&&(sKeyCode[2]<12))
								  {
								    while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								  while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								  }
								else 
								{
								    while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								    while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								  while(!cKeyCodeReceiveState)  //读码等待
								 {
									 _nop_();
								 }
								 ++pKeyCode;	
								 *pKeyCode=cKeyCodeReceive;
 	
								 cKeyCodeReceiveState=0; //取走键盘码
								  }
							 
 /*__________________________________________switch end________________
			以上是接收的串口数据程序员
			__________________________________________________________*/
/*-----------------------------------------------------
		   下面是发送解码后处理程序
		   ________________________________________________________*/
			
		

/*-----------------------------------------------------
		   上面是发送解码后处理程序
		   ________________________________________________________*/						
						



				}	 				//end case while rotate
			break; //finish case 
  /*____________________999999999999999999______________________________
YAAN协议结束
 _______________________9999999999999999_______________________________*/



	}   //switch cProtocol end

}   //end main			 
				 
  	
								
	
  
		/*-----------------
		目前只有键盘发码,如果相机发码则加相应处理程序
		如果需要只需用if-else语句就可以实现了
		-----------------------------------------------*/
		
		/* ---------------------------------------------------------------------------
		--------------------以下是中断程序区	----------------------------------------
		-----------------------------------------------------------------------------*/
		
	
		
		void receive_send(void) interrupt 	SIO_VECTOR
		{
			
			
			switch((char)RI)
			{
			case 1:
				
				RI=0;
				cKeyCodeReceiveState=1; //有接收时就置位	然后在主程序中清除
				cKeyCodeReceive=SBUF;
			
 /*------------------------------------------------------------------------------------------------*/
//			   SBUF=cKeyCodeReceive;
 
 /*------------------------------------------------------------------------------------------------*/

				break;	
				
				
			case 0:
				TI=0;
				break;
			}	
		}
		

⌨️ 快捷键说明

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