智能车制作

标题: 不能正常进入中断 [打印本页]

作者: shibf    时间: 2009-6-12 00:00
标题: 不能正常进入中断
我写了个中断程序,但是有时候能正常执行,有时候就不行。不能执行中断的时候,看对应的中断标志位是1,表示发生了中断,但是没有执行中断程序(因为我每次在中断程序中都把对应的中断标志位清除的)。程序是照常执行的,对应的一些寄存器也变化着,就是中断程序执行不了。

请高手帮忙分析一下。
作者: zdhly0401    时间: 2009-6-12 10:19
中断号写对,还有看看中断开了没有
作者: a132730    时间: 2009-6-12 14:02
EnableInterrupt
作者: shibf    时间: 2009-6-12 19:40
2# zdhly0401

中断号、开中断都没问题。
程序开始运行的时候是可以进入中断的,之后中断执行了若干次后,就会不再执行中断,对应的中断标志位一直保持1,此时程序其他部分是正常执行的。这种情况并不是每次都发生,有时正常,有时就会出现这个问题。而且出现这种问题的概率比正常执行程序概率大。
作者: shibf    时间: 2009-6-15 19:55
这个问题不能解决吗?
作者: shibf    时间: 2009-6-24 11:44
还没人解答吗?希望高人指点。
作者: 恋心    时间: 2009-6-24 13:09
楼主好,楼主在中断内设置断点看看可能进中断,如果光看标志位的话,有可能标志位在大部分时间内处于1,导致你看到的即全部为1。祝楼主早日解决哈~^_^
作者: shibf    时间: 2009-6-24 18:58
7# 恋心     先感谢解答。不过问题还没有解决。
    我是在中断程序一开始就写1清除中断标志位的,所以正常执行的话,应该大部分时间中断标志位是0.如果大部分时间是1就是说明中断发生了,但是中断程序没有执行。
    下面是我的一个中断程序:
void interrupt 9 isr1(void)
{
     TFLG1_C1F =1;    //clear interrupt request flag   
     hang=0;
     hangshu=0;
     TIE_C0I=1;
}
作者: shibf    时间: 2009-6-26 12:01
急求高人指点!!!!!!
作者: gimmooncher    时间: 2009-8-7 20:09
中断序号写对了吗?,你说有时候能进入中断,有时候不能,可能是你进入中断了可是有可能发生比它优先级更高的中断发生了,去处理那个中断,而你没写这个中断服务子程序的话,就一直卡在那里了,这只是我的想法,借鉴一下!!!!
作者: shibf    时间: 2009-8-8 00:48
谢谢大家,这个问题解决了。
原来是我们自己焊板子时候将板子上一个与BDM有关的电阻焊错了,换上正确阻值的电阻,再也没遇到过这个问题。虽然现在还不明白为什么电阻阻值会影响片子的中断,不过遇到的问题解决了。呵呵。
作者: zxzxy1988    时间: 2009-8-8 13:46
好神奇啊,汗》。
作者: xujiahua1231    时间: 2011-3-20 15:11
神奇




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2