void interrupt ISR()
{
if(T0IF==1)
{
T0IF = 0; //清中断标志
。。。。。。。
}
if(RAIF==1)
{
RAIF=0;
RA0=RA0;
start_flag=1;
}
if(INTF==1)
{
INTF=0;
。。。。用于接受红外线的外中断,解码
}
void main
{
while(1)
{
.....用于控制调光等 50HZ
}
}
问题就是每次接收到遥控器的信号,按键时灯会灭一下,我想是外中断引起的,但是RAIF电平中断和计数中断没有影响啊,这是为什么呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
(原文件名:883INT.JPG)
这个PIC16F887的中断源里面没有RAIF。想必是个更低档次的型号了?
RA0=RA0;
start_flag=1;
这两句,RA0若是按键中断源,则TRISA0就该是1,也就是输入态。前句因此不能有效果。
后一句,这个标志为1会引起什么来就要lz自己分析了。
可控硅调光的灯,该是白炽灯吧?能够感觉到灯灭,那中断的时间一般不止一两个正弦周期。可能是连续几个半波都没有触发信号。请先将人工按键的中断临时取消,用一个缓慢的周期来逐渐调亮调暗灯光,再用按键响应来控制一个led(PWM方式)。这两样都正常就说明软件没有问题,要查硬件了。
中断的排列次序跟找到中断源需要的时间有关,越排列前面,搜索时间越少。因此要把人工按键的中断向后排。
一周热门 更多>