单片机的中断标志位是有什么作用?

有一个程序是给单片机一个每1毫秒的周期性中断,然后在中断中对中断标志位进行清零。但是我有一个疑问,中断标志位在这里有什么作用?为什么要对中断标志位清零?1毫秒的周期性中断是不是从中断标志位清零开始计时的?要是中断程序没有执行完,下一毫秒中断有来了,程序该怎么执行呢?

四个问号分为四点一一解答:
1、一般来说单片机的中断发生有两个条件,一是中断标志位置位,二是中断允许,如果这两个条件都满足则进入中断,因为正常情况下中断一直是允许的,那么只能通过标志位来区分是否有中断挂起,
2、如果进入中断不清除标志位,那么这一中断服务程序结束后由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况
3、周期性中断是由定时器辅助完成的,只要定时时间到,硬件就会自动置位标志位,这时中断发生,定时器还在运行,与中断处理是并行的没有冲突,因此周期性的中断不是从中断标志位清零开始的。
4、如果中断程序没有执行完并且一下个中断又来了,那么硬件还是会自动置位标志位的,如果在这之前已经清零标志位那么中断结束后会再进入一次该中断,如果这时还没有清除中断标志位,则第二个1毫秒中断无效。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-17
有一个程序是给单片机一个每1毫秒的周期性中断,

--是定时器,产生的中断吧?

然后在中断中对中断标志位进行清零。

--中断标志,清零,不用你关心。
--通常都是进入中断就自动清零。

要是中断程序没有执行完,下一毫秒中断有来了,程序该怎么执行呢?

--你的中断程序,就不应该编写这么长。追问

是定时器中断。
中断标志清零,我必须要关心,因为我要写程序对他清零,由于不了解这个中断标志位,所以我不懂是在中断程序的一开始就清零还是在中断程序的末尾清零。
至于中断程序,我也知道不应该太长,但是我是想明白太长了,下个中断来了,单片机是怎么执行的。

追答

中断标志清零,我必须要关心,
--你不必关心这个。
--51单片机,进入定时中断程序后,标志就自动清零。

因为我要写程序对他清零,
--画蛇添足。

至于中断程序,我也知道不应该太长,但是我是想明白太长了,
下个中断来了,单片机是怎么执行的。

--将继续执行你的很长的中断程序。
--不理会新产生的中断申请。

追问

的确有些单片机是可以自动清零中断标志位的,但是我这么问,肯定是我用的这款单片机的PIT中断标致位是必须要手动清零的。当然可能我的提问没有说清楚吧。还是谢谢你的回答。

追答

51单片机,有五个中断源。
有四个会自动清除。
只有串口中断,不会自动清除标志位。
因为,串口中断有两个入口:接收中断和发送中断。
需要用软件判断是什么中断后,再清除。

另外,52系列的,T2 中断,不自动清除标志。

追问

嗯,是的。谢谢了。51的确如此。我现在用的这个单片机是基于M4内核的K60单片机,他是需要手动清零的。

追答

采纳答案说:
《1、一般来说单片机的中断发生有两个条件,
一是中断标志位置位,
二是中断允许,
如果这两个条件都满足则进入中断,...》
----
有不足。
如果当前,正在执行高优先级的、或同优先级的中断程序,
就不会响应新的中断申请。

------------------

采纳答案还说:
《4、如果中断程序没有执行完并且一下个中断又来了,那么硬件还是会自动置位标志位的,》
----
什么是下一个中断又来了呀?
是在中断来了之后,硬件才会自动置位标志位的吗?

概念明显错误。

应该说:
这个中断程序没有执行完时,也可能会有硬件将标志位置位,这仅仅代表来了新的申请。

------------------

采纳答案还说:
《如果在这之前已经清零标志位那么中断结束后会再进入一次该中断》
这是完全错误的说法。

------------------

采纳答案还说:
《如果这时还没有清除中断标志位,则第二个1毫秒中断无效。》
越来越错。

采纳答案,从头到尾,几乎就没有对的地方。
骗子太多了。

相似回答