jiema.h

来自「红外 解码」· C头文件 代码 · 共 61 行

H
61
字号
bit leader;//判断引导码
unsigned int codegroup=0; //接收的32位二进制数
unsigned char KEY=1;//指令码,初始值不能为0
unsigned char length;

unsigned int xdata  timerN=0; 

void init_interrupt(void)
{
  leader=0;
  length=0;
  TMOD=0x11; 
  TCON=0x05; 
  EX1=1; 
  EA=1; 
  TR0=0; 
  TH0=0x00;
TL0=0x00;
  EX0=1;EX1=1;ET0=0;ET1=1;//INT0中断允许,T0不允许中断,T1允许中断
}

void service_INT0()interrupt 2
{
 TR0=1;//T0开始计时
 timerN=0;
 TR1=0;
 TH1=0x3c;
 TL1=0xb0;
 TR1=1;//T1计时30s关背光
 WDT=0x3d; 
}

void service_INT1()interrupt 0
{
  TR0=0; 
  EX1=0; 
  if(TH0==0x11)// 若编码代表“引导码”则引导码标志为1
     {leader=1;length=0;}

  if(leader)
     {
      if(TH0==0x02)
        {codegroup=(codegroup<<1)+0;length++;}   //若编码代表“0”则在code尾部加0
      else if(TH0==0x06)
        {codegroup=(codegroup<<1)+1;length++;}   //若编码代表“1”则在code尾部加1
    }
 TH0=0;TL0=0;
 EX1=1;
}

void code_process()
{
  if(length>31)
  {
  KEY=(unsigned char)(codegroup>>8);
  length=0;
  leader=0;
   LED=1; 
  }
}

⌨️ 快捷键说明

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