msjoke 发表于 2008-12-24 21:46:39

关于书中中断标志位矛盾的说法?【恢复】

P93页中SEI(); /*设置I标志位“I”,……*/

但P94页SET();/*……清除“I”标志,……*/

请问到底是什么?

我中断标志位挺晕勒。

msjoke 发表于 2008-12-28 21:07:43

呵,谢谢了,原来是这样,写“0”无效。

Gorgon_Meducer 发表于 2008-12-28 13:41:21

写一代表清零,写零代表置位,即写一代表此时该中断源不能响应,此方法属于用软件来实现



这种理解是错误的……

所有的Flag都是写“1”清零,写“0”无效。比如中断标志xxIF。

但是大部分使能标志是写“1”置位,表示开启使能,写“0”清零,表示关闭使能,SREG里面的

I标志就是这样,其它外设的中断使能标志xxIE也是这样。



请注意区别。

msjoke 发表于 2008-12-28 10:14:57

恩,谢谢,又看了几天,查了查手册,终于明白了。

总中断是写一置位,中断使能同样如此,但各个中断源标志位不然。

写一代表清零,写零代表置位,即写一代表此时该中断源不能响应,此方法属于用软件来实现。

其实进入中断服务程序后,该中断源标志位会自动清零,即:使之不能再被响应(。

不过不怕,一旦触发中断请求,相应的中断标志位被自动置位,即:使该中断可以被响应,就是说有了中断响应的必要条件。

还不懂的朋友可以搜索下GIFR,静心看看。

Gorgon_Meducer 发表于 2008-12-27 19:17:12

所谓设置中断标志位就是 设置系统状态寄存器SREG里面的I标志,该标志

在Datasheet中的解释为:Global Interrupt Enable,意为:全局中断使

能,向该位写“1”将开启单片机对中断的全局响应;清“0”将屏蔽所有

的中断。完成写1操作的语句是SEI。完成清零操作的是CLI。

对初学者来说,中断是对一个门槛,需要耐心。有什么不懂得再提问好了。

cwl2008 发表于 2008-12-26 17:23:43

是啊!!我也不太懂中断哪一章啊!!感觉过渡太快了!初学者有点跟不上呢!

msjoke 发表于 2008-12-25 09:12:12

欧,原来是这样。咱全局中断不谈,光说I标志位。

请问设置中断标志位是不是就是使该中断允许响应,就是对该中断标志位写0(这点是否逻辑,挺不爽)?这点很晕。谢谢了。

Gorgon_Meducer 发表于 2008-12-24 22:07:17

P94页的说法是错误的……在勘误表里面……应该是设置I标志位……
页: [1]
查看完整版本: 关于书中中断标志位矛盾的说法?【恢复】