1、第第7 7章章 微机的中断系统微机的中断系统版权所有,2000(c)南京航空航天大学计算机科学与工程紊提示提示本章是微机原理及接本章是微机原理及接口课的一个重点和难口课的一个重点和难点。点。By LYQ本章主要内容本章主要内容l基本知识基本知识中断中断与与异常异常、中断分类中断分类、实地址方式实地址方式与与保护方式保护方式下的中断下的中断*、中断过程中断过程等等l可编程中断控制器可编程中断控制器*82598259A A的的内部结构及工作原理内部结构及工作原理*、82598259A A的的引脚信号引脚信号、82598259A A的的工作方式工作方式*、82598259A A的的编程方法编程方法*
2、、高级中断控制器、高级中断控制器l中断调用及其应用中断调用及其应用By LYQ7.1 7.1 中断的基本知识中断的基本知识l一、中断与异常一、中断与异常l二、中断分类二、中断分类l三、实方式与保护方式下的中断三、实方式与保护方式下的中断l四、中断过程四、中断过程l五、外部中断源的管理五、外部中断源的管理By LYQ一、中断与异常一、中断与异常l1.中断中断l2.2.异常异常l3.3.中断和异常的区别中断和异常的区别l4.4.异常的类型异常的类型By LYQ什么是中断什么是中断l 所谓所谓中断中断,是指处理器在执行正常,是指处理器在执行正常程序过程中,当出现某些异常情况或某程序过程中,当出现某些
3、异常情况或某个外部设备请求时,处理器个外部设备请求时,处理器暂时中止正暂时中止正在执行的程序,转而去执行其特定的服在执行的程序,转而去执行其特定的服务程序务程序,并在,并在执行完服务程序后返回原执行完服务程序后返回原来被中止的程序处继续执行来被中止的程序处继续执行的过程。的过程。By LYQ什么是异常?什么是异常?l异常异常是指把是指把因因意外条件意外条件而而改变程序改变程序执行流程以报告出错情况和非正常状态执行流程以报告出错情况和非正常状态的过程的过程称为异常中断称为异常中断(简称异常简称异常)。lINT n也归到异常之中也归到异常之中 By LYQ中断和异常有什么区别?中断和异常有什么区别
4、?l(1 1)中断处理)中断处理异步异步发生的发生的外部外部事件。事件。(各种外部设备各种外部设备数据传送的请求及时钟中断数据传送的请求及时钟中断)l(2 2)异常处理)异常处理同步同步发生的发生的内部内部事件。事件。(处理指令失效处理指令失效)l(3 3)硬件中断是作为外部事件的结果而发生的。)硬件中断是作为外部事件的结果而发生的。(可可屏蔽中断和不可屏蔽中断屏蔽中断和不可屏蔽中断 )l(4 4)中断是在当前指令执行完后才去执行服务程序的中断是在当前指令执行完后才去执行服务程序的,在中断处理程序完成中断服务后,程序继续执行被中在中断处理程序完成中断服务后,程序继续执行被中断指令之后的指令。断
5、指令之后的指令。By LYQ异常有哪几种类型异常有哪几种类型?l(1)失效l(2)陷井l(3)终止By LYQ什么是失效什么是失效l失效又称为故障(Faults):是在引起异常的指令之前被检测和处理。在执行完失效对应的服务程序后,会返回到该失效指令处,重新执行该指令。l 例:在虚拟存储器系统中,当处理器涉及的页或段不在物理存储器中时,就会产生一个失效异常。操作系统从盘上读取这个页或段,会重新启动指令。因此失效异常可以正常执行下去。By LYQ什么是陷井?l陷井(Traps)是在引起异常的指令执行之后才被报告,且服务程序完成后,返回到原程序引起异常指令的下一条指令处继续向下执行。l 陷井与中断处
6、理方法一样,但与失效不同.例:用户定义的软件中断就是一种陷井。这与中断引起的处理方法一样By LYQ什么是终止?l中止(Abort)是一种不能确定引起异常指令确切位置的异常(有时称为夭折或失败)。l例:协处理器段溢出,原来的程序无法再执行下去,因此服务程序往往重新启动操作系统,运行某些软件时,经常会莫名其妙地自动启动系统,这就是所谓的中止异常引起的。By LYQ二、中断分类(内部中断和外部中断)By LYQ内部中断或异常内部中断或异常l1失效异常失效异常l2陷井异常陷井异常l3中止异常中止异常By LYQ主要失效异常主要失效异常l除法出错、调试异常、界限检查、除法出错、调试异常、界限检查、无效
7、操作码、协处理器不存在、无效操作码、协处理器不存在、无效无效TSS、段不存在、堆栈段溢段不存在、堆栈段溢出、一般性保护错、页面出错、出、一般性保护错、页面出错、协处理器错(仅协处理器错(仅80286)、机器)、机器检查(检查(PentiumPentium III)等。等。By LYQ主要陷井异常主要陷井异常l系统中的主要陷井异常包括单步陷井、断点异常、溢出以及中断指令INT n等。By LYQ主要中止异常主要中止异常l系统中的主要中止异常包括双重故障(在执行一个异常处理程序中又出现另一个异常)、协处理器段溢出等。重新启动系统,结束任务l广义上讲,异常属于广义上讲,异常属于内部中断内部中断 By
8、 LYQ外部中断外部中断l1不可屏蔽中断(NMI)l2可屏蔽中断(INTR)l3.中断和异常功能表 By LYQ不可屏蔽中断不可屏蔽中断l含义:不能用软件来控制是否允许中断的一种外部中断。l常见NMI中断(中断类型号规定为2)有:(1)电源掉电 (2)存储器检验出错(3)总线奇偶错等。见见P271表表By LYQ可屏蔽中断可屏蔽中断l含义:可用软件控制是否允许中断的外部中断。即STI使IF=1,允许中断;CLI使IF=0,禁止中断。l常见INTR中断有:所有外部设备中断如键盘、鼠标、打印机、显示器、声卡、CD-ROM等By LYQ中断和异常功能表 l 处理器对应的中断处理器对应的中断/异常类型
9、及功能如异常类型及功能如Page271表表7.1所示。表中列出了所示。表中列出了16位处理器位处理器808620286及及32位处理器位处理器80386Pentium 4对应的中断或对应的中断或异常类型、异常类型、功能及在实地址方式下的中断向量功能及在实地址方式下的中断向量存放的内存地址。存放的内存地址。l Intel 保留了前保留了前32个(个(00H20H)中断向量供处理器使中断向量供处理器使用,后面的用,后面的20HFFH供用户使用。供用户使用。保留的中断用于系保留的中断用于系统功能。统功能。l 对于对于80286Pentium 4处理器,异常处理器,异常16、7、9、16和和17可用于
10、实方式和保护方式,而其余异常仅适用于保可用于实方式和保护方式,而其余异常仅适用于保护方式。护方式。By LYQ中断和异常功能表对于某一个类型号而言(如080FH),为区分是INTR引脚引起的外部中断,还是内部引起的异常,在处理之前,要判断出错代码中的EXT位,如果EXT=1则执行外部中断处理程序,EXT=0执行异常处理程序。By LYQ出错代码出错代码l 对于内部异常引起的中断对于内部异常引起的中断,系统引入了异常出错系统引入了异常出错代码,出错代码在代码,出错代码在CPU响应中断或异常时随断响应中断或异常时随断点地址之后被压入堆栈保护。点地址之后被压入堆栈保护。l 异常出错代码为异常出错代码
11、为32位(位(80386Pentium 4),),只有低只有低16位有效,位有效,最低位(最低位(D0)为为EXT,为为1时表示是外部中断引起的,为时表示是外部中断引起的,为0表示内部异常表示内部异常引起的,引起的,次低位(次低位(D1)IDT为为1时表示访问时表示访问IDT表,为表,为0表示访问表示访问GDT或或LDT表,表,D2位位TI为为1表示访问表示访问GDT表,为表,为0表示访问表示访问LDT表,表,D15D3为为IDT、GDT或或LDT的索引值的索引值(同选(同选择子中的索引),择子中的索引),D31D16未用。未用。By LYQ三、实方式与保护方式下的中断三、实方式与保护方式下的
12、中断l1.术语及概念l2.实方式下中断服务程序入口地址l3.保护方式下中断服务程序入口地址*l4.保护方式与实方式中断主要区别By LYQ术语及概念术语及概念l中断类型号中断类型号l中断向量中断向量l中断向量表中断向量表l中断描述符中断描述符l中断描述符表中断描述符表By LYQ中断类型号中断类型号l中断类型号:中断类型的唯一编号。01H,05H(与IRQ0IRQ10中断号不是一个意思)l数量:256个。(包括外部中断和内部中断或异常)l编号:0255。l适用范围:8086Pentium 4(各种工作方式)By LYQ中断向量中断向量(实地址方式实地址方式)l含义:中断服务程序的入口地址(CS
13、:IP)l组成及格式:共4个字节个字节,段地址及偏移地址各两个字节。By LYQ中断向量表中断向量表l 含义含义:存放256个中断向量的内存区域。即存放中断服务程序入口地址的内存区域称为中断向量表。l 中断向量表大小中断向量表大小:1KB(256X4字节)l 中断向量表地址范围中断向量表地址范围:00000H003FFH。l 适用范围适用范围:。By LYQ中断向量组成及格式中断向量组成及格式By LYQ中断描述符中断描述符(保护方式保护方式)l 含义含义:描述某中断对应中断服务程序的入口地址信息及其属性,包括32位偏移地址和16位段选择子。P为存在位,P=1表明中断描述符在物理存储器中;DP
14、L为中断描述符特权级两位,共4级,00,01,10,11,其中00为最高级,11为最低级。l 组成及格式组成及格式:8个字节By LYQ中断描述符表中断描述符表l含义含义:存放256个中断描述符的内存区域。l中断描述符表容量中断描述符表容量:2KB。(256x8字节)l适用范围适用范围:By LYQ实方式下中断服务程序入口地址l中断类型号中断类型号n与其对应的中断向量存放起与其对应的中断向量存放起始地址之间的关系是:始地址之间的关系是:起始地址起始地址=4n;末地址末地址=4n+3即中断向量在即中断向量在4n 4n+3指示的内存指示的内存单元中单元中l示例By LYQ实地址方式下的中断服务程序
15、入口地址求法(例子)【例【例1】假设在实地】假设在实地址方式下,内存单址方式下,内存单元元00140H到到00147H中存放的内容如图中存放的内容如图所示,求所示,求51H号中号中断的中断服务程序断的中断服务程序入口地址。入口地址。解:解:By LYQ例例1求解求解(1)求中断向量存放的首地址和末地址)求中断向量存放的首地址和末地址 51H可知中断向可知中断向量存放量存放首地址为首地址为51H4=144H(左移两位方法)左移两位方法)末地址末地址=51H4+3=147H(2)从首末地址对应的从首末地址对应的4个单元找出中断向量个单元找出中断向量00144H到到00147H中内容就是中内容就是5
16、1H号中断的中断向量。号中断的中断向量。对照对照中断向量组成及格式中断向量组成及格式可知可知 段地址段地址=4540H,偏移地址偏移地址=3430H,所以中断服务程序入口地址为所以中断服务程序入口地址为 段地址段地址16+偏移地址偏移地址=45400H+3430H=48830H01010001*100=101000100By LYQ保护方式保护方式下中断服务程序入口地址l(1)通过中断类型号)通过中断类型号n从中断描述符表从中断描述符表IDT中找出中找出中断中断描述符描述符。中断描述符首地址中断描述符首地址=中断类型号码中断类型号码n8+IDT基地址基地址 从该地址开始取出从该地址开始取出8字
17、节内容就是中断描述符字节内容就是中断描述符。l(2)通过中断描述符中的选择子)通过中断描述符中的选择子第第3位位TI从从GDT或或LDT中找出或求出中找出或求出段段描述符描述符。(TI=0选中选中GDT,TI=1选中选中LDT)l(3)据段描述符提供的段基地址与中断描述符提)据段描述符提供的段基地址与中断描述符提供的偏移地址合成物理地址。供的偏移地址合成物理地址。l示例示例By LYQ保护方式下的中断服务程序入口地址求法(例子)【例【例2】已知保护方式下,】已知保护方式下,内存单元中有关单元存放内存单元中有关单元存放的内容如右图所示,的内容如右图所示,IDT的首地址为的首地址为00280000
18、H,GDT首地址为首地址为00500000H,求求20H号中断服务程序号中断服务程序入口地址。入口地址。解:解:By LYQ例例2求解求解(1)求偏移地址)求偏移地址 先找中断描述符,然后从中找出中断服务程序,偏移地址由n=20H可知,中断描述符存放在00280000H+20H8=00280100H开始的8个单元,所以中断描述符为:00 42 EE 00 00 13 20 12 H(2)求中断服务程序所在段的段基地址求中断服务程序所在段的段基地址 段选择子为:0013H=0000 0000 0001 0 011 B TI=0,段描述符在GDT中,RPL=11为普通用户程序请求,索引值 =000
19、0 0000 0001 0 B 所以中断描述符所在段描述符在GDT中的位置为:索引值8+GDT首地址=0000 0000 0001 0000B+00500000H=00500010H 因此,段描述符为:39 18 40 42 34 00 00 96 H 段基地址=39423400H(3)合成物理地址合成物理地址 服务程序入口地址=对应段的段基地址+偏移地址 =39423400H+00422012H=39845412HBy LYQ保护方式与实方式中断主要区别保护方式与实方式中断主要区别l(1)表的大小不同 中断描述符表中断描述符表2KB;中断向量表中断向量表1KB(对于实对于实地址方式,中断描述
20、符表就是中断向量表。)地址方式,中断描述符表就是中断向量表。)l(2)表的位置不同 保护方式下的中断描述符表可位于内存的保护方式下的中断描述符表可位于内存的任何任何位置位置,由中断描述符寄存器(,由中断描述符寄存器(IDTR)决定;决定;实地址方式下的中断向量表实地址方式下的中断向量表只能固定在只能固定在00000H003FFH的最低内存的最低内存1KB的区域的区域。l(3)中断服务程序存放位置不同 保护方式下的中断服务程序可以放到内存的任保护方式下的中断服务程序可以放到内存的任何区域,而何区域,而实地址方式下的中断服务程序只能实地址方式下的中断服务程序只能在存放的在存放的1MB以下的内存区域
21、以下的内存区域。By LYQ四、中断过程四、中断过程l1.中断请求l2.中断判优l3.中断响应l4.中断服务(处理)l5.中断返回By LYQ中断请求中断请求l 含义:中断源发出中断请求信号l 外部中断源主要有:(1)I/O设备,如键盘、显示器、打印机等。设备,如键盘、显示器、打印机等。(2)数据通道,如软、硬磁盘,磁带等。数据通道,如软、硬磁盘,磁带等。(3)实时钟,如外部所需的定时电路等。实时钟,如外部所需的定时电路等。(4)故障源,如掉电、存储器奇偶校错等。故障源,如掉电、存储器奇偶校错等。l 内部中断源主要包括:(1)CPU指令产生异常指令产生异常,如被如被0除除,溢出溢出,单步等。单
22、步等。(2)程序执行程序执行INT软件中断指令软件中断指令,如如INT 19H等。等。By LYQ中断判优中断判优l由于中断是随机的,可能同时出现多个中断源同时请求中断时,必须对申请中断的中断源进行优先级判别,这一阶段称为中断判优。By LYQ中断响应中断响应l中断响应过程:把从接到中断请求到中断处理之前,即从请求有效到转中断服务程序入口地址这一段时间。l可屏蔽中断的响应过程By LYQ可屏蔽中断的响应过程可屏蔽中断的响应过程l(1)处理器接到中断申请处理器接到中断申请,处理完处理完当前指令即进入响应周期。当前指令即进入响应周期。l(2)第二阶段即中断响应周期第二阶段即中断响应周期,在其间,在
23、其间CPU向外部中断控制向外部中断控制器发送器发送两个两个响应脉冲信号响应脉冲信号INTA。第一个第一个响应脉冲通知中断控响应脉冲通知中断控制器,已经响应外部中断请求,让中断控制器提供中断类型制器,已经响应外部中断请求,让中断控制器提供中断类型号。号。第二个第二个响应脉冲,响应脉冲,CPU取走中断类型号。取走中断类型号。l(3)将标志寄存器中的内容压入堆栈保护将标志寄存器中的内容压入堆栈保护,然后,然后清清IF和和TF标标志志,以,以禁止禁止INTR引脚以及陷阱和单步中断。引脚以及陷阱和单步中断。l(4)将断点地址压入堆栈将断点地址压入堆栈(CS:EIP或或CS:IP)。)。断点地址:指断点地
24、址:指中断时中断时CPU待执行的下一条指令待执行的下一条指令对应的逻辑地址。对应的逻辑地址。顺序:先压入断点地址的顺序:先压入断点地址的CS,后压入偏移地址后压入偏移地址EIP(或或IP)。)。l(5)CPU得到中断类型号码得到中断类型号码n后后,通过中断类型号与中断服务,通过中断类型号与中断服务程序入口地址的关系程序入口地址的关系找出找出该类型对应的段基地址和偏移地址,该类型对应的段基地址和偏移地址,从而转入中断服务程序入口地址。完成中断响应任务。从而转入中断服务程序入口地址。完成中断响应任务。By LYQ不可屏蔽中断或内部中断不可屏蔽中断或内部中断l对于不可屏蔽中断或内部中断(或异对于不可
25、屏蔽中断或内部中断(或异常),由于类型是确定的,因此它们的常),由于类型是确定的,因此它们的中断响应过程无需(中断响应过程无需(2)步,而()步,而(5)中)中取类型号不通过中断控制器。对于异常取类型号不通过中断控制器。对于异常在断点地址压入堆栈后,还要将引起异在断点地址压入堆栈后,还要将引起异常的出错代码压入堆栈。常的出错代码压入堆栈。By LYQ中断服务(处理)中断服务(处理)l 1保护现场保护现场实质:将重要信息压入堆栈。(PUSH)l 2开中断目的:开放所有可屏蔽中断,以允许高级中断嵌套。(STI)l 3执行中断服务程序l 4关中断目的:使用关中断指令CLI关中断以确保可靠有效地恢复现
26、场。(CLI)l 5恢复现场恢复现实质:将原来压入堆栈中的内容弹出来。恢复现场的指令是POP。在恢复现场时必须注意堆栈操作的原则:先进后出(FILO)。By LYQ中断返回中断返回l中断服务程序的最后一条指令都无一例外地使用中断返回指令(如IRET/IRETD)。l中断返回的目的:使原来在中断响应过程中的断点地址和标志寄存器中的内容,依次从堆栈中弹出,以便继续执行原来的程序。By LYQ五、外部中断源的管理五、外部中断源的管理l问题的引出:多个外部中断源同时请求中断,而CPU仅一个INTR引脚,如何处理?l解决方法:对中断控制器硬件编程实现中断管理。l中断源管理的任务:区别中断源、识别中断源优
27、先级以及处理多级中断嵌套问题。By LYQ中断优先级识别中断优先级识别l中断优先级排队:把多个中断源按轻重缓急优先处理权由高到低的顺序排列起来。l排队方法:软件排队和硬件排队。p275l在8086Pentium 4系统中,中断优先级从高到低依次为:内部异常中断(除单步)内部异常中断(除单步)INT n NMI INTR 单步中断单步中断By LYQ多级中断嵌套多级中断嵌套l 含义:在低级中断中断正在处理时高一级中断请求,则进入高级中断处理程序,处理完高级再返回低级中断处理程序。l 示意图By LYQ7.2 7.2 可编程中断控制器可编程中断控制器82598259A Al基本情况:l(1)8位可
28、编程中断控制器,又称优先位可编程中断控制器,又称优先级控制器级控制器l(2)处理)处理8级向量优先级中断级向量优先级中断l(3)具有单一)具有单一+5V供电供电l(4)8259A芯片级联组成强大的中断管芯片级联组成强大的中断管理系统(多至理系统(多至64级外部中断)。级外部中断)。l(5)优先级方式可编程)优先级方式可编程l(6)多级中断管理)多级中断管理By LYQ可编程中断控制器可编程中断控制器82598259A A一、一、内部结构及工作原理二、二、引脚信号三、三、工作方式四、四、编程方法By LYQ一、内部结构及工作原理内部结构及工作原理By LYQ数据总线缓冲器数据总线缓冲器l数据总线
29、缓冲器是一个三态、双向的数据总线缓冲器是一个三态、双向的8位位缓冲器,是缓冲器,是8259A与与CPU系统数据总线系统数据总线的接口。的接口。l数据总线缓冲器的数据总线缓冲器的主要功能主要功能有:有:(1)通过数据总线缓冲器,通过数据总线缓冲器,CPU向向8259A内部发送命令。内部发送命令。(2)CPU接收接收8259A状态信息。状态信息。(3)在中断响应周期,在中断响应周期,CPU从中获得中断从中获得中断类型号。类型号。By LYQ读读/写逻辑写逻辑l接收CPU送来的读/写控制信号、片选信号以及地址选择信号,以对内部控制逻辑编者编程以确定工作方式。它可将8259A内部的状态信息传送到数据总
30、线上,供CPU读取.By LYQ级联缓冲级联缓冲/比较器比较器l级联缓冲/比较器在级联方式的主从结构中(两个以上的8259A组成的系统),用来存放和比较系统中各8259A的从设备标志(ID)。By LYQ控制逻辑控制逻辑l 控制逻辑是控制8259A内部各部件的主要逻辑电路。l 主要功能包括:(1)根据CPU对8259A编程设定的工作方式来产生内部控制信号。(2)如果中断请求寄存器IRR有未被屏蔽的位,则控制逻辑对应于当时最高优先的中断源,向CPU发中断请求信号INT。(3)接收CPU送来的中断响应信号,并允许中断服务寄存器ISR的相应位(ISRi)置位。l(4)控制发出相应的中断类型号,通过数
31、据总线缓冲器输出到系统总线上。By LYQ中断请求寄存器中断请求寄存器IRRlIRR是一个专门用于记录外部中断源的中断申请的8位寄存器。lIRR的8个输入端分别可接8个中断源,只要有中断请求即IRR的某端(IRRi)由低电平变高电平时,则相应的IRR位置1(IRRi=1),直到中断服务寄存器相应位置1,IRR相应位才复位。By LYQ中断优先权分辨器中断优先权分辨器PR优先权分辨器PR用来确定存放在IRR中各个中断请求信号对应中断源的优先级。并总是选出当前最高优先中断源的中断申请通知控制逻辑,以便控制逻辑发送中断请求信号INT。By LYQ中断服务寄存器中断服务寄存器ISRlISR为用于记录正
32、在被CPU处理(服务)的中断级的8位寄存器。l当有中断请求并被CPU响应时,即在CPU响应中断后发来第一个中断响应脉冲时,将对应的中断服务寄存器相应位置1,直到结束中断或有中断结束命令才复位。By LYQ中断屏蔽寄存器中断屏蔽寄存器IMRlIMR是8位的用于从硬件上屏蔽中断源的寄存器。如果IMR相应位为1,则对应中断源的中断请求被屏蔽。只有相应位为0且IF=1,CPU才有可能响应可屏幕中断。By LYQ二、引脚信号引脚信号l D7D0为8位双向的数据线l INT:中断请求输出信号l INTA:中断响应输入信号l RD和WR:读/写控制信号l CS:片选信号l A0:端口选择信号(两个端口地址)
33、l IRRi:8个中断源中断请求端l SP/EN:级联控制主:=1,从=0By LYQ三、工作方式工作方式l优先级的方式l屏蔽中断源的方式l结束中断处理的方式l连接系统总线的方式l中断请求信号方式By LYQ优先级的方式优先级的方式l全嵌套方式l特殊全嵌套方式l优先级自动循环方式l优先级特殊循环方式By LYQ全嵌套方式全嵌套方式l仅允许高一级中断进入嵌套。l从高到低优先级依次为IR0IR1IR2IR3IR4IR5IR6IR7。By LYQ特殊全嵌套方式特殊全嵌套方式l允许高一级,也允许同级中断进入嵌套。l从高到低优先级依次为IR0IR1IR2IR3IR4IR5IR6IR7。By LYQ优先级
34、自动循环方式优先级自动循环方式l在这种方式下,中断源的优先级是变化的,当一个设备得到中断服务以后,它的优先级自动降为最低优先。l在初始状态下的优先级为IR0IR1.IR7,下一次优先级为IR1IR2.IR6IR7IR0,依次类推。By LYQ优先级特殊循环方式优先级特殊循环方式l与优先级自动循环方式只有一点区别:初始最优者可由程序设定,可任意指定一个初始最高优先级,以后再循环优先。By LYQ屏蔽中断源的方式屏蔽中断源的方式普通屏蔽方式:设置8259A内部中断屏蔽寄存器IMR的相应位为1(通过OCW1),即可屏蔽对应中断源的中断申请。特殊屏蔽方式:先写入特殊屏蔽命令字OCW3,然后再写屏蔽命令
35、字OCW1。使当前中断服务寄存器ISR的相应位自动复位。这就只屏蔽了当前正在处理的这级中断。By LYQ结束中断处理的方式结束中断处理的方式l自动结束方式:系统一旦进入中断服务程序,8259A就自动将当前中断服务寄存器相应位清0。(在第二个中断响应脉冲)l非自动结束方式:在中断服务程序结束,返回主程序之前发一条中断结束命令,使8259A的当前最高优先级的中断对应的ISR复位。By LYQ连接系统总线的方式连接系统总线的方式l 缓冲方式:一般在多片8259A级联系统中,8259A通过总线驱动器与系统总线相连,而不是8259A直接与系统总线相连,这就是缓冲方式。l 非缓冲方式:当系统只有一片825
36、9A或少量几片8259A时,一般将它直接与数据总线相连。这就是所谓的非缓冲方式。By LYQ中断请求信号方式中断请求信号方式l边沿触发方式:在边沿触发方式下,8259A将中断请求输入端出现的上升沿作为中断请求信号,且该信号可以一直保持为高电平。为了防止干扰,其高电平也应有一定的宽度。l电平触发方式:8259A把中断请求输入端出现的高电平作为中断请求信号。但应注意的是,当中断请求被响应后,输入端必须立即撤消高电平,以免引起再一次中断。By LYQ四、编程方法四、编程方法l一般原则:先进行初始化编程,再进行控制命令编程l8259A的初始化编程l8259A操作命令字的编程By LYQ8259A的的初
37、始化编程初始化编程l 对对8259A进行初始化编进行初始化编程就是向程就是向8259A写入写入两两到四个到四个初始化命令字初始化命令字。流程如图。流程如图。l 初始化编程任务初始化编程任务:设定中断请求信号的设定中断请求信号的有效形式。有效形式。设定设定8259A是单片还是单片还是多片级联方式。是多片级联方式。设置中断类型号。设置中断类型号。设置优先排队规则。设置优先排队规则。设定中断结束时的操设定中断结束时的操作原则。作原则。l 编程示例编程示例:By LYQ芯片初始化芯片初始化命令字命令字ICW1在写入初始化命令字后,自动启动初始化程序,除完成ICW1格式规定的功能外,隐含的功能有清除IM
38、R(8259A开放所有中断)、默认的中断优先级为IR0IR1.IR7,即自动进入全嵌套方式、清除特殊屏蔽方式、设置读IRR方式。By LYQ中断中断类型初始化类型初始化命令字命令字ICW2要写入8259A的A0=1的端口T7到T3为决定中断类型号的关键位 D2到D0根据IRi的组合编码置相应的值 如ICW2=01100101B,则IR5(低三位为101)的中断类型号为65H,同样可推算出IR0到IR4的中断类型号为60H到64H,IR6、IR7的中断类型号为66H和67H。By LYQ主/从片初始化命令字ICW3主片ICW3主要任务就是确定主片8259A的哪个中断输入引脚(IRi)接从片(IC
39、W1的SGNL位=0之后,表明有级联才需要设置ICW3)要写入8259A的A0=1的端口IRi=1,指示IRRi处接一从片例:如ICW3=01010100B=54H,则说明主片8259的IR2、IR4和IR6接了8259。在PC机中,主片ICW3=04H,即主片的IR2接一个从片 By LYQ主/从片初始化命令字ICW3从片ICW3要写入8259A的A0=1的端口ID2,ID1,ID0编码决定从片INT接主片的IRRi用三个标识符(ID2ID0)来确定从片中断请求输出端接主片的哪个输入引脚。例:如从片的ICW3=00000110B,表明从片接主片的IR6(低三位为110)。在PC机中,从片的I
40、CW3=02H,即从片接主片的IR2。By LYQ控制初始化命令字ICW4只有在ICW1的最低位IC4设置了1之后,才需要设置ICW4 要写入8259A的A0=1的端口各位含义:PM:CPU类型,0=8080/8085,1=80X86。AEOI:自动结束中断方式,AEOI=1自动中断结束方式。M/S:主从片选择,1=主片,0=从片。BUF:缓冲方式。BUF=1工作在缓冲方式。SFNM:特殊全嵌套方式。SFNM=1,特殊全嵌套方式。By LYQ8259A初始化编程实例l 系统对系统对主片主片82598259A A初始化的要求是:(初始化的要求是:(如图所示如图所示)主片的主片的IR2IR2接从片
41、的接从片的INTINT端。端。主片中断信号为主片中断信号为边沿边沿触发方式。触发方式。级联但级联但无缓冲无缓冲。起始中断起始中断类型号为类型号为0808H H(IR0)(IR0)。正常正常的中断结束,不选择特殊的全嵌套方式。的中断结束,不选择特殊的全嵌套方式。级联方式级联方式要要ICW3ICW3和和ICW4ICW4。l 对对从片从片82598259A A的要求是:的要求是:从片的从片的INTINT接主片的接主片的IR2IR2。从片起始中断类型号为从片起始中断类型号为7070H H。级联方式级联方式要要ICW3ICW3和和ICW4ICW4。By LYQ实例系统图By LYQ典型微机系统中的主/从
42、8259 1234ABCD4321DCBATitleNumberRevisionSizeA4Date:11-Sep-2004Sheet of File:F:教学WJ第二版微机书稿书稿电路图.ddb Drawn By:D011IR018D110IR119D29IR220D38IR321D47IR422D56IR523D65IR624D74IR725INT17INTA26SP/EN16CS1RD3CAS012WR2CAS113A027CAS215U18259AD011IR018D110IR119D29IR220D38IR321D47IR422D56IR523D65IR624D74IR725INT1
43、7INTA26SP/EN16CS1RD3CAS012WR2CAS113A027CAS215U28259AVCCR110KIN 0/CLK1IN 12IN 23IN 34IN 45IN 56IN 67IN 78IN 89IN 9/OE11IO 012IO 113IO 214IO 315IO 416IO 517IO 618IO 719U3GAL16V8S1A0A1A2A3A4A5A6A7A8A9M/IOCOD/INTA10A11INTRINTAIN 0/CLK1IN 12IN 23IN 34IN 45IN 56IN 67IN 78IN 89IN 9/OE11IO 012IO 113IO 214IO
44、 315IO 416IO 517IO 618IO 719U4GAL16V8A12A13A14A15D7D0数据总线主片从片地址20H,21H地址A0H,A1H实时钟 IRQ8重定向 IRQ9PCI/ISA IRQ10PCI/ISA IRQ11PS2鼠标IRQ12主硬盘 IRQ14协处理器IRQ13次硬盘 IRQ15定时器 IRQ0键盘 IRQ1级联 IRQ2串口2 IRQ3串口1 IRQ4并口2 IRQ5软盘 IRQ6并口1 IRQ7CS1CS2I1O1IORIOWS0By LYQ编程实例解(主片)l 主片主片初始化程序段初始化程序段:MOV AL,MOV AL,00010001B000100
45、01B;ICW1:;ICW1:边沿边沿,ICW4,ICW3ICW4,ICW3OUT 20H,ALOUT 20H,AL ;写入写入ICW1ICW1MOV AL,MOV AL,00001000B00001000B;ICW2:IR0;ICW2:IR0中断类型号为中断类型号为0808H HOUT 21H,ALOUT 21H,AL ;写入写入ICW2ICW2MOV AL,MOV AL,00000100B00000100B;ICW3:;ICW3:主片主片IR2IR2接从片接从片INTINTOUT OUT 2121H,ALH,AL ;写入写入ICW3ICW3MOV AL,MOV AL,00000101B00
46、000101B;ICW4:;ICW4:非缓冲非缓冲,正常中断结束正常中断结束,非特殊全嵌套方式非特殊全嵌套方式OUT OUT 2121H,ALH,AL ;写入写入ICW4ICW4By LYQ编程实例解(从片)l 从片从片初始化程序段初始化程序段:MOV AL,MOV AL,00010001B00010001B ;ICW1:;ICW1:边沿边沿,ICW4,ICW3ICW4,ICW3OUT 0A0H,ALOUT 0A0H,AL ;写入写入ICW1ICW1MOV AL,MOV AL,01110000B01110000B;ICW2:IR0;ICW2:IR0中断类型号为中断类型号为7070H HOUT
47、0A1H,ALOUT 0A1H,AL ;写入写入ICW2ICW2 MOV AL,MOV AL,00000010B00000010B;ICW3:;ICW3:从片接主片的从片接主片的IR2IR2OUT 0A1H,ALOUT 0A1H,AL ;写入写入ICW3ICW3MOV AL,MOV AL,00000001B00000001B;ICW4:;ICW4:非缓冲非缓冲,正常结束正常结束,非特殊全嵌套方式非特殊全嵌套方式OUT OUT 0 0A1H,ALA1H,AL ;写入写入ICW4ICW4By LYQ8259A操作命令字操作命令字的编程的编程l中断屏蔽命令字中断屏蔽命令字OCW1l控制中断和优先级循
48、环的操作命令字控制中断和优先级循环的操作命令字OCW2l屏蔽查询状态命令字屏蔽查询状态命令字OCW3By LYQ中断屏蔽命令字OCW1 l向中断屏蔽寄存器向中断屏蔽寄存器IMR写入屏蔽信息写入屏蔽信息 lMi=1表示对应的表示对应的IRi中断源被屏蔽,中断源被屏蔽,Mi=0则取消屏蔽(则取消屏蔽(i=0,1,2,3,4,5,6,7)。)。l要求写入要求写入8259A的的A0=1的端口的端口By LYQ控制中断和优先级循环的操作命令字OCW2 l 控制中断结束以及确定优先级循环方式控制中断结束以及确定优先级循环方式 l R:优先级循环位,优先级循环位,R=1为循环优先。为循环优先。l SL:指定
49、指定IRi级别位级别位.SL=1时时L2L0有效。有效。l L2L0:编码指定编码指定IRRiEOI=1则表示中断结束命令,则表示中断结束命令,EOI=0则不起作用。则不起作用。l 要求写入要求写入8259A的的A0=0的端口的端口,D4D3=00为为OCW2的标的标识符识符 By LYQR,SL及EOI的组合功能 By LYQ屏蔽查询状态命令字OCW3 管理特殊的屏蔽方式和查询方式并可以用该命令字管理特殊的屏蔽方式和查询方式并可以用该命令字读取读取82598259A A状态寄存器状态寄存器中的内容。中的内容。ESMM:特殊屏蔽允许,SMM:特殊屏蔽位。P:管理查询方式:当P=1时可用作查询方
50、式,P=0为非查询方式。RR=1读寄存器IRR和ISR,RR=0禁止读这两个寄存器的内容。RIS:寄存器选择位,RR=1时且RIS=0读IRR寄存器,RIS=1读ISR寄存器的内容。要写入8259A的A0=0的端口,D4D3=01为OCW3的标识位 By LYQ状态寄存器说明状态寄存器说明当当ESMM=1且且SMM=1时时:只要微处理器内部只要微处理器内部IF位为位为1,系统系统就可以响应任何可屏蔽中断请求,此时就象优先级规就可以响应任何可屏蔽中断请求,此时就象优先级规则不起作用一样,而当再一次写入则不起作用一样,而当再一次写入OCW3使使ESMM=1且且SMM=0时,系统又恢复原来的优先级方