关于液晶显示遥控键码值的问题

2019-07-15 18:41发布


本人最近学习到了51单片机红外遥控部分内容,但是如下程序很是不懂,关于液晶显示遥控键码值的问题,我想问的是,红外遥控的说明资料是每种都不一样吗》我学习的板子没有带这部分内容,怎么办呢
void IR_IN() interrupt 0 using 0{ unsigned char j,k,N=0;    EX0 = 0;           delay(15);        if (IRIN==1)     { EX0 =1;          return;         }                            //确认IR信号出现 while (!IRIN)            //IR变为高电平,跳过9ms的前导低电平信号。   {delay(1);} for(j=0;j<4;j++)         //收集四组数据 {   for(k=0;k<8;k++)        //每组数据有8  {  while (IRIN)            // IR 变为低电平,跳过4.5ms的前导高电平信号。    {delay(1);}   while (!IRIN)          // IR 变为高电平    {delay(1);}    while (IRIN)           //计算IR高电平时长      {   delay(1);   N++;              if (N>=30)        { EX0=1;        return;}                  //0.14ms计数过长自动离开。     }                        //高电平计数完毕                    IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0    if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //数据最高位补“1    N=0; }//end for k }//end for j      if(IRCOM[2]!=~IRCOM[3])   {EX0=1;    return; }   IRCOM[5]=IRCOM[2] & 0x0F;     //取键码的低四位  IRCOM[6]=IRCOM[2] >> 4;      //右移4次,高四位变为低四位   if(IRCOM[5]>9)    {IRCOM[5]=IRCOM[5]+0x37;}  else         IRCOM[5]=IRCOM[5]+0x30;   if(IRCOM[6]>9)    {IRCOM[6]=IRCOM[6]+0x37;}  else         IRCOM[6]=IRCOM[6]+0x30;     lcd_pos(0x4b);                 lcd_wdat(IRCOM[6]);        //第一位数显示     lcd_pos(0x4c);                 lcd_wdat(IRCOM[5]);        //第二位数显示     beep();    EX0 = 1; }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。