红外解码程序!!请高手帮忙看看

[复制链接]
18797|111
wangyy608 发表于 2009-10-14 22:19 | 显示全部楼层
:L我看错了
 楼主| 贺信 发表于 2009-10-14 22:44 | 显示全部楼层
定时100uS,用来解码高低电平

********************************************************/

void timer0() interrupt 1
{

   //    SendFlag = 1;                   //屏蔽这句
        T0Count++;
//        TH0         = 0x9C;                //定时100uS
//        TL0         = 0x00;

}

IR Decode.h文件
extern void mDelay(unsigned int i);
extern unsigned char IR_Decode();
extern unsigned char ReceiveData;


//另外请注意:每次上电复位后,只能发一次红外。如果要再次发红外,请先复位。(因为你的程序没有退出接收机制)
谢谢!!

这 句 //    SendFlag = 1;                   //屏蔽这句
是我刚才看看有没有进入定时器而加的,忘了删!!
打包的程序没这句!!

现在检查出来了一个错!!


extern bit SendFlag ;                //发送标志//sbit IR_RE   = P3^2;        //红外接受中断口
sbit IR_RE   = P2^5;        //红外接受中断口
sbit led   = P2^1;        //红外接受中断口
 楼主| 贺信 发表于 2009-10-14 22:45 | 显示全部楼层
extern bit SendFlag ;                //发送标志

这句放这mian.h中
huangqi412 发表于 2009-10-14 23:26 | 显示全部楼层
还好酱油店老板是照自己头呼,匠人姐姐可是拿砖头呼lz了。嘎嘎,
xwj 发表于 2009-10-14 23:32 | 显示全部楼层
看,匠人姐姐呼得多温柔、多么有耐心,
哪像那酱油店的老板...
 楼主| 贺信 发表于 2009-10-15 08:28 | 显示全部楼层
本帖最后由 贺信 于 2009-10-15 08:30 编辑

谢谢大家的帮助和提示,尤其感谢匠人前辈!!
小弟这是第一次写程序,也算学到很多了,心里很感激大家,也很内疚,很对自己不舒服!
上班时间就不打搅大家了,我也要忙自己的事了,写这程序纯属学习,只能等有时间再学习了!!一有时间我就会再努力
   谢谢!!
程序匠人 发表于 2009-10-15 12:35 | 显示全部楼层
希望楼主不要“始乱终弃”哦。呵呵
 楼主| 贺信 发表于 2009-10-17 11:59 | 显示全部楼层
问题找到了!!!问题的关键不是接受程序的错误,而是发射编码的错误,我的发射也是用单片机编码然后发射!我现在的做法是用下降沿记录下数据宽度的时间,即下降沿来就记录时间后相减,得到每个数据的时间,后发到串口上分析,发现,数据头是41ms 左右!!(我采集了几次有如0XA378,0XA37F,这是真整个数据头的时间),数据0为8ms左右(0X2249,0X2248,0X224A),数据1为17ms左右(0X4481,0X4482)
真的很郁闷,难道示波器采集的数据不对?还是这样看采集的数据很有很大的误差!!!!
我开始编码采集数据后就认为OK了!!看样子还是数据编码有问题!!!
 楼主| 贺信 发表于 2009-10-17 12:01 | 显示全部楼层
这是18380UT脚给单片机的电平!!!眼睛也不会有这么大误差吧!!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 贺信 发表于 2009-10-17 12:04 | 显示全部楼层
??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 贺信 发表于 2009-10-17 12:07 | 显示全部楼层
有没有什么好方法能让单片机产生准确的编码呢????我的发射码是用延时来做的!!看样子误差太离谱了!!!
夏日飞鹰 发表于 2009-10-18 20:55 | 显示全部楼层
我的经验是,发送用定时做,接受用延时就可以了:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部