微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 有人可以帮我注释一下这红外工作函数的代码吗?不太懂

有人可以帮我注释一下这红外工作函数的代码吗?不太懂

时间:10-02 整理:3721RD 点击:

  1. #define Imax 14000    //此处为晶振为11.0592时的取值,
  2. #define Imin 8000    //如用其它频率的晶振时,
  3. unsigned char Im[4]={0x00,0x00,0x00,0x00};
  4. unsigned long m,Tc;
  5. void intersvr1(void) interrupt 2                 //红外工作函数
  6. {
  7. TR0=1;
  8. Tc=TH0*256+TL0;//提取中断时间间隔时长
  9. TH0=0;
  10. TL0=0;         //定时中断重新置零
  11. if((Tc>Imin)&&(Tc<Imax))
  12. {
  13.         m=0;
  14.         f=1;

  15.         return;
  16. }       //找到启始码
  17. if(f==1)
  18. {
  19.     if(Tc>Inum1&&Tc<Inum3)
  20.     {
  21.            Im[m/8]=Im[m/8]>>1|0x80; m++;
  22.     }
  23.     if(Tc>Inum2&&Tc<Inum1)
  24.     {
  25.       Im[m/8]=Im[m/8]>>1; m++; //取码
  26.            }
  27.            if(m==32)
  28.     {
  29.       m=0;  
  30.       f=0;
  31.        
  32.       if(Im[2]==~Im[3])
  33.       {
  34.            IrOK=1;
  35.                           TR0=0;
  36.            }
  37.       else
  38.           {
  39.            IrOK=0;   //取码完成后判断读码是否正确

  40.            }
  41.     }
  42.                //准备读下一码
  43. }


  44. }

复制代码


有偿                                       

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top