搜索
bottom↓
回复: 3

一个PIC单片机红外输入的问题,希望有人知道回答下

[复制链接]

出0入90汤圆

发表于 2009-4-21 00:05:54 | 显示全部楼层 |阅读模式
是这样的,我的红外解码在51上已经完整的实现了,前天新买了个红外一体接收头,装在我的PIC万用板上。结果发现不正常。于是,我没有动任何电路,只是把一体接收头的数据线连到我的51学习板上,VCC,GND也都和51学习板相连,然后用之前的程序。结果跑的蛮好,一体接收头的电路部分没有问题啊。
好,把线路接回PIC单片机,我是用PIC16F886的RC7/RX这个脚作为红外数据输入的。先设置了TRISC=0x80,将RC7作为输入。然后在主函数里这样的:
void main()
{
   uchar temp=1;
   io_init();
   while(1)
  {
    temp=RC7;//读取当前红外数据输入
    if(temp==0)
    {
      write_dat('a');
      while(1);
    }
  }

上面是我的代码。如果我在temp=RC7这里设置一个断点,然后run到这里,然后单步运行,temp肯定是等于1的,然后在if语句里面的write_dat('a')这里设置了一个断点,然后单步运行肯定不会进入if语句里面。继续全速运行,也不会进入if语句里面,直到我按下遥控,才会进入If语句,停在断点那里。这个很正常时吧;
问题来了,如果我没有在temp=RC7那里设置断点,只在if语句里设置了断点,然后复位后,重新运行程序,那么程序马上就会进入if语句,停在断点那里,我就郁闷了。如果说红外接收头有输出,那我在第一种方法(设置两个断点后全速运行)的时候,也会不需要遥控就进入断点啊?结果没有。那如果红外接收头没有输出,那为什么我在只设置一个断点的时候,却会马上进入中断,在我没有按下遥控器的时候。我就郁闷了,从7点搞到现在12点,5个小时都没搞出来!手上又没有示波器可以看波形!郁闷啊!!!!!!!!!!!!!!!
}

出0入90汤圆

 楼主| 发表于 2009-4-21 00:28:24 | 显示全部楼层
靠,把1602拆下来后,就好了!郁闷,1602又没有占用RC7口,写1602的函数也没有占用RC7口,竟然会这样!郁闷!

出0入0汤圆

发表于 2009-4-21 19:30:44 | 显示全部楼层
会不会是1602的光线干扰,我也在做红外解码!有时间多交流!

出0入90汤圆

 楼主| 发表于 2009-4-21 20:40:44 | 显示全部楼层
不可能吧!我在51板和PIC板上都是一个1602,不过RC7作为串口,我是根本没有在1602的函数里动过这个脚的,不知道为什么就会这样!郁闷,用51解码蛮轻松的!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 16:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表