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

[复制链接]
22738|33
1638574407 发表于 2012-12-23 20:06 | 显示全部楼层
路过 顶一下
Godlovetom 发表于 2012-12-23 22:19 | 显示全部楼层
给位前辈好!
永远的不知 发表于 2012-12-23 22:20 | 显示全部楼层
清楚中断标志的目的,是标识出已经响应过该中断了;有些单片机可能进入中断后,自动清除中断标志位,有的是写0清除,有些事写1清除,这个需要根据不同的mcu,仔细看一下。
hjs1618 发表于 2012-12-24 08:19 | 显示全部楼层
中断的执行的条件是中断使能与中断标志产生,中断标志的产生是有中断行为,硬件给中断标志,进入中断,是否需清中断标志得看本身硬件能否清,否则得人为清标志。
csl84 发表于 2012-12-24 09:01 | 显示全部楼层
定一下。
ymind 发表于 2012-12-24 09:14 | 显示全部楼层
kangzj 发表于 2012-12-23 17:37
不同中断的行为、触发条件、标志产生、清除条件是不同的,这个一定得先搞清楚 ...

这些回复中,我觉得你的最全面。
我具体补充几点:
1. 若中断触发方式是沿方式(edge trigger),就算不清除中断标志,中断处理程序也不会再次进入。当然,如果中断控制器锁存住这个中断标志,并以电平方式向CPU发出中断请求,中断处理程序须清掉中断控制器里中断标志。
2. 有些设备(片上或片外)发出中断后,当其状态寄存器被读时,蕴含着清除中断标志的动作。中断触发方式就算是电平方式(level trigger), 中断处理程序也不用显式清除其中断标志。
eemyicworld 发表于 2012-12-24 09:48 | 显示全部楼层
中断响应后,需要把中断标志清空,否则继续响应此中断源,有软件清空和硬件清空方式.
HORSE7812 发表于 2012-12-24 12:31 | 显示全部楼层
hong7817 发表于 2012-12-24 13:36 | 显示全部楼层
不同的单片机处理方式不一样吧,有些标志不清除,就无法再次进入中断,手册上肯定有说明
asasasd 发表于 2014-3-12 16:26 | 显示全部楼层
好贴子啊  学习了
myl593799546 发表于 2014-3-13 08:57 | 显示全部楼层
硬件不会自动清中断标识的都需要手动清中断标志,不然无限中断了
yiqifei 发表于 2014-7-17 09:08 | 显示全部楼层
顶一个
怎么掉了呢 发表于 2015-7-23 16:09 | 显示全部楼层
原来是这样啊,了解
leeuavr 发表于 2016-6-5 10:20 | 显示全部楼层
那为什么只在主程序中清除一次?
例如:
PORTA = 0XFF;
DDRA = 0XFF;
GICR |= 0XC0;
MCUCR = 0X0A;
GIFR = 0XC0;   //写1清除INT0和INT1中断标志位(为什么只清除一次?)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部