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

2020-02-10 08:42发布

是这样的,我的红外解码在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个小时都没搞出来!手上又没有示波器可以看波形!郁闷啊!!!!!!!!!!!!!!!
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
honami520
1楼-- · 2020-02-10 13:18
靠,把1602拆下来后,就好了!郁闷,1602又没有占用RC7口,写1602的函数也没有占用RC7口,竟然会这样!郁闷!
lchzl
2楼-- · 2020-02-10 18:43
会不会是1602的光线干扰,我也在做红外解码!有时间多交流!
honami520
3楼-- · 2020-02-10 19:23
不可能吧!我在51板和PIC板上都是一个1602,不过RC7作为串口,我是根本没有在1602的函数里动过这个脚的,不知道为什么就会这样!郁闷,用51解码蛮轻松的!

一周热门 更多>