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

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

?? ps.c

?? 51單片機上實現對PS2手柄的解析
?? C
字號:
#include <stdio.h>
#include <REG922.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code  dout[5]={0x01,0x42,0x00,0x00,0x00};
uchar data  din[5]={0x00,0x00,0x00,0x00,0x00};
uint  code  hos_tabup[16]={0xE31B,0xF800,0xF50D,0xFF07,0xDE26,0x0000,0x0000,0xDF27,		 //主手柄釋放鍵表
                            0x877F,0xB941,0xBA42,0x8870,0xDC24,0xA159,0xD820,0xA058};			
uint  code  hos_tabdn[16]={0x639B,0x7880,0x758D,0x7F87,0x5EA6,0x0000,0x0000,0x5FA7,		 //主手柄按鍵表
                            0x07FF,0x39C1,0x3AC2,0x08F0,0x5CA4,0x21D9,0x58A0,0x20D8};	
/*uint  code  hos_tabup[16]={0x0000,0x8870,0x877F,0x0000,0xDE26,0x0000,0x0000,0xDF27,		 //主手柄釋放鍵表
                            0xF50D,0xFF07,0xE31B,0xF800,0xDC24,0xA159,0xD820,0xA058};				
uint  code  hos_tabdn[16]={0x0000,0x08F0,0x07FF,0x0000,0x5EA6,0x0000,0x0000,0x5FA7,		 //主手柄按鍵表
                            0x758D,0x7F87,0x639B,0x7880,0x5CA4,0x21D9,0x58A0,0x20D8};				*/
uint  code  gue_tabup[16]={	0x9961,0x9A62,0x9B63,0x8B73,0x0000,0x0000,0x0000,0x0000,	  //副手柄釋放鍵表
                            0xB149,0xA35B,0xFC04,0xF901,0x0000,0x0000,0x0000,0x0000};
uint  code  gue_tabdn[16]={	0x19E1,0x1AE2,0x1BE3,0x0BF3,0x0000,0x0000,0x0000,0x0000,  	  //副手柄按鍵表
                            0x31C9,0x23DB,0x7C84,0x7981,0x0000,0x0000,0x0000,0x0000};
//unsigned long endcode=0x0005AA8A;												 //結束碼的紅外發射碼	 ,
uint   KEY_hos[2]={0xFFFF,0xFFFF};                                     	   //主游戲手柄掃描值,
uint   KEY_gue[2]={0xFFFF,0xFFFF};                                     	   //副游戲手柄掃描值,
uint   ir_key;														  		   //標準紅外碼緩沖,
uint   chan_key;                                 //手柄按鍵有變化的位,
uint   stat_key;                                 //當前手柄的狀態值,

unsigned long ref;
unsigned long idata irbuf[32];                                                     //紅外輸出緩沖區,
unsigned long *p_t;                                            //指向紅外緩沖區的兩個指針,
unsigned long *p_b;
bit   bdata   Buf_emp=1;			                                               //紅外輸出緩沖區空標志,
bit   bdata   Bit_F=0;				    	               	                	  //紅外輸出的移位標志,
bit   bdata   Buf_ful=0;					                            		  //紅外輸出緩沖區滿標志
bit   bdata   Saf_F=0;	          //安全間隔標志位
bit   bdata   Host_F=0;	 														 

sbit  ACK1  =P1^2;
sbit  ACK2  =P1^3;
sbit  DI1   =P0^3;
sbit  DI2   =P1^6;
sbit  DO1   =P0^0;
sbit  DO2   =P0^4;
sbit  CLK1  =P0^2;
sbit  CLK2  =P0^7;
sbit  SEN1  =P0^1;
sbit  SEN2  =P1^7;		
sbit  PWM   =P0^5;
sbit  IR_OUT=P0^6;
				  

void  delay(uchar n);
void  Isp_Init();			  //初始化串口,
//void  keysignout(void)	;
void  Getkey_hos(void);
void  Getkey_gue(void);
void  Trans(void);		 //手柄鍵碼轉化為紅外輸出碼,

main()
{

   P0M1=0XDF;		//外部引腳I/O配置,
   P0M2=0XF7;
   P1M1=0XFF;
   P1M2=0X83;
   DIVM=0;			//時鐘分頻設置,
//   AUXR1=AUXR1|0x80;
   TH0=238;
   TL0=212;
   TMOD=0X01;		//記數器0設置,
   PWM=0;
   IR_OUT=1;
   TCON=0x14;		//設置下降沿中斷,
   IEN0=0x06;		//開外部中斷一	  ,定時器零,
   EA=1;
   Isp_Init();				  //初始化串口,

   p_t=&irbuf[0];
   p_b=&irbuf[0];



  while(1)
  {
   Getkey_hos();
   chan_key=KEY_hos[0]^KEY_hos[1];
   if(chan_key)
   {
     Host_F=1;
     stat_key=KEY_hos[0];
     Trans();
	 KEY_hos[1]=KEY_hos[0];
	}
   Getkey_gue();
   chan_key=KEY_gue[0]^KEY_gue[1];
   if(chan_key)  
   { 
     Host_F=0;
     stat_key=KEY_gue[0];
     Trans();
	 KEY_gue[1]=KEY_gue[0];
    }
  } 	 

}

void irout() interrupt  2 using 2		   //使用外部中斷1中斷服務程序	 ,
{
  EA=0;
  IR_OUT=PWM;
  PWM=!PWM;
  EA=1;
} 

void delay(	uchar n)			 //n*12us延時程序;
{
    uchar i,	j;
	for(i=0;i<n;i++)
	{
	  for(j=0;j<10;j++)
	  {
	    _nop_();
   	   }	
	 }
}	
void  Getkey_hos()						//get gamekdy
{
 uchar p,i,ref;
  SEN2=0;
  delay(4);
  for(p=0;p<5;p++)
 {
	for(ref=0x01;ref>0x00;ref<<=1)
  {
	CLK2=0;
	if(ref&dout[p])		   //輸出一位控制數據	  ?是否滿足4us	   
 	  DO2=1;
	else
	  DO2=0;
	for(i=0;i<3;i++)		//大概2us的延遲,
	_nop_();				
	CLK2=1;
	if(DI2)
	  din[p]=ref|din[p];  //輸入一位控制數據	  ?是否滿足4us	  
	for(i=0;i<2;i++)		//大概2us的延遲,
   	_nop_();
   }
    DO2=1;
    if(p<4)
	{ 

//	  delay(1); 
//   	do
//	  {
//	  while(ACK2)			  //檢測ACK信號是否響應。	  有響應則向下		執行。
//	  {
	  _nop_();
//	  ACK=1;
//	  timeout=10000;
//	  break;
//	  }
	  delay(2);
//	  }
//	  while(timeout--);
 	}
//	else
//	{}

   }
  SEN2=1;
//  delay(2);
//  keysignout();		      // 鍵碼值通過串口輸出。	
   KEY_hos[0]=din[3];
   KEY_hos[0]<<=8;
   KEY_hos[0]+=din[4];
  for(i=0;i<5;i++)
  din[i]=0x00;
//  for(i=0;i<255;i++)
//  delay(255);	

} 

void  Getkey_gue()						//get gamekdy
{
 uchar p,i,ref;

  SEN1=0;
  delay(4);
  for(p=0;p<5;p++)
 {
	for(ref=0x01;ref>0x00;ref<<=1)
  {
	CLK1=0;
	if(ref&dout[p])		   //輸出一位控制數據	  ?是否滿足4us	   
 	  DO1=1;
	else
	  DO1=0;
	for(i=0;i<3;i++)		//大概2us的延遲,
	_nop_();				
	CLK1=1;
	if(DI1)
	  din[p]=ref|din[p];  //輸入一位控制數據	  ?是否滿足4us	  
	for(i=0;i<2;i++)		//大概2us的延遲,
   	_nop_();
   }
    DO1=1;
    if(p<4)
	{ 

//	  delay(1); 
//   	do
//	  {
//	  while(ACK2)			  //檢測ACK信號是否響應。	  有響應則向下		執行。
//	  {
	  _nop_();
//	  ACK=1;
//	  timeout=10000;
//	  break;
//	  }
	  delay(2);
//	  }
//	  while(timeout--);
 	}
//	else
//	{}

   }
  SEN1=1;
//  delay(2);
//  keysignout();		      // 鍵碼值通過串口輸出。	
   KEY_gue[0]=(din[3]|0x0F);
   KEY_gue[0]<<=8;
   KEY_gue[0]+=(din[4]|0x0F);
  for(i=0;i<5;i++)
  din[i]=0x00;
//  for(i=0;i<255;i++)
//  delay(255);	
			 	 
}
void Isp_Init()				  //初始化串口,
{
    SSTAT=0xFA;
	BRGCON=0x00;
	AUXR1=0x40;
	SCON=0x50;
	BRGR1=0x90;
	BRGR0=0x00;
	BRGCON=0x03;
}

void t0() interrupt 1 using 2		   //使用定時器0中斷服務程序	 ,
{
/* if(Buf_emp==0)
  TxD=0;
 else
  TxD=1;	 */
 if(Saf_F)							   //安全間隔時間定時,
 {									   
     Saf_F=0;
	 IR_OUT=1;
	 TH0=39;
	 TL0=200;
	 TR0=1;
 }
 else
 {
  if(Buf_emp==0)
   {
     TH0=255;						   //定時45us
     TL0=6;
     if(Bit_F==0)
	   {
	    Bit_F=1;
	    ref=0x00000001; 
        }
	 if(*p_b&ref)					  //輸出一位紅外數據,
	    IR_OUT=0;					  
	 else
	    IR_OUT=1;
	 TR0=1;
	 ref<<=1;
	 if(ref>0x00080000)				  //判斷一個紅外碼字是否發完,
		{
	  	Bit_F=0;
	    Buf_ful=0;
		if(p_b==&irbuf[31])
		  p_b=&irbuf[0];
		else
		  p_b++;
	    if(p_b==p_t)
		  Buf_emp=1;
		Saf_F=1;					  //置保護時間標志,
 
		}
   }
  else
   {
      TH0=255;						  //這個時間能否再減小?
      TL0=6; 
      TR0=1;
	  IR_OUT=!PWM;										
   }
 }
}

 void Trans()		                                //手柄鍵碼值轉換為紅外輸出碼值,
{
  uchar  i;
  uint   ref;										 //一次掃描手柄后出現變化的鍵,
 // if(KEY[0]==KEY[1])
 // return;
 // else
  if(Buf_ful==0)
  {

  for(i=0,ref=0x8000;i<16;i++,ref>>=1)
  {
    if(chan_key&ref)
	{
	  if(stat_key&ref)								   //為真檢測到釋放鍵
	   {
	    if(Host_F)									   //釋放鍵為主手柄的釋放鍵
	    ir_key=hos_tabup[i];
		else											//釋放鍵為副手柄的釋放鍵
		ir_key=gue_tabup[i];		                    //釋放鍵進入紅外寄存器 
	    *p_t=ir_key&0x00FF;
        *p_t<<=12;
        *p_t+=(((ir_key&0xFF00)>>6)|0x0802);

/*	   if(p_t==&irbuf[31])
	     p_t=&irbuf[0];
	   else
	     p_t++;
	   Buf_emp=0;                                    //紅外輸出緩沖區有數據,
	   if(p_t==p_b)
	    {
	     Buf_ful=1;				                     //紅外輸出緩沖區滿,
		 while(1)				  //測試緩沖區是否會滿,
		 {
		  DO1=1;
		  delay(5);
		  DO1=0;
		  delay(5);
		  }
	     return;			    
	    }

		*p_t=0x0005AA8A;							//結束鍵進緩沖區,			*/
	   }
	  else											  //檢測到按下鍵,
	   {											  
	    if(Host_F)									  //按下鍵為主手柄的按下鍵,
	    ir_key=hos_tabdn[i];
		else										  //按下鍵為副手柄的按下鍵,
		ir_key=gue_tabdn[i];
        *p_t=ir_key&0x00FF;
        *p_t<<=12;
        *p_t+=(((ir_key&0xFF00)>>6)|0x0802);		  //標準紅外碼轉換為添加過引導碼的發送紅外碼,
	   }
  	  if(p_t==&irbuf[31])
	    p_t=&irbuf[0];
	  else
	    p_t++;
	  Buf_emp=0;                   //紅外輸出緩沖區有數據,
	  if(p_t==p_b)
	   {
	    Buf_ful=1;				  //紅外輸出緩沖區滿,
//	while(1)				  //測試緩沖區是否會滿,
//		 {
          TxD=0;
//		  }		
		return;
	   }
	 
	}

   }
   }

} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费一区二区三区视频| 综合av第一页| 亚洲国产精品黑人久久久| 一二三区精品视频| 国产在线播放一区| 色噜噜夜夜夜综合网| 日本欧美一区二区三区乱码| 亚洲香蕉伊在人在线观| 岛国精品在线观看| 日韩欧美一区二区在线视频| 亚洲欧美精品午睡沙发| 国产综合色精品一区二区三区| 欧美专区日韩专区| 亚洲欧美一区二区在线观看| 久久99精品国产91久久来源| 欧美日韩中字一区| 亚洲老司机在线| 床上的激情91.| 久久久久国产成人精品亚洲午夜| 天堂成人国产精品一区| 在线观看一区二区视频| 亚洲国产精品成人综合| 国产一区二区视频在线| 日韩欧美区一区二| 日本亚洲三级在线| 3751色影院一区二区三区| 亚洲成人黄色影院| 欧美手机在线视频| 亚洲国产一区二区视频| 日本精品一区二区三区四区的功能| 国产网站一区二区三区| 国产99久久久精品| 国产拍揄自揄精品视频麻豆| 国产成人无遮挡在线视频| 久久日韩粉嫩一区二区三区 | 日韩精品三区四区| 欧美日韩在线亚洲一区蜜芽| 亚洲国产美国国产综合一区二区| 色婷婷综合久久久| 亚洲午夜电影在线| 8v天堂国产在线一区二区| 日韩成人精品在线观看| 日韩午夜在线观看| 国内精品不卡在线| 欧美激情一区在线| 91欧美一区二区| 亚洲一卡二卡三卡四卡| 3d动漫精品啪啪1区2区免费| 日本va欧美va欧美va精品| 欧美不卡一区二区三区| 国产成人8x视频一区二区| 中文字幕一区二区三| 欧美四级电影网| 麻豆精品视频在线观看| 国产调教视频一区| 色婷婷av久久久久久久| 日韩高清在线观看| 欧美国产综合色视频| 一本一道久久a久久精品| 天天操天天色综合| 久久人人爽人人爽| 91国内精品野花午夜精品| 日韩**一区毛片| 国产精品色哟哟网站| 欧美色中文字幕| 国产一区二区三区电影在线观看| 国产精品妹子av| 欧美日韩中字一区| 国产一区 二区| 亚洲国产综合人成综合网站| 26uuu久久天堂性欧美| 91蜜桃传媒精品久久久一区二区| 婷婷丁香久久五月婷婷| 国产精品免费视频观看| 91精品国产一区二区三区| 国产jizzjizz一区二区| 午夜精品一区二区三区免费视频 | 激情深爱一区二区| 亚洲色图视频网| 日韩一区二区精品| 日韩国产高清在线| 欧美视频一区二区三区| 性欧美大战久久久久久久久| 日韩欧美卡一卡二| 在线观看91精品国产入口| 极品少妇一区二区三区精品视频| 亚洲精品成人悠悠色影视| 精品国产免费一区二区三区四区| 色狠狠桃花综合| 国产91精品在线观看| 久久精品国产亚洲高清剧情介绍| 亚洲欧美日韩国产成人精品影院| 久久久久综合网| 91精品国产综合久久久蜜臀图片| 99久久伊人精品| 国产成人免费xxxxxxxx| 六月丁香婷婷久久| 天天综合天天做天天综合| 一区二区三区在线免费| 国产精品美女一区二区在线观看| 日韩亚洲欧美成人一区| 欧美日韩日本视频| 在线免费观看视频一区| gogogo免费视频观看亚洲一| 亚洲午夜精品在线| 精品在线观看免费| 一区在线观看视频| 久久久噜噜噜久久中文字幕色伊伊| 欧美区在线观看| 欧美做爰猛烈大尺度电影无法无天| 丁香天五香天堂综合| 国产馆精品极品| 国产麻豆日韩欧美久久| 狠狠狠色丁香婷婷综合激情| 久久99热这里只有精品| 久久国产精品99久久人人澡| 视频在线观看一区二区三区| 午夜伦欧美伦电影理论片| 亚洲电影一区二区三区| 亚欧色一区w666天堂| 午夜精品久久久久久久久久| 午夜欧美大尺度福利影院在线看| 一区二区三区久久| 日韩国产高清在线| 九九九久久久精品| 大陆成人av片| 91丨九色porny丨蝌蚪| 色婷婷综合中文久久一本| 在线欧美日韩国产| 337p亚洲精品色噜噜噜| 欧美videofree性高清杂交| 久久久久亚洲综合| 国产精品久久久久久久久免费樱桃| 中文字幕中文字幕一区| 亚洲一区二区三区爽爽爽爽爽 | 欧美一区二区三区性视频| 91精品国产福利| 久久一区二区三区国产精品| 中文字幕欧美三区| 1区2区3区欧美| 日韩精品电影在线| 丰满岳乱妇一区二区三区| 94-欧美-setu| 91精品国产日韩91久久久久久| 日韩免费观看高清完整版| 欧美国产一区在线| 午夜一区二区三区在线观看| 麻豆国产精品一区二区三区 | 精品一区二区三区在线观看| 国内精品自线一区二区三区视频| 国产伦精一区二区三区| 99久久精品一区| 日韩一区二区在线观看| 日本一区二区成人在线| 极品尤物av久久免费看| 9l国产精品久久久久麻豆| 欧美色电影在线| 欧美精品一区二区三区蜜桃| 亚洲色图在线播放| 久久激情综合网| 91免费版pro下载短视频| 日韩午夜电影av| 亚洲欧美影音先锋| 精品一区二区综合| 欧美性猛交xxxx乱大交退制版| 久久蜜臀中文字幕| 日韩精品视频网站| 色噜噜狠狠成人网p站| 日韩午夜在线观看| 亚洲已满18点击进入久久| 国内精品伊人久久久久av一坑| 91丨porny丨户外露出| 久久人人97超碰com| 欧美国产一区二区在线观看| 视频在线观看91| 亚洲综合视频在线| 国产成人精品免费| 欧美一区二区三区在线电影| 亚洲免费在线观看视频| 国产福利精品一区| 欧美一级片免费看| 亚洲五月六月丁香激情| 99这里只有久久精品视频| 久久久蜜桃精品| 国产在线视频一区二区| 制服丝袜日韩国产| 婷婷中文字幕综合| 欧日韩精品视频| 一区二区在线观看不卡| 波多野结衣精品在线| 久久久精品综合| 国产精品影视在线| 久久精品无码一区二区三区| 美女一区二区视频| 日韩三区在线观看| 喷白浆一区二区| 欧美成人精品二区三区99精品| 天堂va蜜桃一区二区三区 | 国产一区二区三区精品视频| 日韩美女一区二区三区四区|