微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 红外遥控接收程序的疑问

红外遥控接收程序的疑问

时间:10-02 整理:3721RD 点击:
      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循环的是同步的?    我不知道我的疑问大家能懂不,新手,求各位解释下,谢谢

没大神解释啊!看了半天还是没弄明白,这是红外解码程序的部分,这个解码的位传送一直没懂

我也在学习红外控制,一起加油,有什么问题可以一起分享解决

恩,多交流下                        

自己刷自己的帖子,竟然无人回答...

能贴全部的代码吗,这都没有判断逻辑“1”和“0”的代码,也不知道IRsignal是什么

我也在学红外遥控 我也不太懂这个是什么意思。

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

网站地图

Top