找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3751|回复: 0
打印 上一主题 下一主题
收起左侧

HCS12可屏蔽中断请求和不可屏蔽中断请求

[复制链接]
跳转到指定楼层
楼主
ID:85764 发表于 2015-7-17 00:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                        今天学到HCS12单片机的中断,看到可屏蔽中断请求和不可屏蔽中断请求有点费解,在网上查了一下:
中断由异步的外部事件引起。外部事件及中断响应与正在执行的指令不存在关系。80386有两根引脚INTR和NMI接受外部中断请求信号,INTR接受可屏蔽中断请求。在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。
  处理器必须接受和处理来自NMI的中断请求。在80386系统中,处理器在响应NMI的中断向量号固定为2。为了避免不可屏蔽中断的嵌套,当接受到一个NMI中断请求时,处理器自动屏蔽所有的NMI的中断请求,直到执行中断指令IRET后才重新开放NMI中断请求,所以,NMI处理程序应以IRET指令结束。
  什么叫屏蔽中断?允许中断?怎样实现?
  按照是否可以被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(InterruptRequire)和不可屏蔽中断请求NMI(NonMaskableInterrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(IinterruptFlag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。IF位可以由用户控制,指令STI或Turboc的Enable()函数,将IF位置1(开中断),指令CLI或Turbo_c的Disable()函数,将IF位清0(关中断)。
  典型的非屏蔽中断源的例子是电源掉电,一旦出现,必须立即无条件地响应,否则进行其他任何工作都是没有意义的。典型的可屏蔽中断源的例子是打印机中断,CPU对打印机中断请求的响应可以快一些,也可以慢一些,因为让打印机等待儿是完全可以的。
  对于软中断,它不受IF位的影响,所以属于非屏蔽中断范畴。还有一点,细心的读者会想到:CPU只有两根中断请求输入线,有多个中断源怎么办?一般借助于外部电路。
虽然说的是80386,但原理是一样的
一句话:可屏蔽中断是由总中断和自己中断使能位控制执行的,而不可屏蔽中断请求是无条件执行的。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表