发新帖我要提问
12
返回列表
打印

在中断程序中,需要清中断标志,作用是什么?

[复制链接]
楼主: renyaq
手机看帖
扫描二维码
随时随地手机跟帖
21
1638574407| | 2012-12-23 20:06 | 只看该作者 回帖奖励 |倒序浏览
路过 顶一下

使用特权

评论回复
22
Godlovetom| | 2012-12-23 22:19 | 只看该作者
给位前辈好!

使用特权

评论回复
23
永远的不知| | 2012-12-23 22:20 | 只看该作者
清楚中断标志的目的,是标识出已经响应过该中断了;有些单片机可能进入中断后,自动清除中断标志位,有的是写0清除,有些事写1清除,这个需要根据不同的mcu,仔细看一下。

使用特权

评论回复
24
hjs1618| | 2012-12-24 08:19 | 只看该作者
中断的执行的条件是中断使能与中断标志产生,中断标志的产生是有中断行为,硬件给中断标志,进入中断,是否需清中断标志得看本身硬件能否清,否则得人为清标志。

使用特权

评论回复
25
csl84| | 2012-12-24 09:01 | 只看该作者
定一下。

使用特权

评论回复
26
ymind| | 2012-12-24 09:14 | 只看该作者
kangzj 发表于 2012-12-23 17:37
不同中断的行为、触发条件、标志产生、清除条件是不同的,这个一定得先搞清楚 ...

这些回复中,我觉得你的最全面。
我具体补充几点:
1. 若中断触发方式是沿方式(edge trigger),就算不清除中断标志,中断处理程序也不会再次进入。当然,如果中断控制器锁存住这个中断标志,并以电平方式向CPU发出中断请求,中断处理程序须清掉中断控制器里中断标志。
2. 有些设备(片上或片外)发出中断后,当其状态寄存器被读时,蕴含着清除中断标志的动作。中断触发方式就算是电平方式(level trigger), 中断处理程序也不用显式清除其中断标志。

使用特权

评论回复
27
eemyicworld| | 2012-12-24 09:48 | 只看该作者
中断响应后,需要把中断标志清空,否则继续响应此中断源,有软件清空和硬件清空方式.

使用特权

评论回复
28
HORSE7812| | 2012-12-24 12:31 | 只看该作者
学习

使用特权

评论回复
29
hong7817| | 2012-12-24 13:36 | 只看该作者
不同的单片机处理方式不一样吧,有些标志不清除,就无法再次进入中断,手册上肯定有说明

使用特权

评论回复
30
asasasd| | 2014-3-12 16:26 | 只看该作者
好贴子啊  学习了

使用特权

评论回复
31
myl593799546| | 2014-3-13 08:57 | 只看该作者
硬件不会自动清中断标识的都需要手动清中断标志,不然无限中断了

使用特权

评论回复
32
yiqifei| | 2014-7-17 09:08 | 只看该作者
顶一个

使用特权

评论回复
33
怎么掉了呢| | 2015-7-23 16:09 | 只看该作者
原来是这样啊,了解

使用特权

评论回复
34
leeuavr| | 2016-6-5 10:20 | 只看该作者
那为什么只在主程序中清除一次?
例如:
PORTA = 0XFF;
DDRA = 0XFF;
GICR |= 0XC0;
MCUCR = 0X0A;
GIFR = 0XC0;   //写1清除INT0和INT1中断标志位(为什么只清除一次?)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则