- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 MCS-51单片机的基础知识 中断响应的条件 1. CPU的中断响应条件 CPU响应中断必须首先满足以下三个基本条件。 (1) 有中断源发出中断请求。 (2) 中断总允许位EA=1。 (3) 请求中断的中断源的中断允许位为1。 在满足以上条件的基础上,若有下列任何一种情况存在,中断响应都会受到阻断。 (1)CPU正在执行一个同级或高优先级的中断服务程序。 (2)正在执行的指令尚未执行完。 (3)正在执行中断返回指令 RETI或者对专用寄存器IE、IP进行读/写的指令。CPU在执行完上述指令之后,要再执行一条指令,才能响应中断请求。 优先级的判定 2. 中断优先级的判定 中断源的优先级别分为高级和低级,通过由软件设置中断优先级寄存器IP相关位来设定每个中断源的级别。 如果几个同一优先级别的中断源同时向CPU请求中断,CPU通过硬件查询电路首先响应自然优先级较高的中断源的中断请求。 中断可实现两级中断嵌套。高优先级中断源可中断正在执行的低优先级中断服务程序,除非执行了低优先级中断服务程序的CPU关中断指令。同级或低优先级的中断不能中断正在执行的中断服务程序。 中断响应的过程 3. 中断响应过程 在满足中断响应条件时,CPU响应中断。首先,将相应的优先级状态触发器置1,以屏蔽同级别中断源的中断请求。其次,硬件自动生成长调用指令(LCALL),把断点地址压入堆栈保护(但不保护状态寄存器PSW及其他寄存器内容),然后将中断源对应的中断入口地址装入程序计数器PC中,使程序转向该中断入口地址,并执行中断服务程序。 8051单片机的中断入口地址(称为中断矢量)由单片机硬件电路决定。 5.2.2 中断处理 中断处理就是执行中断服务程序,从中断入口地址开始执行,直到返回指令(RETI)为止。此过程一般包括三部分内容,一是保护现场,二是处理中断源的请求,三是恢复现场。 通常,主程序和中断服务程序都会用到累加器A、状态寄存器PSW及其他一些寄存器。在执行中断服务程序时,CPU若用到上述寄存器,就会破坏原先存在这些寄存器中的内容,中断返回,将会造成主程序的混乱。因此,在进入中断服务程序后,一般要先保护现场,然后再执行中断处理程序,在返回主程序以前,再恢复现场。 5.2.2 中断处理 在编写中断服务程序时要注意以下几个方面。 一般在这些中断入口地址区存放一条无条件转移指令,转向中断服务程序的起始地址。 若要求禁止更高优先级中断源的中断请求,应先用软件关闭CPU中断或屏蔽更高级中断源的中断,在中断返回前再开放被关闭或被屏蔽的中断。 在保护现场和恢复现场时,为了不使现场数据受到破坏而造成混乱,在保护现场之前要关中断,在保护现场之后再开中断;在恢复现场之前关中断,在恢复现场之后再开中断。 5.2.3 中断返回 1. 中断返回 中断返回是指中断服务完成后,CPU返回到原程序的断点(即原来断开的位置),继续执行原来的程序。 中断返回通过执行中断返回指令RETI来实现,该指令的功能是首先将相应的优先级状态触发器置0,以开放同级别中断源的中断请求;其次,从堆栈区把断点地址取出,送回到程序计数器PC中。因此,不能用RET指令代替RETI指令。 中断请求的撤除 2. 中断请求的撤除 CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。不同中断源中断请求的撤除方法是不一样的。 (1) 定时器溢出中断请求的撤除 CPU在响应中断后,硬件会自动清除中断请求标志TF0或TFl。见后面P106中断系统结构图 (2) 串行口中断的撤除 在CPU响应中断后,硬件不能清除中断请求标志TI和RI,而要由软件来清除相应的标志。 (3) 外部中断的撤除 外部中断为边沿触发方式时,CPU响应中断后,硬件会自动清除中断请求标志IE0或IEl。 外部中断为电平触发方式时,CPU响应中断后,硬件会自动清除中断请求标志IE0或IEl,但由于加到INT0或INT1引脚的外部中断请求信号并未撤除,中断请求标志IE0或IEl会再次被置1,所以在CPU响应中断后应立即撤除INT0或INT1引脚上的低电平。一般采用加一个D触发器和几条指令的方法来解决这个问题。 由下图可知,外部中断请求信号直接加到D触发器的CP端,当外部中断请求的低电平脉冲信号出现在CP端时,D触发器的Q端置0,INT0或INT1引脚为低电平,发出中断请求。在中断服务程序中开始的三条指令可先在P1.0输出一个宽度为2个机器周期的负脉冲,使D触发器的Q端置1,然后由软件来清除中断请求标志IE0或IEl。 外部中断的撤除电路 中断的初始化步骤 中断系统的初始化步骤: (1) 开放CP
文档评论(0)