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

📄 ir.c

📁 单片机驱动程序
💻 C
字号:
#include <REG52.H>

#define  CNT 36
#define  uchar unsigned char 	
#define  uint  unsigned int
#define  NOP();  {_nop_(); _nop_(); _nop_(); _nop_();}      /* 定义空操作指令 */

bit time_out=0;
bit receive_ok=0;
bit receive_err=0;
bit key_continue=0;

uchar idata recode_dat[CNT];
uchar idata counter=0; 

 void INT0_irq(void) interrupt 0 using 3 
  {       
   if((TH0==TL0)&&(TL0==0)&&(counter==0)) {TR0 = 1;counter=0;}
   else 
    {	
	 TR0 = 0;	
 	 if((TH0>=0x0f)&&(TH0<=0x10)&&(counter==0)) receive_err=1;		 
	 if((receive_err==1)&&(counter<=36))
	  {
       recode_dat[counter]=TH0;
	   TH0 = 0;
       TL0 = 0;
	   TR0 = 1;
	   counter++;	   
	   }
	  else {TR0 = 0;TH0 = 0; TL0 = 0; counter=0; TR0 = 1;}	
      if((recode_dat[counter-2]==0x8f)&&(recode_dat[counter-1]>=0x07)&&(recode_dat[counter]==0x00))
	    {
         //TR0 = 0;		 
		 receive_ok=1;
		 counter=0;		
		 receive_err=0;
	    }	
	  }		  
   }	 
  



/*------定时器中断-----------*/
void T0_irq(void) interrupt 1 using 3
 {
  TR0=0;
  time_out=1;
  counter=0;
  TH0=TL0=0;
 }

/*------系统设置程序-----------*/
 void system_setup(void)
   {
    IE=0x83;       //使能INT0 EX0=1,ET0=1,EA=1;
    IT0 = 1;         //INT0负跳变触发    
    TMOD=0x29;      //定时器0工作在定时方式1,带INT0输入触发
    TH0 = 0;
    TL0 = 0;
   }

uint  key_process()
 {
   uint key_value=0x0;
   uchar  i;  
  if(receive_ok )
  {   
   for(i=0;i<=15;i++)
   {
     key_value<<=1;	 
	 if((recode_dat[i+17]>=0x05)&&(recode_dat[i+17]<=0x07))  key_value=key_value|0x0001;  	  
	 if((recode_dat[i+17]<=0x02)&&(recode_dat[i+17]>=0x00))  key_value=key_value|0x0000;       
    } 
   receive_ok = 0;  
  }
 return(key_value); 
}

  void main(void)
  {  
    idata uint kk;
	idata uchar dd,dd1;
	TMOD = 0x29;    
	TL1 = 0xFD;
	TH1 = 0xFD;
	SCON = 0x40;
	PCON = 0x80;
    PX0=1;	
	TR1 = 1;
    system_setup();         
    while(1)
	{
	 if(receive_ok )
	 {
	  kk=key_process();
	  dd=(kk>>8);
	  dd1=(kk&0x00ff);	 
	   SBUF = dd;
	   while (TI == 0);
	   TI = 0;
	   SBUF = dd1;
	   while (TI == 0);
	   TI = 0;	   
	 }
    }
  }


⌨️ 快捷键说明

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