是这样的,我的红外解码在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个小时都没搞出来!手上又没有示波器可以看波形!郁闷啊!!!!!!!!!!!!!!!
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>