来自:bjxsdz > 馆藏分类
配色: 字号:
红外通信原理
2018-12-20 | 阅:  转:  |  分享 
  
红外数据传输
2009-8-11
//延续1.66MS大于0.8MS后我们可以再判断遥控接收脚的电平,
if(prem)//如果这时高电平仍然在继续那么接收到的数据是1的编码
{
ram[ramc]=(ram[ramc]<<1)+1;//将目前接收到的数据位1放到对应的字节中
delaytime(11);//如果本次接受到的数据是1,那么要继续延迟1MS,这样才能跨入
//下个位编码的低电平中(即是开始的0.56MS中)
}
else//否则目前接收到的是数据0的编码
ram[ramc]=ram[ramc]<<1;//将目前接收到的数据位0放到对应的字节中
}//本次接收结束,进行下次位接收,此接收动作进行32次,正好完成4个字节的接收
}

if(ram[2]!=(~(ram[3]&0x7f)))//本次接收码的判断
{
for(i=0;i<4;i++)//没有此对应关系则表明接收失败,清除接受到的数据
ram[i]=0;
return;
}

dis_num=ram[2];//将接收到的按键数据赋给显示变量
}


main()
{
IT0=1;//设定INT0为边沿触发
EX0=1;//打开外部中断0
EA=1;//全局中断开关打开
while(1)
{
switch(dis_num)
{
case0x81:num=0;break;
case0xcf:num=1;break;
case0x92:num=2;break;
case0x86:num=3;break;
case0xcc:num=4;break;
case0xa4:num=5;break;
case0xa0:num=6;break;
case0x8f:num=7;break;
case0x80:num=8;break;
case0x84:num=9;break;
case0x88:num=10;break;
case0xe0:num=11;break;
case0xb1:num=12;break;
case0xc2:num=13;break;
case0xb0:num=14;break;
case0xb8:num=15;break;
}
P2=table[num];
P1=0x01;
delaytime(5);
}
}
10
献花(0)
+1
(本文系bjxsdz首藏)