红外遥控接收程序的疑问

2019-07-15 23:29发布

      for(i=0;i<4;i++)       //分别读取4个字节
                            {for(j=1;j<=8;j++)      //每个字节8个bit的判断
                                { while(IRsignal==0);       //等待上升沿
                                    Delay0_9ms();      //从上升沿那一时刻开始延时0.9ms,再判断IRsignal
                                      if(IRsignal==1)     //如果IRsignal是"1",则向右移入一位"1"
                                                {  Delay1ms();
                                                           CodeTemp=CodeTemp|0x80;
                                                           if(j<8) CodeTemp=CodeTemp>>1;
                                                }
                                      else  if(j<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0"
                                }
                              IRcode[i]=CodeTemp;
                              CodeTemp=0;



这是红外遥控的读取字节的程序代码,程序没错,其中IRsigal是接到单片机的外部中断0口,对于这个程序,我有些不理解,单片机是如何读取遥控的发射数据的啊?我知道,我们是在检测每个字节中0、1的个数,因此检测每一位,比方说我们检测第一个字节的数据为10111111,j=1时,检测到的是1,但是到 j=2时我们还能保证检测到的是0吗,也就是说,在for循环中,难道我们就能根据i、j的改变来正确读取遥控发射的信号吗?遥控的发射信号跟for循环的是同步的?    我不知道我的疑问大家能懂不,新手,求各位解释下,谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。