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

2020-02-08 09:13发布

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

        }
}

datasheet 上说,溢出后  TIR1IF会置1,要软件清零,为什么不直接判断  TIM1IF  而是把TMR1IE和TMR1IF两个一起判断,这样做有什么好处?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
surf_131
2020-02-08 16:55
usk5yenj4id04dm 发表于 2012-5-9 14:18
PIC是在公用的ISR里面查询第一个中断源的,所以TMR1IE&&TMR1IF必不可少,以防某些中断根本就没有开启. ...

正好讲反了。正因为只有一个中断源,万一哪个标志错误标示,你不消除中断标志就会造成反复进入中断的问题。
我昨天还碰到过这样的问题(是pic18,不是只有一个中断源的pic12/16),本来没有USART2接收的任务,只要TX即可,但是开了U2模块,偶然就有类似干扰让U2_RX蹦出个待取数标记。程序不断进入中断响应,却没有任务能处理。于是给个空读RCREG的响应操作,就解决了。

一周热门 更多>