微型计算机通信与接口技术(第二版) 第2章 中断接口技术.ppt
《微型计算机通信与接口技术(第二版) 第2章 中断接口技术.ppt》由会员分享,可在线阅读,更多相关《微型计算机通信与接口技术(第二版) 第2章 中断接口技术.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章 中断接口技术中断接口技术 2.1 2.1 8086的中断系统的中断系统 2.1.1 中断与中断系统功能 1中断的概念 中断是一个过程,是CPU在正常执行程序的过程中,遇到外部或内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为紧急事件服务,当为这个紧急事件服务处理完毕之后,再返回到暂停点(中断点)继续执行原来的程序,由于CPU正在执行的原程序被暂停执行,所以称为中断 .2中断系统的功能()中断处理与返回()中断优先权判断()中断嵌套 2.1.2 中断分类 硬件中断和软件中断 1硬件中断硬件中断是指通过外部硬件产生的中断,如打印机、键盘等,有时也称为外部中断。硬件中断
2、又可分为两类:可屏蔽中断和不可屏蔽中断。2软件中断(内部中断)(1)除法出错中断(2)INT0溢出中断(3)INT n指令(4)断点中断(5)单步中断 2.1.3 中断向量和中断向量表本章首页本章首页本章首页本章首页00H04H系统专用10H1FHBIOS用40HFFH用户用08H0FH硬件中断20H3FHDOS用2.1.4 中断响应过程与时序1硬件中断的响应过程2硬件中断的时序3软件中断 软件中断是指通过中断指令来使CPU执行中断处理子程序的方法(1)中断类型码由指令提供,不需执行中断响应总线周期,也不受IF标志的影响。(2)正在执行软件中断时,若有通过NMI发出的中断请求,则立即响应;若发
3、生可屏蔽中断请求,只要条件允许(如IF1,当前指令执行完)即可响应中断。3软件中断(3)软件中断,由于其处理程序的入口是通过中断向量表来定位,所以可以方便地用INT n指令进行调用,因此在使用中和一般的子程序没有两样,并且原则上0255种软件中断类型均可使用。2.1.5 中断程序设计举例/*/*例例2-1.c*/2-1.c*/#include#include /支持标准输入输出,如支持标准输入输出,如printfprintf()()。#include#include /控制台输入输出控制台输入输出#include#include /支持接口访问、中断向量操作函数支持接口访问、中断向量操作函数v
4、oid interrupt(*sys_vect09)();void interrupt(*sys_vect09)();/申明一个函数为中断函数,该中断函数的中断号为申明一个函数为中断函数,该中断函数的中断号为sys_vect09sys_vect09unsigned unsigned intint key;key;/定义全局变量定义全局变量key(key(无符号整型无符号整型),),记录记录60H60H端口的值端口的值unsigned unsigned intint flag;flag;/定义标志定义标志flagflag,用来判断是否进行过新的中断,用来判断是否进行过新的中断void inter
5、rupt my_vect09()void interrupt my_vect09()/自定义的中断函数自定义的中断函数 key=inportb(0 x60);key=inportb(0 x60);/从从60H60H端口读取一个字节的数据送变量端口读取一个字节的数据送变量keykey flag=1;flag=1;/标志标志flagflag置置1 1,说明变量,说明变量keykey从端口读取一个新值从端口读取一个新值 (*sys_vect09)();(*sys_vect09)();/执行原来系统中的中断函数执行原来系统中的中断函数 void main()void main()flag=0;flag
6、=0;/初始化标志初始化标志flagflag,表示还没有发生新的中断,表示还没有发生新的中断sys_vect09=getvect(0 x09);sys_vect09=getvect(0 x09);/读取系统读取系统9 9号调用的中断向量地址存入号调用的中断向量地址存入sys_vect09sys_vect09setvect(0 x09,my_vect09);setvect(0 x09,my_vect09);/设置系统新的设置系统新的9 9号调用入口地址是号调用入口地址是my_vect09my_vect09while(1)while(1)if(flag)if(flag)printf(%02x,ke
7、y);printf(%02x,key);/输出中断中从输出中断中从60H60H端口读取的值到屏幕端口读取的值到屏幕 flag=0;flag=0;/标志清标志清0 0,准备接收新的,准备接收新的keykey值值if(key=0 x0010)break;if(key=0 x0010)break;/当输入的值是当输入的值是0AH0AH时,退出时,退出whilewhile循环循环if(key&0 x0080)=0 x0080)if(key&0 x0080)=0 x0080)printf(nprintf(n););nn/当字节变量当字节变量keykey的最高位是的最高位是1 1时,屏幕上输出换行符时,屏
8、幕上输出换行符 setvect(0 x09,sys_vect09);setvect(0 x09,sys_vect09);/恢复系统恢复系统9H9H中断的中断入口地址中断的中断入口地址 2相关函数说明(1)inportb:inportb函数的原型是:int inportb(int port)。该函数是从指定的输入端口port读入一个字节,并返回这个字节。2相关函数说明(2 2)getvectgetvect与与setvectsetvectgetvectgetvect函数是用来获取中断处理程序的入口地址函数是用来获取中断处理程序的入口地址的;的;setvectsetvect函数则用来设置某个中断处理
9、程序的函数则用来设置某个中断处理程序的入口地址。入口地址。(3 3)interruptinterrupt定义一个中断类型函数定义一个中断类型函数void interrupt (*sys_vect09)void interrupt (*sys_vect09)()();在用;在用setvectsetvect改写中断改写中断09h09h时就是时就是setvect(0 x09,my_vect09);setvect(0 x09,my_vect09);在改写之前应该先保在改写之前应该先保存原来中断存原来中断09h09h的中断向量地址的中断向量地址,这就用到了这就用到了getvectgetvect,sys_
10、vect09=getvect(0 x09);sys_vect09=getvect(0 x09);其中其中sys_vect09sys_vect09是个声明为是个声明为“void interrupt (*sys_vect09)void interrupt (*sys_vect09)()();”型的指针型的指针2.2 可编程中断控制器Intel 8259A Intel 8259A的主要性能包括:具有8级中断优先控制,通过级连可以扩展至64级优先权控制;每一级中断都可以通过初始设置为允许或屏蔽状态;8259A的工作方式可以通过编程进行设置;8259A采用NMOS制造工艺,只需要单一的+5V电源。2.2
11、.1 8259A的内部结构和工作原理8259A的内部结构主要有数据总线缓冲器、读/写控制逻辑、级连缓冲器、中断控制逻辑电路、中断请求寄存器、优先级比较器 1数据总线缓冲器数据总线缓冲器是8259A与系统数据总线的接口,是8位双向三态缓冲器。数据线D7D0与CPU系统总线相连,构成CPU与8259A之间的信息传送的通道。2读/写控制逻辑用于接收CPU的读写命令一方面把来自CPU的初始化命令字ICW和操作命令字OCW存入8259A内部相应的端口寄存器,用以规定8259A的工作方式和控制模式;另一方面也可使CPU通过读写电路读8259A内部有关端口寄存器的状态信息。3级连缓冲器8259A既可以工作于
12、单片方式,也可以工作于多片级联方式。当用于实现8259A芯片之间的级连时,可把中断源由8级扩展至64级;在多片级连时,只有一个为主片,其余为从片。4中断控制逻辑电路5中断请求寄存器IRR6中断屏蔽寄存器IMR7中断服务寄存器ISR8优先级比较器PR2.2.2 8259A的外部引脚2.2.3 8259A的工作过程当完成初始化后,当完成初始化后,8259A8259A对外部中断请求的响应对外部中断请求的响应和处理过程如下:和处理过程如下:(1 1)当有一条或若干条中断请求输入)当有一条或若干条中断请求输入(IR7IR0IR7IR0)有效时,则使中断请求寄存器的)有效时,则使中断请求寄存器的IRRIR
13、R的相应位设置为的相应位设置为1 1。(2 2)若)若CPUCPU处于开中断状态,则在当前指令执行处于开中断状态,则在当前指令执行完之后,响应中断,并且从完之后,响应中断,并且从INTAINTA发应答信号(两发应答信号(两个连续的个连续的INTAINTA负脉冲)。负脉冲)。2.2.3 8259A的工作过程(3 3).第一个第一个INTAINTA负脉冲到达时,负脉冲到达时,IRRIRR的锁存功能失效,的锁存功能失效,对于对于IR7IR0IR7IR0上发来的中断请求信号不予理睬。上发来的中断请求信号不予理睬。(4 4)使)使ISRISR寄存器的相应位置寄存器的相应位置1 1,以便为中断优先级比较,
14、以便为中断优先级比较器的工作做好准备。器的工作做好准备。(5 5)使寄存器的相应位复位,即清除中断请求。)使寄存器的相应位复位,即清除中断请求。(6 6)第二个)第二个INTAINTA负脉冲到达时,将中断类型寄存器中的负脉冲到达时,将中断类型寄存器中的内容内容ICW2ICW2,送到数据总线的,送到数据总线的D7-D0D7-D0上,上,CPUCPU以此作为相以此作为相应中断的类型码。应中断的类型码。(7 7)若)若ICW4ICW4中的中断结束位为中的中断结束位为1 1,那么,第二个,那么,第二个INTAINTA负负脉冲结束时,脉冲结束时,8259A8259A将将ISRISR寄存器的相应位清零;否
15、则,寄存器的相应位清零;否则,直至中断服务程序执行完毕,才能通过输出操作命令字直至中断服务程序执行完毕,才能通过输出操作命令字EOIEOI,使该位复位。,使该位复位。2.2.4 8259A的工作方式1中断优先权管理方式(1)全嵌套方式(2)特殊全嵌套方式(3)优先级自动循环方式(4)优先级特殊循环方式2中断源的屏蔽方式CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有普通屏蔽方式和特殊屏蔽方式两种。3结束中断处理的方式(1)中断自动结束方式(2)一般的中断结束方式(3)特殊的中断结束方式启动外设启动外设主程序主程序外设准备好外设准备好输入设备输入设备Ready=1输出设备输出设
16、备Busy=0中断请求中断请求中断响应中断响应数据数据IN/OUT中断服务程序中断服务程序IRET中断响应中断响应外设又一次准备好外设又一次准备好中断请求中断请求优点:CPU效率高,实时性好,速度快。缺点:程序编制较为复杂。2.2.3 8259A的工作过程(1)当有一条或若干条中断请求输入(IR7IR0)有效时,则使中断请求寄存器的IRR的相应位设置为1。(2)若CPU处于开中断状态,则在当前指令执行完之后,响应中断,并且从INTA发应答信号(两个连续的INTA负脉冲)。(3)第一个INTA负脉冲到达时,IRR的锁存功能失效,对于IR7IR0上发来的中断请求信号不予理睬。(4 4)使)使ISR
17、ISR寄存器的相应位置寄存器的相应位置1 1,以便为中断优,以便为中断优先级比较器的工作做好准备。先级比较器的工作做好准备。(5 5)使寄存器的相应位复位,即清除中断请求。)使寄存器的相应位复位,即清除中断请求。(6 6)第二个)第二个INTAINTA负脉冲到达时,将中断类型寄负脉冲到达时,将中断类型寄存器中的内容存器中的内容ICW2ICW2,送到数据总线的,送到数据总线的D7-D0D7-D0上,上,CPUCPU以此作为相应中断的类型码。以此作为相应中断的类型码。(7 7)若)若ICW4ICW4中的中断结束位为中的中断结束位为1 1,那么,第二个,那么,第二个INTAINTA负脉冲结束时,负脉
18、冲结束时,8259A8259A将将ISRISR寄存器的相应寄存器的相应位清零;否则,直至中断服务程序执行完毕,才位清零;否则,直至中断服务程序执行完毕,才能通过输出操作命令字能通过输出操作命令字EOIEOI,使该位复位。,使该位复位。中断优先权管理中断嵌套中断屏蔽中断结束2.2.4 8259A的工作方式1中断优先权管理方式8259A中断优先权的管理方式有:全嵌套方式特殊全嵌套方式优先级自动循环方式优先级特殊循环方式。2中断源的屏蔽方式CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有:普通屏蔽方式特殊屏蔽方式3结束中断处理的方式是自动结束方式(是自动结束方式(AEI)和非自动结
19、束方式。)和非自动结束方式。非自动结束方式又可进一步分为一般的中断结束方式非自动结束方式又可进一步分为一般的中断结束方式和特殊的中断结束方式。和特殊的中断结束方式。向向CPUCPU发出总线请求信号发出总线请求信号HOLDHOLD,接收接收CPUCPU发发出总线响应信号出总线响应信号HLDAHLDA接管对总线的控制,进入接管对总线的控制,进入DMADMA方式方式 发出地址信息,对存储器寻址并修改地址指针发出地址信息,对存储器寻址并修改地址指针 发出发出DMADMA结束信号,释放总线,使结束信号,释放总线,使CPUCPU恢复正恢复正常工作常工作 4系统总线的连接方式(1)缓冲方式(2)非缓冲方式5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机通信与接口技术第二版 第2章 中断接口技术 微型计算机 通信 接口 技术 第二 中断
限制150内