红外遥控接收程序的疑问

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循环的是同步的?    我不知道我的疑问大家能懂不,新手,求各位解释下,谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
德国蟑螂
1楼-- · 2019-07-16 00:21
没大神解释啊!看了半天还是没弄明白,这是红外解码程序的部分,这个解码的位传送一直没懂
just-electronic
2楼-- · 2019-07-16 03:37
我也在学习红外控制,一起加油,有什么问题可以一起分享解决
德国蟑螂
3楼-- · 2019-07-16 06:28
just-electronic 发表于 2013-7-29 00:02
我也在学习红外控制,一起加油,有什么问题可以一起分享解决

恩,多交流下                        
德国蟑螂
4楼-- · 2019-07-16 12:19
 精彩回答 2  元偷偷看……
路过·人间
5楼-- · 2019-07-16 13:59
能贴全部的代码吗,这都没有判断逻辑“1”和“0”的代码,也不知道IRsignal是什么
ym597061128
6楼-- · 2019-07-16 17:18
我也在学红外遥控 我也不太懂这个是什么意思。

一周热门 更多>