不过你贴的程序看不到引导码的处理过程,或者说没法知道startflag怎么置1的。最好也贴出来。
如果你这个接收程序的中断处理部分完整的话,可以确定所用的单片机不具有修改触发边沿的功能。只能根据第一个下降沿(引导码)和第一个用户码之间的时间来处理(减去0电平的时间)。
从程序上看,
if(startflag)
只是判断可能是起始标记。
if(irtime>32&&irtime<档消63)
//引导码
8-16ms间
bitnum=0
这个判断是否为引导码。如果是,则将数组键置0,准备开始存储数据。即:
irdata[bitnum]=irtime
irtime=0//这个就不说了
bitnum++//这个本来也不该说的,不过结合前面的引导码判断,就有问题岩如了:
1、如果遥控器发射过程中红外线被挡住,irtime会很长···还需要继续存储么?
2、如果接收被干扰,会插入高粗蠢启电平,irtime
不确定···
3·······
简单说,判断过于简单,没法实用的。
话说,你自己有能力写个好的,为嘛还参考别人的?
楼上不对吧,红外热释传感器需要人去触碰吧!! 难道红外热释传感器远晌尺距离就能被触发???还不如弄个红外发射管,红外接收管,对射!!如果信号中断 表示有宴肆高人过,只是不知道楼主的设计雹念的适用范围。所以 估计 一组对射不够,增加几组了!!
^_^
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)