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循环的是同步的? 我不知道我的疑问大家能懂不,新手,求各位解释下,谢谢
恩,多交流下
一周热门 更多>