关于中断的判断 TMR1IE&&TMR1IF 的疑问

2020-02-08 09:13发布

void interrupt ISR(void)
{
        if(TMR1IE&&TMR1IF)
        {

        }
}

datasheet 上说,溢出后  TIR1IF会置1,要软件清零,为什么不直接判断  TIM1IF  而是把TMR1IE和TMR1IF两个一起判断,这样做有什么好处?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
mplk
1楼-- · 2020-02-08 23:42
 精彩回答 2  元偷偷看……
mplk
2楼-- · 2020-02-09 01:39
本帖最后由 mplk 于 2012-5-28 06:18 编辑

某个IE不开启的话是不会因为该中断而进入中断的,surf_131误导人吧,你还是好好的查自己的程序!但是IF是绝对有可能置位的,所以必需同时判断IE和IF。


照surf_131的说法,PIC里面的IE都是虚设了。
zliyuanpeng
3楼-- · 2020-02-09 06:46
楼上的的说法是对的,对IE、IF有异议的人都是没有仔细研读datasheet的,或者就是用其他的多中断入口的单片机经验来对待pic这种只有一个中断入口的单片机。
lixin91985
4楼-- · 2020-02-09 10:55
LZ的写法是正确的。

多个中断对应一个中断向量,但是IF 在IE没有打开的情况下还是会响应的。所以就会造成中断无法关闭。

而说什么 IF 被错误置位的问题 纯粹是扯淡。  对于一个特定的中断, IE没开,他怎么进中断。

一周热门 更多>