1、第八章第八章 中断系统和中断系统和DMADMAl8.1 中断系统概述中断系统概述l8.2 中断控制器中断控制器8259A8.1 中断系统概述中断系统概述l中断、中断源中断、中断源l中断处理过程中断处理过程l中断优先级中断优先级8.1.1 中断及中断源中断及中断源l中断的概念中断的概念中断中断:CPU收到外部请求时停止当前任务,收到外部请求时停止当前任务,转而执行外设任务,完成后继续执行被打转而执行外设任务,完成后继续执行被打断的任务断的任务中断及中断源中断及中断源中断源中断源:引起中断的事件引起中断的事件断点断点:主程序被打断的位置主程序被打断的位置中断服务程序中断服务程序:中断源的响应和处理
2、函数中断源的响应和处理函数断点断点中断源中断源中断服务程序中断服务程序中断源中断源中断的用途中断的用途l响应外部事件响应外部事件:掉电,除零,报警等:掉电,除零,报警等l实时多任务调度实时多任务调度:加快响应速度:加快响应速度lCPU与外设并行处理与外设并行处理:提高:提高CPU利用率利用率l分时系统基础分时系统基础:时钟中断驱动的操作系统:时钟中断驱动的操作系统8.1.2 中断处理过程中断处理过程l中断请求中断请求l优先级判别优先级判别l中断响应中断响应l保存现场保存现场 l中断服务中断服务l恢复现场恢复现场l中断返回中断返回1.中断请求中断请求概念概念:外部设备需要:外部设备需要CPU资源
3、时,产生一个中资源时,产生一个中断信号发送到断信号发送到CPU的中断输入引脚。的中断输入引脚。原理原理:每个中断源对应一个中断请求标志位,:每个中断源对应一个中断请求标志位,由中断请求寄存器锁存。中断请求信号需要保由中断请求寄存器锁存。中断请求信号需要保持到持到CPU对其进行中断响应后才能撤销。对其进行中断响应后才能撤销。2.优先级判别优先级判别多个中断源同时发起中断请求时,多个中断源同时发起中断请求时,CPU需要需要对多个中断源的优先级进行判断,响应对多个中断源的优先级进行判断,响应最紧最紧急急的中断请求。的中断请求。中断源的优先级需要根据中断源的紧迫性、中断源的优先级需要根据中断源的紧迫性
4、、重要性以及外设处理速度等进行综合考虑重要性以及外设处理速度等进行综合考虑不可屏蔽中断发生,优先响应不可屏蔽中断。不可屏蔽中断发生,优先响应不可屏蔽中断。3.中断响应中断响应l对于内部中断,对于内部中断,CPU通过判断中断源自动跳通过判断中断源自动跳转到相应的转到相应的中断服务程序入口地址中断服务程序入口地址,执行中,执行中断服务子程序。断服务子程序。l对于外部中断,对于外部中断,CPU判断标志位判断标志位IF,若,若CPU允许响应外部中断(允许响应外部中断(IF=1),向发出中断请),向发出中断请求的外设返回一个求的外设返回一个中断应答信号中断应答信号,否则,否则CPU不响应该中断请求。不响
5、应该中断请求。4.保存现场保存现场lCPU响应中断,首先需要响应中断,首先需要禁止禁止CPU响应中响应中断信号断信号,并保存中断返回地址以及其它可,并保存中断返回地址以及其它可能被破坏的寄存器能被破坏的寄存器l8086/8088 CPU的基本中断现场保护需要的基本中断现场保护需要将将CS寄存器和寄存器和IP寄存器寄存器压入堆栈压入堆栈5.执行中断执行中断lCPU通过通过中断号中断号确定进入哪个中断处理确定进入哪个中断处理l进入中断处理程序,进入中断处理程序,可以允许可以允许CPU响应其响应其它中断它中断l8086/8088处理器通过装入处理器通过装入CS和和IP寄存器寄存器实现中断服务程序跳转
6、实现中断服务程序跳转6.恢复现场恢复现场lCPU关闭中断响应关闭中断响应 l将保存在堆栈中的所有寄存器内容弹出,将保存在堆栈中的所有寄存器内容弹出,恢复到中断前的寄存器原值恢复到中断前的寄存器原值7.返回返回l8086/8088处理器通过处理器通过IRET指令指令从中断状态从中断状态返回。返回。lIRET指令将自动恢复先前保存的指令将自动恢复先前保存的IP和和CS值值以及标志寄存器以及标志寄存器FR或或EFR的值,从而跳转到的值,从而跳转到主程序断点地址。主程序断点地址。l返回之后,返回之后,CPU自动打开中断自动打开中断允许响应其它允许响应其它中断请求。中断请求。8.1.3 中断的优先级中断
7、的优先级l原因原因:中断处理的重要程度和时延要求不同:中断处理的重要程度和时延要求不同l含义含义:按照中断源的重要程度为每个中断源分:按照中断源的重要程度为每个中断源分配不同的优先级,并以优先级大小进行排序,配不同的优先级,并以优先级大小进行排序,确定多个中断源请求时对不同中断源的服务次确定多个中断源请求时对不同中断源的服务次序,称之为序,称之为中断优先级中断优先级。l工作原理:工作原理:多个中断源同时向多个中断源同时向CPU请求中断时,请求中断时,选择当前选择当前优先级最高优先级最高的中断进行处理。的中断进行处理。l规则规则:优先级可以是固定的,也可以动态调整:优先级可以是固定的,也可以动态
8、调整8.2 中断控制器中断控制器8259A l 8259A的主要功能的主要功能l 8259A的结构及引脚功能的结构及引脚功能l 8259A的工作方式的工作方式l 8259A的初始化命令字的初始化命令字l 8259A的初始化编程的初始化编程1.8259A的主要功能的主要功能l中断控制器的功能:中断控制器的功能:在多个中端源的系统中,在多个中端源的系统中,接收外部中断请求并判断,选择优先级最高接收外部中断请求并判断,选择优先级最高的外部中断请求,向的外部中断请求,向CPU发起中断请求信号。发起中断请求信号。l使用中断控制器的原因使用中断控制器的原因:CPU的中断管脚太少(的中断管脚太少(8086/
9、8088两根中断管脚:两根中断管脚:INTR和和NMI););中断控制方式比较单一(屏蔽、优先级管理、嵌中断控制方式比较单一(屏蔽、优先级管理、嵌套等)套等)1.8259A的主要功能的主要功能l每片每片8259A可管理可管理8级级优先权中断源,通过级联,优先权中断源,通过级联,最多可管理最多可管理64级级优先权的中断源。优先权的中断源。l对任何一级中断源都可单独进行屏蔽。对任何一级中断源都可单独进行屏蔽。l向向CPU提供可编程的标识码(中断号),为不能提供可编程的标识码(中断号),为不能提供中断号的外设提供中断管理。提供中断号的外设提供中断管理。l具有五种中断优先权管理方式:完全嵌套方式、自具
10、有五种中断优先权管理方式:完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询动循环方式、特殊循环方式、特殊屏蔽方式和查询方式方式l可编程,提高中断优先管理的灵活性。可编程,提高中断优先管理的灵活性。2.8259A外部结构外部结构 V C C A 0 I N T A I R 7 I R 6 I R 5 I R 4 I R 3 I R 2 I R 1 I R 0 I N T S P/E N C A S 2 C S WR R D D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 C A S 0 C A S 1 G N D 1 8 2 5 9 A 2 8 2 2 7 3 2 6
11、 4 2 5 5 2 4 6 2 3 7 2 2 8 2 1 9 2 0 1 0 1 9 1 1 1 8 1 2 1 7 1 3 1 6 1 4 1 5 8259A8259A的内部结构的内部结构 8259A8259A的内部结构框图的内部结构框图控 制 逻 辑数据总线缓冲器读/写控制电路级联缓冲/比较器中 断服 务寄存器(ISR)优先权判 决电 路中断请求寄存器(IRR)中断屏蔽寄存器(IMR)IR0IR1IR2IR3IR4IR5IR6IR7D7D0RDWRCS0ACAS0CAS1CAS2EN/SPINTAINT 其内部各组成模块有如下功能:其内部各组成模块有如下功能:(1 1)中断请求寄存器中
12、断请求寄存器IRRIRR 8259A 8259A有有8 8条外部中断请求输入信号线条外部中断请求输入信号线IRIR0 0-IRIR7 7,每一条请求线上有一个相应的触发器来保每一条请求线上有一个相应的触发器来保存请求信号,当存请求信号,当第第i i个个IRIR端有中断请求端有中断请求时,时,IRRIRR中的中的相应位置相应位置“1”1”;当中断请求响应时,;当中断请求响应时,IRRIRR中的相应位置中的相应位置“0”0”。(2)中断屏蔽寄存器)中断屏蔽寄存器IMR IMR(Interrupt Mask Register)用来存用来存放屏蔽位信息,放屏蔽位信息,IMR的的每一位可以禁止每一位可以
13、禁止IRR中对应位的中断请求输入信号进入中对应位的中断请求输入信号进入。如果。如果屏蔽优先权级别较高的中断请求输入时,屏蔽优先权级别较高的中断请求输入时,不会影响到优先级较低的中断请求输入。不会影响到优先级较低的中断请求输入。(3)优先权判决电路)优先权判决电路 它在中断响应期间,根据控制逻辑规定的它在中断响应期间,根据控制逻辑规定的优先权级别和中断屏蔽寄存器优先权级别和中断屏蔽寄存器IMR的内容,的内容,把中断请求寄存器把中断请求寄存器IRR中允许中断的优先权中允许中断的优先权最最高的中断请求位送入中断服务寄存器高的中断请求位送入中断服务寄存器ISR。(4)中断服务寄存器中断服务寄存器ISR
14、ISR ISR ISR存放存放当前当前正在进行服务的所有中正在进行服务的所有中断。断。ISRISR中相应位的置位是由中相应位的置位是由优先权判决优先权判决电路电路根据根据IRRIRR中各请求位的优先权级别和中各请求位的优先权级别和IMRIMR中屏蔽位的状态,将中断的最高优先中屏蔽位的状态,将中断的最高优先级请求位选通到级请求位选通到ISRISR中。中。(5)控制逻辑控制逻辑 当有未被屏蔽的高级别的中断请求时,当有未被屏蔽的高级别的中断请求时,通过控制逻辑输出高电平的通过控制逻辑输出高电平的INT信号,向信号,向CPU申请中断。申请中断。当当CPU允许中断时,发出中断响应信号允许中断时,发出中断
15、响应信号INTA。在中断响应期间,它允许。在中断响应期间,它允许ISR的相应的相应位置位,并发送相应的位置位,并发送相应的中断向量中断向量,通过数据,通过数据总线缓冲器输出到总线上。总线缓冲器输出到总线上。(6)数据总线缓冲器数据总线缓冲器 这是这是8 8位双向三态缓冲器,用作位双向三态缓冲器,用作8259A8259A与数据总线与数据总线的接口,传输命令控制字、状态字和中断向量。的接口,传输命令控制字、状态字和中断向量。(7 7)读)读/写控制电路写控制电路 该部件接收来自该部件接收来自CPUCPU的读的读/写命令,实现对写命令,实现对8259A8259A的的读读/写操作。写操作。(8 8)级
16、联缓冲器)级联缓冲器/比较器比较器 它们实现它们实现8259A8259A芯片之间的级联,使得中断源可以芯片之间的级联,使得中断源可以由由8 8级扩展至级扩展至6464级。级。3.8259A3.8259A的主要工作方式的主要工作方式(1)(1)中断触发方式中断触发方式 按照引入中断请求的方式,按照引入中断请求的方式,8259A8259A有下列几种工作方式:有下列几种工作方式:11边沿触发方式边沿触发方式l8259A8259A将中断请求输入端出现的上升沿,作为中断请求将中断请求输入端出现的上升沿,作为中断请求信号,上升沿后信号,上升沿后 相应引脚,可以一直保持高电平。相应引脚,可以一直保持高电平。
17、22电平触发方式电平触发方式l8259A8259A将中断请求输入端出现的高电平作为中断请求将中断请求输入端出现的高电平作为中断请求信号,在这种方式下,必须注意:中断响应之后,高信号,在这种方式下,必须注意:中断响应之后,高电平必须及时撤除,否则,在电平必须及时撤除,否则,在CPUCPU响应中断,开中断响应中断,开中断之后,会引起第二次不应该有的中断。之后,会引起第二次不应该有的中断。(2)(2)系统总线的连接方式系统总线的连接方式l当当8259A8259A以级联方式用在一个大的系统下时,就以级联方式用在一个大的系统下时,就要求对数据总线进行驱动缓冲。要求对数据总线进行驱动缓冲。系统总线的连接系
18、统总线的连接方式方式就是用来设定系统总线与就是用来设定系统总线与8259A8259A数据总线之数据总线之间是否需要进行缓冲。间是否需要进行缓冲。11非缓冲方式非缓冲方式 22缓冲方式缓冲方式(3)(3)中断源的屏蔽方式中断源的屏蔽方式11普通屏蔽方式普通屏蔽方式l8259A8259A的每个中断请求输入,都要受到屏蔽寄的每个中断请求输入,都要受到屏蔽寄存器中相应位的控制。若相应位为存器中相应位的控制。若相应位为“1”1”,则,则中断请求不能送中断请求不能送CPUCPU。屏蔽是通过对屏蔽寄存。屏蔽是通过对屏蔽寄存器器IMRIMR的编程,来加以设置和改变的。的编程,来加以设置和改变的。22特殊屏蔽方
19、式特殊屏蔽方式l有些场合下,临时改变中断优先级顺序,有些场合下,临时改变中断优先级顺序,允许级别低的事件中断级别高的事件,允许级别低的事件中断级别高的事件,引入了对中断的特殊屏蔽方式。引入了对中断的特殊屏蔽方式。l需要编程设置特殊屏蔽方式需要编程设置特殊屏蔽方式(4)(4)优先权的管理方式优先权的管理方式1 1 普通全嵌套方式普通全嵌套方式l这是这是8259A8259A默认的优先权设置方式,在全默认的优先权设置方式,在全嵌套方式下,嵌套方式下,8259A8259A所管理的所管理的8 8级中断优级中断优先权是固定不变的,其中先权是固定不变的,其中IRIR0 0的中断优先的中断优先级最高,级最高,
20、IRIR7 7的中断优先级最低。的中断优先级最低。22特殊全嵌套方式特殊全嵌套方式l特殊全嵌套方式与特殊全嵌套方式与全嵌套方式基本相同全嵌套方式基本相同,所不,所不同的是,当同的是,当CPUCPU处理某一级中断时,如果有处理某一级中断时,如果有同级同级中断请求中断请求,那么,那么CPUCPU也会作出响应,从而形成了也会作出响应,从而形成了对对同一级中断的特殊嵌套。同一级中断的特殊嵌套。l特殊全嵌套方式通常应用在有特殊全嵌套方式通常应用在有8259A8259A级连级连的系统的系统中。中。33优先级自动循环方式优先级自动循环方式l即一个中断源的中断请求被响应之后,其即一个中断源的中断请求被响应之后
21、,其优先优先级自动降为最低级自动降为最低。l系统启动时,系统启动时,8 8级中断优先级默认为级中断优先级默认为IR0IR7IR0IR7,这时,刚好这时,刚好IR4IR4发出了中断请求,发出了中断请求,CPUCPU响应之后,响应之后,若若8259A8259A工作在优先级自动循环方式下,则中工作在优先级自动循环方式下,则中断优先级自动变为断优先级自动变为IR5IR5、IR6IR6、IR7IR7、IR0IR0、IR1IR1、IR2IR2、IR3IR3、IR4IR4。44优先级特殊循环方式优先级特殊循环方式l优先级特殊循环方式与自动循环方式相比,优先级特殊循环方式与自动循环方式相比,只有一点不同,即只
22、有一点不同,即初始化的优先级是由程初始化的优先级是由程序控制的序控制的,而不是默认的,而不是默认的IR0IR7IR0IR7。(5)(5)结束中断处理的方式结束中断处理的方式l分为分为自动结束方式(自动结束方式(AEOIAEOI)和和非自动结束方非自动结束方式式(EOI)(EOI)。l非自动结束方式又可进一步分为非自动结束方式又可进一步分为一般的中断一般的中断结束方式结束方式和和特殊的中断结束方式特殊的中断结束方式。11中断自动结束方式中断自动结束方式(AEOI)(AEOI)l这种方式仅适用于只有单片这种方式仅适用于只有单片8259A8259A的场合,的场合,在这种方式下,系统一旦响应中断,那么
23、在这种方式下,系统一旦响应中断,那么CPUCPU在发第二个在发第二个INTAINTA脉冲时,就会使中断响脉冲时,就会使中断响应寄存器应寄存器ISRISR中相应位复位,中相应位复位,CPUCPU可以可以再次再次响应任何级别的中断请求。响应任何级别的中断请求。22一般的中断结束方式一般的中断结束方式l一般的中断结束方式适用在全嵌套的情一般的中断结束方式适用在全嵌套的情况下,当况下,当CPUCPU用输出指令向用输出指令向8259A8259A发一般发一般中断中断结束命令时,中断中断结束命令时,8259A8259A才会使中断才会使中断响应寄存器响应寄存器ISRISR中优先级别最高的位复位。中优先级别最高
24、的位复位。33特殊的中断结束方式特殊的中断结束方式l在循环优先级模式下,系统无法确定哪一级在循环优先级模式下,系统无法确定哪一级中断为最后响应和处理的中断,也就是说,中断为最后响应和处理的中断,也就是说,CPUCPU无法确定当前所处理的是哪级中断,这时无法确定当前所处理的是哪级中断,这时就要采用特殊的中断结束方式。就要采用特殊的中断结束方式。l特殊的中断结束方式是指在特殊的中断结束方式是指在CPUCPU结束中断处理结束中断处理之后,向之后,向8259A8259A发送一个特殊的中断结束命令,发送一个特殊的中断结束命令,这个特殊的中断结束命令,这个特殊的中断结束命令,明确指出了中断明确指出了中断响
25、应寄存器响应寄存器ISRISR中需要复位的位。中需要复位的位。若中断控制器若中断控制器8259A工作在工作在优先级自动循环方式优先级自动循环方式下,下,引脚引脚IR3、IR4、IR6、IR7同时发出了中断请求,请写同时发出了中断请求,请写出在整个执行过程中优先级队列的变化情况。出在整个执行过程中优先级队列的变化情况。时刻时刻0:初始化:初始化优先级队列为优先级队列为IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR7时刻时刻1:IR3被响应执行后被响应执行后优先级队列变为:优先级队列变为:时刻时刻2:IR4被响应执行后被响应执行后优先级队列变为:优先级队列变为:时刻时刻3:IR6被响
26、应执行后被响应执行后优先级队列变为:优先级队列变为:时刻时刻4:IR7被响应执行后被响应执行后优先级队列变为:优先级队列变为:4.8259A4.8259A的初始化命令字的初始化命令字l初始化编程初始化编程:指系统在上电或复位后对可编程器:指系统在上电或复位后对可编程器件进行控制字设定的一段程序。件进行控制字设定的一段程序。l初始化命令字初始化命令字:一般在系统复位后的初始化编程:一般在系统复位后的初始化编程中设置,用于确定中设置,用于确定8259A8259A的基本工作方式,设置的基本工作方式,设置以后一般保持不变。以后一般保持不变。l初始化命令寄存器组包括初始化命令寄存器组包括4 4个寄存器:
27、个寄存器:ICW1-ICW4ICW1-ICW4l由于由于8259A8259A只有一条地址线只有一条地址线A A0 0,所以它只能有两个所以它只能有两个端口地址,而端口地址,而8259A8259A有有7 7个命令字,每个命令字要个命令字,每个命令字要写入相应的寄存器。写入相应的寄存器。为此,采取以下几点措施:为此,采取以下几点措施:1 1)以端口地址区分以端口地址区分 2 2)把命令字中的某些位作为特征码来区分把命令字中的某些位作为特征码来区分 3 3)以命令字的写入顺序来区分以命令字的写入顺序来区分l在在PC/XTPC/XT中,两个端口地址分别是:中,两个端口地址分别是:奇地址奇地址(A A0
28、 0=1,=1,大地址)和大地址)和偶地址偶地址(A A0 0=0,=0,小地址)。小地址)。(1 1)8259A8259A的初始化控制字的初始化控制字 初始化控制字初始化控制字ICW(Initialization Control ICW(Initialization Control Word)Word)是在计算机启动的过程中设定完成的,计算机启是在计算机启动的过程中设定完成的,计算机启动起来后,动起来后,8259A8259A就按初始设定的状态工作。就按初始设定的状态工作。8259A8259A有四个初始化控制字有四个初始化控制字ICWICWl l、ICWICW2 2、ICWICW3 3和和IC
29、WICW4 4,由于由于8259A8259A只有一根地址线,因此对各个控制字只有一根地址线,因此对各个控制字的操作是按照一定的顺序并结合某些数据位来进行寻的操作是按照一定的顺序并结合某些数据位来进行寻址设置的址设置的。(2)2)各初始化控制字的功能各初始化控制字的功能1ICW1ICW1 1的控制字格式如下图所示。的控制字格式如下图所示。ICW1ICW1的格式的格式LTIM ADI SNGL IC41A5A6A70A0D7D6D5D4D3D2D1D0 1:需要ICW4(8086模式下总为1)0:不需要ICW4 1:单片8259 0:多片级联 1:间隔为4 0:间隔为8 1:电平触发 0:边沿触发
30、8080(85)系统中断向量地址A A0 0=0=0、D D4 4=1=1:是:是ICWICW1 1的标志的标志。只要。只要CPUCPU向向8259A8259A发送一条发送一条A A0 0=0=0和和D D4 4=1=1的命令时,这条命令就被译码为对的命令时,这条命令就被译码为对ICWICW1 1进行进行操作。它启动操作。它启动8259A8259A的初始化过程,产生下列动作:清的初始化过程,产生下列动作:清除除IMRIMR,把最低优先级分配给把最低优先级分配给IRIR7 7,把最高优先级分配把最高优先级分配给给IRIR0 0,将从设备标志置成将从设备标志置成7 7,清除特殊屏蔽方式,设,清除特
31、殊屏蔽方式,设置读置读IRRIRR方式。方式。D D7 7-D-D5 5:在在8080(85)8080(85)系统中为中断向量地址位,在系统中为中断向量地址位,在8086/80888086/8088系统中不用。系统中不用。LTIMLTIM(D D3 3):中断输入寄存器的触发方式。:中断输入寄存器的触发方式。0 0为边沿触发,中断为边沿触发,中断输入信号上升沿时被识别并送入输入信号上升沿时被识别并送入IRRIRR。1 1为电平触发,中断输入为电平触发,中断输入信号为高电平即可进入信号为高电平即可进入IRRIRR。这两种触发方式都要求高电平的请这两种触发方式都要求高电平的请求信号在置位求信号在置
32、位IRRIRR相应位后一直保持,直到中断被响应为止。相应位后一直保持,直到中断被响应为止。ADIADI(D D2 2):设定:设定8080(85)8080(85)方式下中断向量地址间隔字节数,方式下中断向量地址间隔字节数,1 1为为4 4字节,字节,0 0为为8 8字节。在字节。在8086/80888086/8088方式下此位不用方式下此位不用SNGL(DSNGL(D1 1):单个器件单个器件/级联方式指示。级联方式指示。1 1表示系统中只有一个表示系统中只有一个8259A8259A,0 0表示级联方式。表示级联方式。ICIC4 4(D(D0 0):该位用于设定有无:该位用于设定有无ICWIC
33、W4 4。1 1表示使用表示使用ICWICW4 4,在在8086/80888086/8088方式下,必须使用方式下,必须使用ICWICW4 4。0 0表示不用表示不用ICWICW4 4,此时此时ICWICW4 4所所选择的全部功能位都置成选择的全部功能位都置成0 0。2ICW2ICW2 2在在8086/80888086/8088方式下,方式下,用于提供用于提供8 8个中断源的中个中断源的中断向量码断向量码。ICWICW2 2的高的高5 5位位T T7 7-T-T3 3在初始化编程时设置,初在初始化编程时设置,初始化低始化低3 3位由位由8259A8259A用中断源的编号填写。用中断源的编号填写
34、。ICWICW2 2的命令的命令字格式如下图所示。字格式如下图所示。T3T4T5T6T71A0D7D6D5D4D3D2D1D0中断向量码高5位(由初始化程序设定)8259自动将中断请求输入引脚的序号IRn填入ICW2ICW2的格式的格式 I C WI C W2 2利 用利 用 A A0 0=1=1 和 初 始 化 的 次 序 来 寻 址和 初 始 化 的 次 序 来 寻 址。在。在8086/80888086/8088系统中,初始化控制字系统中,初始化控制字ICWICW2 2是比较重要的,是比较重要的,它确定了它确定了8259A8259A外接中断源的起始中断向量码,并实现外接中断源的起始中断向量
35、码,并实现了每个中断源中断向量码的自动生成。下面举例说明了每个中断源中断向量码的自动生成。下面举例说明中断向量码的形成情况。中断向量码的形成情况。在初始化编程时要保持在初始化编程时要保持ICWICW2 2的低三位为的低三位为“0”0”,如,如设定设定ICWICW2 2为为“11111000”(F8H)11111000”(F8H)。如果某一中断源如果某一中断源IRnIRn有中断请求,将有中断请求,将n n填入填入ICWICW2 2的低的低3 3位,与高位,与高5 5位共同组成位共同组成该中断源的中断向量码,如下表所示。该中断源的中断向量码,如下表所示。中断向量码的形成情况表中断向量码的形成情况表
36、ICW2 D7D6D5D4D3D2D1D0中断向量码中断向量码中断源中断源11111000F8H 11111000F8HIR011111001F9HIR111111010FAHIR211111011FBHIR311111100FCHIR411111101FDHIR511111110FEHIR611111111FFHIR7 3ICW33ICW3的功能:的功能:确定主片和从片的确定主片和从片的级连级连状状态,即确定态,即确定主片的级连位主片的级连位和和从片的编码从片的编码 ICWICW3 3用于用于8259A8259A的级联,若系统中的级联,若系统中只有只有一片一片8259A8259A,则则不用不
37、用ICWICW3 3;若若8259A8259A工作于工作于级联方式,级联方式,则则需要用需要用ICWICW3 3设置设置8259A8259A的状态的状态。ICW3ICW3的格式的格式S3S2S1S0S4S5S6S71A0D7D6D5D4D3D2D1D0主控ICW3 1:相应的IRn端接有从属8259A 0:不接82590ID2ID1ID000001A0D7D6D5D4D3D2D1D0 3 位编码为从属8259A接入主控8259A相应IRn端的编号 n从属ICW3l用两片用两片8259A管理中断,从片管理中断,从片INT与主片的与主片的IR2连接,主从片的连接,主从片的ICW3分别为(分别为()
38、。)。A02H和和04H B04H和和02H C02H和和02H D04H和和04H答案答案:B4ICW4ICW4 4只有在只有在ICWICW1 1的的ICIC4 4=1=1时才使用,其格式如下图所示。时才使用,其格式如下图所示。主要功能:选择主要功能:选择CPUCPU系统,确定中断结束方式;规定是系统,确定中断结束方式;规定是主片还是从片,确定是否是缓冲方式主片还是从片,确定是否是缓冲方式.ICW4格式 BUF M/S AEOIPMSFNM0001A0D7D6D5D4D3D2D1D0 1:8086(88)模式 0:8080(85)模式 1:自动EOI方式 0:非自动EOI方式 0X:非缓冲方
39、式 10:缓冲方式/从属片 11:缓冲方式/主控片 1:特殊全嵌套方式 0:一般嵌套方式5.8259A5.8259A的初始化编程的初始化编程 例例1 IBMPC1 IBMPC机中,机中,只有一片只有一片8259A8259A,可接受外部,可接受外部8 8级中断。在级中断。在I/OI/O地址中,分配地址中,分配8259A8259A的端口地的端口地址为址为20H20H和和21H21H,初始化为:,初始化为:边沿触发边沿触发、非缓冲非缓冲连接连接、中断结束采用、中断结束采用非自动结束方式非自动结束方式、中断优、中断优先级采用先级采用普通全嵌套方式普通全嵌套方式,8 8级中断源的中断级中断源的中断类型码
40、分别为类型码分别为F8HFFHF8HFFH,写出,写出82598259初始化程序。初始化程序。MOV ALMOV AL,000100010 00 01111B B OUT 20H OUT 20H,AL AL ;写入;写入ICW1ICW1 MOV AL MOV AL,11111000B11111000B OUT 21H OUT 21H,AL AL ;写入;写入ICW2ICW2 MOV AL MOV AL,0000000 00 00 00 01B1B OUT 21H OUT 21H,AL AL ;写入;写入ICW4ICW48259A8259A芯片之间的级联芯片之间的级联例例2 假设假设8259A的
41、的IR7引脚和引脚和IR2引脚下面引脚下面分别连接了从片,主片端口地址为分别连接了从片,主片端口地址为20H和和21H,初始化为:电平触发、缓冲连接、,初始化为:电平触发、缓冲连接、采用自动中断结束方式、中断优先级采用采用自动中断结束方式、中断优先级采用全嵌套方式,全嵌套方式,8级中断源的中断类型码分别级中断源的中断类型码分别为为80H87H,写出主片,写出主片8259A的初始化程的初始化程序。序。MOV AL,00011001BOUT 20H,AL ;写入;写入ICW1 MOV AL,10000000BOUT 21H,AL ;写入;写入ICW2 MOV AL,10000100BOUT 21H,AL ;写入;写入ICW3 MOV AL,00001111BOUT 21H,AL ;写入;写入ICW4