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

📄 遥控解码程序.txt

📁 一个很经典的红外线接收程序,它可以对任何红外线发身源发射的红外线进行接收.
💻 TXT
字号:
遥控解码程序 
 
作者:尘封往事    文章来源:本站原创    点击数:644    更新时间:2005-11-11   
  
#include < reg52.h >       
code char arr[][2] = { 0X90,0X6f, 0X00,0Xff, 0X80,0X7f, 0X40,0Xbf, 0Xc0,0X3f, 0X20,0Xdf, 0Xa0,0X5f,
        //    0     1       2      3     4     5   6
        0X60,0X9f, 0Xe0,0X1f, 0X10,0Xef, 0X18,0Xe7, 0X98,0X67,  0X08,0Xf7, 0X88,0X77};
       //    7        8        9         定时       显示         频道上   频道下

code  char LedHexCode[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 
       //0     1     2     3     4     5     6     7
       0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };
       //8     9     a     b     c     d     e     f

 

 


bit guide = 0;
bit ok = 0;
unsigned char lenth,key=0;

unsigned char ch=0;

unsigned char tmp[ 4 ];
unsigned char count;

void init( void );
void LedTimeCall( unsigned char);
void deal( unsigned char);
void error(void);


void main( void )
{
 static unsigned char K=0;
 EA = 0;
 init();
 EA = 1;
 while( 1 )
 {
 switch( key )
 {
  case 0:  K=0;  break;
  case 1:  K=1;  break;
  case 2:  K=2;  break;
  case 3:  K=3;  break;
  case 4:  K=4;  break;
  case 5:  K=5;  break;
  case 6:  K=6;  break;
  case 7:  K=7;  break;
  case 8:  K=8;  break;
  case 9:  K=9;  break;
//  case 10:  K=1;  break;
//  case 11:  K=K+1;  break;
  case 12:    K=23;   break;
  case 13: K=1;  break;
  default : break; 
 }

   LedTimeCall(K);
 }
}   

void init( void )
{
 IT0 = 1;
 INT0 =1;
 TMOD = ( TMOD & 0XF0 ) | 0X01;
 TH0 = TL0 =0;
 TR0 = 0;
 PX0 = 1;
 EX0 = 1;

}

void LedTimeCall( unsigned char k )
{
 P2 &= 0x0f;
 P0 = LedHexCode[ k ];
}

void int0( void ) interrupt 0
{
 TR0 = 0;
 lenth = TH0;
 TH0 = TL0 = 0;
 TR0 = 1;
 if( lenth == 0 )
 {
  tmp[0] = tmp[1] = tmp[2] = tmp[3] = 0;
  count = 0;
  ok = 0;
  guide = 0;
 }
 
 else{
  if(lenth == 0X20) {guide = 1;}
  else{
   if(guide == 0) error();
   else{
    if (lenth==4|lenth==3)  deal(0);
    else if(lenth==8)  deal(1);
    else error();
    }
   }
  }

}
void deal( unsigned char i )
{   
 unsigned char n;
 ch <<= 1;
 if(i) ch |= 0x01;
 else  ch &= 0xFE;   
 ++count;

//if( ch==0xf0) 
 if(count == 24) {tmp[2]=ch;
 //if(count == 32)
 //{
 
  TR0 = 0;
  TH0 = TL0 = 0;
  tmp[3] = ch;
  count = 0;
  guide = 0;
  ok = 1;
 }
 if(ok == 1)
 { for( n = 0; n < 14; n++ )
  {
   if( tmp[2] == arr[n][0] )
   {
    
    key = n;
    break;
   }
  }
 }


}      
void error( void )
{     
 TR0 = 0;
 TH0 = TL0 =0;
 tmp[0] = tmp[1] = tmp[2] = tmp[3] = 0;  
 count = 0;
 guide = 0;
}   
 

⌨️ 快捷键说明

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