欢迎来到天天文库
浏览记录
ID:30450309
大小:2.43 MB
页数:23页
时间:2018-12-30
《微机原理ch08中断和8259芯》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、8中断和8259芯片8.1概述中断是一个过程,这个过程一般由微处理器外部或内部硬件引起的。CPU在执行程序的过程中被内部或外部事件所打断,CPU暂时中止现行程序的执行,转而去执行预先安排好的程序,即中断数服务程序(ISR),待处理完毕后又回到原先的断点继续执行原来的程序。中断请求的实现要由软件来实现,编写软件需要了解硬件是如何工作的。在计算机系统中,凡是能引起中断的事件被称为中断源,即中断的来源。通常中断源有以下几种:l一般的I/O设备,如打印机l数据通道中断源,如磁盘l实时时钟l故障源,如电源故障,存储出错l软件中断为了满足各种情况的要求,中断系统应具备以下的功能:l实现中断响应、中断服务
2、及返回l实现中断优先权排队l实现中断嵌套中断一般是随机发生的,因而中断涉及的基本问题很多,如:lCPU何时检测中断请求信号lCPU如何响应中断请求lCPU如何识别中断源lCPU如何转去执行中断服务程序,如何从中断服务程序返回l如何实现中断优先排队,如何处理多重中断l如何管理中断中断优先权(priority)是指系统设计者事先根据事件的轻重缓急,给每个中断源确定的优先服务的级别。系统根据中断优先权的高低确定优先为哪个中断服务。8.1.1中断源的识别中断源的识别可以通过向量中断或中断查询等方法来实现。8.1.1.1中断查询或称查询中断查询中断和查询传送方式是有本质区别的:查询传送方式需要CPU花
3、费很多时间不断地循环询问接口电路,以等待设备的就序信号。查询中断是一种由中断启动而不是由微处理器启动的查询方法。查询方法的接口电路xoral,al;CF=0movdx,340hinal,dx;读如中断寄存器状态rcral,1jcserv_a;若有外设A的请求,则转A中断服务程序rcral,1jcserv_b;若有外设B的请求,则转B中断服务程序…8.1.1.1向量中断VectoredInterrupt该方法对中断源的识别最快。CPU响应中断时,通过中断响应信号选通中断接口,中断接口将中断向量号送至数据总线,CPU根据中断向量号获知中断服务程序的入口地址。8.1.2中断优先级排队硬件优先级排队
4、8.1.2.1菊花链优先级排队8.1.1.1优先级编码电路由8:3优先级编码器、优先级寄存器、3位数字比较器组成的一种中断优先级排队电路。(编码器、译码器、比较器参见数字电路的组合逻辑)优先级寄存器的内容可以由用户设定,其中一位为禁止位,优先级寄存器保留着正在进行的中断服务的编码。设:优先级最低的线通过编码器后的编码为000B,最高的线编码为111B如果CPU当前正在进行一个中断服务,则优先级寄存器输出低电平,寄存器保留着正在服务的中断编码。如果CPU当前没有进行一个中断服务,则优先级寄存器输出高电平。8.1.1.2采用专用的中断优先级管理芯片采用专门的可编程芯片来完成中断优先级的管理,如I
5、ntel8259A。8.1.2中断嵌套中断嵌套是指在中断过程中,CPU又收到优先级更高的中断请求,若条件满足CPU将暂停当前的中断服务,转去为更高优先级的中断服务,待返回后再继续执行被打断的中断服务程序,形成嵌套的中断。硬件中断优先级排队方案在软件的配合下都可以方便地实现中断嵌套。软件查询中断优先级排队方法只要编写相应的处理程序段也可以实现中断嵌套,但程序相对复杂、费时,一般不采用。8.1.1中断处理CPU响应了中断就转入中断服务程序中,在ISR中要做如下工作:l保护现场CPU响应中断时自动保护了CS、IP和Flag寄存器,在中断服务程序中会用到另一些寄存器,为了保证中断返回后主程序正确继续
6、执行,必须把这些寄存器压入堆栈保护起来,称为保护现场。l如允许中断被嵌套需打开中断CPU在响应中断时已自动关闭中断(IF=0)不允许其他的中断来打断他。如果允许比他优先级更高的中断来打断,则需要用STI指令打开中断。l中断服务这是ISR的核心,即完成外部设备要求CPU完成的工作。l恢复现场在中断返回前要把保护现场压入堆栈的寄存器的内容恢复为先前的值。需要注意的是出栈的顺序与入栈的顺序相反。l中断返回中断服务程序的最后一条指令是IRET。执行IRET指令,CPU自动从堆栈中弹出Flag、IP和CS,返回主程序继续执行。8.28088/86中断系统Intel8088/86具有一个简单而灵活的中断
7、系统,采用向量中断机制,能处理256个中断,用中断向量号0~255来区别,可用软件也可用硬件来启动中断。中断源可来自内部,也可来自外围芯片。8.2.1中断类型8.2.1.1内部中断内部中断是通过软件调用的非屏蔽中断,是CPU根据软件中的某条指令或者软件对标志寄存器中某些标志的设置而产生的。8.1.1.1.1除法错中断在执行除法指令时,若除数为0或商超过寄存器所能表示的范围,则立即产生一个向量号为0的内部中断,
此文档下载收益归作者所有