首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

讨论:(12DG128) 开外部中断(IRQ)的设置问题?

讨论:(12DG128) 开外部中断(IRQ)的设置问题?

MC9S12DG128在INTCR寄存器的默认设置下,只要开全局中断即EnableInterrupts的话,外部中断IRQ是不是就已经打开了
如果是的话,在使用别的中断(例如定时计数器中断)而不使用外部中断IRQ的情况下,只要打开全局中断即EnableInterrupts,是不是不可避免的打开了外部中断(IRQ)?
不是 打开IRQ还要把INTCR寄存器中的IRQEN写一才行!
IRQEN的上电复位缺省值为1,即IRQ是开启的。
海纳百川  有容乃大
按照strongchen的意思,在缺省情况下,只要开中断(EnableInterrupts),IRQ就不可避免的打开,这样就会造成一些不便了
如果不需要IRQ,你可以在开中断前将IRQEN位清零就可以了。
海纳百川  有容乃大
请教一下,我用DisableInterrupts;关闭全局中断,在调试时发现,执行这个语句后, CCR 寄存器的 I 位并没有被清0 ;然后我把这句话用 asm cli;替代,结果 I 位就被清0 了。不懂两者之间有什么区别。。。-_-!!!
#define EnableInterrupts {__asm CLI;}
#define DisableInterrupts {__asm SEI;}

这是在hidef.h文件中定义的两个宏
slaxh.com
执行DisableInterrupts和asm cli的效果应该是一样的。
海纳百川  有容乃大
QUOTE:
以下是引用strongchen在2007-11-2 11:01:00的发言:
执行DisableInterrupts和asm cli的效果应该是一样的。

返回列表