第8章微型计算机中断系统_第1页
第8章微型计算机中断系统_第2页
第8章微型计算机中断系统_第3页
第8章微型计算机中断系统_第4页
第8章微型计算机中断系统_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章微型计算机中断系统

本章内容

★8.1中断概述

★8.28086的中断处理过程★

8.3中断优先级和中断嵌套

★8.4可编程中断控制器8259A

8.5PC机中断程序设计8.1中断概述

一、中断的引入

中断与生活场景的比较正在看书电话铃响接电话继续看书执行程序事件发生事件处理继续执行程序中断处理中断请求及响应实际场景计算机中断返回中断的定义

CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。

为何计算机中要引入中断?

#

避免了CPU不断检测外设状态的过程,提高了CPU的利率。

#

实现对特殊事件的实时响应。如多任务操作系统中:缺页中断设备中断各类异常实时钟,。。。等二、

中断的基本概念1、中断源引起CPU中断的事件。例如:▼外设——请求输入输出数据,报告故障等▼

事件——掉电、硬件故障、软件错误、非法操作、定时时间到等中断源分为:外部中断、内部中断▼内部中断:由程序预先安排的中断指令(INTn)

引起,或由运算出错(如:除法出错,溢出)引起。▼外部中断:CPU以外的设备或协处理器向CPU发出的中断。

内部中断外部中断除法错中断--类型号0单步中断-----类型号1断点中断-----类型号3溢出中断-------类型号4软件中断-----类型号n(0-255)非屏蔽中断--类型号2可屏蔽中断--类型号由PIC提供256个中断源

8086/8088系统的中断源

▼内部中断

除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。

★单步中断:类型号1,TF=1时产生(当前指令需执行完)★

断点中断:类型号3,这是一个软件中断,即INT3指令。★溢出中断:类型号4,这是一个软件中断,即INTO指令。★软件中断:即INTn指令,类型号n(0-255)

▼外部中断★非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。★可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。★8086/8088的外部中断信号:INTR、NMI

INTR——可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。NMI——非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。2、中断子程序

CPU响应中断源的申请后执行的一段程序通常称为中断子程序,这个过程可以理解称为CPU暂停正在执行的程序转向中断源为其服务的过程,该过程如同各个政府用提前做预案来应付突发事件一样。3、中断类型号

为了区别不同的中断服务子程序,在微型计算机中给每个中断服务子程序都编有一个唯一编号,即中断类型号。用户自己编写的中断服务子程序也需要一个唯一的中断类型号。有了中断类型号,当用户要调用某个中断服务子程序时,只需给出相应的中断类型号即可。例如Int10H,调用10H号中断服务程序。4、中断向量及中断向量表

每一个中断都对应了一个中断服务子程序,CPU要执行中断服务子程序就必须知道该子程序的地址,即该子程序第一条指令的地址,这个地址也就是中断服务子程序的入口地址,称为该中断服务程序的中断向量或中断矢量。中断矢量表分为三部分:(1)专用中断:类型0~类型4,共有5种类型。专用中断的中断服务程序的入口地址由系统负责装入,用户不能随意修改。(2)备用中断:类型5~类型3FH,这是Intel公司为软、硬件开发保留的中断类型,一般不允许用户改作其他用途,是为系统预留的中断。

(3)用户中断:类型40H~类型FFH,为用户可用中断,其中断服务程序的入口地址由用户程序负责装入。

8086CPU可管理256种中断。每种中断都指定一个中断矢量号(类型号),每一种中断矢量号都与一个中断源相对应。中断服务程序的入口地址存放在内存储器的中断矢量表内。8086以中断矢量号为索引号,从中断矢量表中取得中断服务程序的入口地址。每个中断矢量(入口地址)占4个字节,高2字节放段地址,低2字节放偏移地址。存放中断矢量的地址=类型号nx4,

[4n+1,4n]IP[4n+3,4n+2]CS

即可转入中断服务程序。

空单元中断矢量表区003FFH

00000H

(=1K)40H×4=100H15

00

00

20

┇2000:(CS:

┇ΩΩ

假设cpu从外设读得的中断类型码N=40H,CPU将N×4=100H.100H就是中断矢量表的首地址。假定在100H

为首地址的4个单元中,低地址的2个字节中已放入1500H,高地址的2个字节中已放入2000H.这就是说中断服务程序入口地址,它的代码段段地址=2000H,它的偏移地址=1500H。CPU把低地址一个字取出送入指令指针IP,把高地址一个字取出送入代码段寄存器CS,程序就转入逻辑地址为2000:1500H的入口去执行中断服务程序。中断服务程序从这里开始!1500IP)返回目录

8.28086的中断处理过程

一、中断请求外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚;中断请求信号:边沿请求,电平请求 例如,NMI为边沿请求,INTR为电平请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出:

(I/O接口)

→PIC→CPU二、中断响应对非屏蔽中断(即从NMI脚来的申请),CPU执行完当前指令后若无总线请求即予以响应;对可屏蔽中断(从INTR脚来的申请),CPU必须在以下四个条件同时被满足时才能响应:

无总线请求。系统中若有其他总线设备,例如别的微处理器或DMA控制器,它们必须没有发出总线请求信号;

无非屏蔽中断请求;

③ CPU允许中断。即CPU内部的中断允许寄存器置1。对8086/8088来说,IF=1;

④ CPU执行完现行指令。CPU在响应中断后,在进入中断处理之前还要自动完成3项工作。

将CS、IP以及标志寄存器的内容压入堆栈;

关闭中断;

转入中断服务程序进行中断处理。这就是将中断服务程序的段地址送CS,偏移地址送IP。三、中断处理1.保护现场CPU响应中断时自动保护了CS、IP和F1ag寄存器。在中断服务程序中会用到另一些寄存器,为了保证中断返回后主程序能继续正确执行,必须把这些寄存器内容压入堆栈保护起来,称为保护现场。2.如允许中断嵌套需打开中断CPU在响应中断时已自动关闭中断,不允许其他的中断来打断它。如果允许比它优先权更高的中断来打断,则需要用STI指令打开中断。若没有更高级别的中断,则无此必要。3.中断服务执行中断服务程序。若在中断处理过程中曾开中断,则此时要关中断。关中断的目的是让恢复现场的工作顺利进行而不被中断。4.恢复现场在中断返回前要把保护现场时压入堆栈的寄存器内容恢复。恢复现场用POP指令。需要注意的是,弹出的顺序应与压入的顺序相反。5.中断返回执行中断返回指令IRETIRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进入中断服务程序时中断返回后返回目录8.3中断优先级和中断嵌套一、中断优先级概述多个中断源产生中断,CPU首先为谁服务?

——中断优先级排队问题。中断优先级控制要处理两种情况:对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理;对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断——即允许中断嵌套。中断优先级的控制方法硬件判优——链式判优、并行判优(中断向量法)软件判优——顺序查询中断请求,先查询的先服务(即先查询的优先级别高)通常将中断判优与中断源识别合并在一起进行处理。80x86系统中,这项任务由PIC和CPU共同完成。二、用软件查询方法确定中断优先权

采用软件查询中断方式时,中断优先权由查询顺序决定,先查询的中断源具有最高的优先权。INTR中断入口保护现场,读中断位状态是A设备?设备A的中断服务程序是B设备?设备B的中断服务程序是C设备?设备C的中断服务程序YYYNN错误出口N恢复现场、中断返回优点:电路简单。软件查询的顺序就是中断优先权的顺序,不需要专门的优先权排队电路,可以直接修改软件查询顺序来修改中断优先权,不必更改硬件。缺点:当中断源个数较多时,由逐位检测查询到转入相应的中断服务程序所耗费的时间较长,中断响应速度慢,服务效率低。三、硬件优先权排队电路

硬件优先权排队电路又称菊花环式优先权排队电路。它是利用外设连接在排队电路的物理位置来决定其中断优先权的,排在最前面的优先权最高,排在最后面的优先权最低。INTAinCPUINTAINTR外设1外设2外设接口1菊花链逻辑电路外设接口2外设3外设接口3≥1菊花链逻辑电路菊花链逻辑电路┇IREQIREQIREQ中断确认链式判优电路原理图--菊花链法

INTAinINTAin中断确认中断确认菊花链逻辑电路原理说明:⑴

当任一外设申请中断后,中断请求IREQ送到CPU的INTR端,CPU发出INTA中断响应。⑵当前一组外设没有发出中断申请时,INTA会沿着菊花链往后传。当某一级外设发出了中断申请时,此级的逻辑电路就阻塞了INTA的通路。⑶此级的外设接口收到INTA后,向总线发出中断类型号,撤销中断请求IREQ,从而CPU转入相应中断服务程序

。菊花链逻辑电路INTAinIREQINTR&=1

≥1INTAoutDB三态门中断向量码E外设接口中断确认菊花链逻辑电路⑵当前一组外设没有发出中断申请时,INTA会沿着菊花链往后传。当某一级外设发出了中断申请时,此级的逻辑电路就阻塞了INTA的通路。⑶此级的外设接口收到INTA后,向总线发出中断类型号,撤销中断请IREQ,从而CPU转入相应中断服务程序

四、中断嵌套优先权高的中断首先得到响应,并且可以中断正在被响应处理的优先权低的中断,这种一个中断服务程序在执行过程中又被另一个中断服务程序中断的现象称为中断嵌套五、中断响应时序CPU对可屏蔽中断请求的响应过程要执行两个连续的中断响应

总线周期,每个周期包括4个时钟周期T1~T4。第一个周期通知外设CPU接收到中断请求信号,准备响应中断,外设要把对应的中断类型号准备好;第二个周期CPU接受外设的中断类型号。第一个INTA中断响应周期:T1状态开始,地址/数据总线置于浮空状态;LOCKT2,T3状态:发出中断响应信号INTA给8259A,通知外设准备好中断类型号;在最大模式时,LOCK有效,禁止其它总线控制器的总线请求。第二个INTA中断响应周期:

8259A在T2,T3状态,将一个字节的中断类型N送到数据总线低8位,CPU读入后,N×4得到中断矢量表地址,继而找到服务程序的入口地址。返回目录8.4可编程中断控制器8259A由于CPU只有一个可屏蔽中断引脚,一次只能连接一个中断源,当需要同时连接多个中断源时就需要一个中断控制器。中断控制器的功能就是连接多个中断源,当有多个中断源提出中断请求时,进行优先级判别,决定响应哪一个中断源,并将选出的中断类型号送CPU进行处理。可编程中断控制器Intel8259A是微型计算机中常用的一种中断控制器芯片,其主要功能:记录各级中断源的中断请求。判优,确定是否响应中断请求和响应哪一级中断请求。响应中断时向CPU传送中断类型号。NMIINTR中断逻辑软件中断指令溢出中断除法错单步中断非屏蔽中断请求中断控制器8259APIC8086/8088CPU内部逻辑断点中断可屏蔽中断请求n430128~15一、功能和引脚

▼主要功能:

据有8级优先级控制,通过级联可扩展到64级优先级控制。

每一级中断可由程序单独屏蔽或允许。

根据中断源向80x86提供不同中断类型码

可编程设置不同工作方式◆A0:选择8259A的2个端口,输入,连低位地址线。◆INTA:CPU给8259A的中断响应信号,输入。8259A要求2个负脉冲的中断响应信号,第一个是CPU响应中断的信号,8259A响应第二个INTA,在T3、T4把1个字节的中断类型号n送到DB的低8位。◆IR7~IR0:外设中断请求,输入,可以是电平触发或边沿触发。◆INT:向CPU发出的中断请求信号,输出,与CPU的INTR相连。◆CAS2~CAS0:双向级联信号。8259A作主片时,为输出;作从片时为输入。与SP/EN配合实现级联。◆SP/EN:编程/双向使能缓冲。作输入时,SP/EN=1,为主片;SP/EN=0,为从片。作输出时,启动8259A到CPU之间的数据总线驱动器。二、8259A的内部结构(PR)☆中断请求寄存器IRR

IRR是一个8位寄存器,保存从IR0~IR7来的中断请求信号,某位=1,表示Iri有中断请求。中断请求被响应时,IRR相应位复位。☆中断服务寄存器ISR

保存所有正在服务的中断源,某位=1表示对应的IRi中断正在被服务。CPU发出第一个INTA时,相应位置‘1’,一直保持到该级中断处理结束。☆中断屏蔽寄存器IMR存放中断屏蔽字。编程使某位=1,表示IRR寄存器对应位的中断请求被屏蔽;编程使某位=0,则允许IRR寄存器对应位的中断请求进入优先级

判别器。

☆中断优先权判别电路

PR

确定保存在IRR中的中断申请的优先级别,送出最高优先级中断请求到ISR。当出现多重中断时,PR判定是否允许所出现的中断去打断正在处理的中断,让优先级更高的中断优先处理。☆控制电路

向8259A内部部件发出控制信号,并向CPU发出中断请求信号INT,接受CPU的中断响应信号INTA.8259A接收到CPU的第一个INTA后,使ISRi置‘1’,IRRi置‘0’,当第二个INTA到来,控制8259A送出中断类型号。如果方式控制字ICW4的AEOI=1,则第二个INTA结束时,ISRi清零。☆读写控制电路

PC/XT机中A9~

A1译码产生CS,8259A只取2个端口编程使用:20H(A0=0),21H(A0=1).8088的A0连接8259A的A0。而8086的A1连接8259A的A0,8086的A0=0,这样对于CPU来说,A0=0,A1可以为“1”也可为“0”,保证了CPU读写始终是偶地址,用偶地址(即低8位数据线)传送数据。

。对8259A来说,A0可以为“1”也可为“0”,给8259A分配2个端口地址,一个偶地址,一个奇地址,符合8259A编程要求。二、8259A的内部结构(PR)☆级联缓冲/比较器(1)缓冲方式:在缓冲方式下,SP/EN端与总线驱动器的允许端相连,控制总线驱动器的数据方向。SP/EN作为输出端。当EN=0时,数据方向是:8259A➝

CPU,当EN=1时,数据方向是:8259A←

CPU.(2)非缓冲方式:在非缓冲方式下,8259A直接与数据总线相连,SP/EN作为输入端,在级连时控制8259A作为主片还是从片,SP=1,表示8259A为主片,SP=0,表示8259A为从片。(3)比较器:级联时,主片的CAS2~

CAS0作为输出,从片的CAS2~

CAS0作为输入,二者相连。关于主片级联地址与从片级联地址的比较,在“8259A的中断级联”一节讲述。ISR及ISR编码

PRIR1111①假设中断请求IR0,IR1,IR7送入中断请求寄存器,IRR相应位被置‘1’,申请中断。②假如已对屏蔽寄存器编程,使D7=1,其余位=0。这样连接IR7的与门被关闭。00000001③IR7的中断申请被屏蔽掉。而IR0,IR1的中断申请被激活,送到中断优先级判别器PR.④优先级判别器PR找出最高优先级的中断申请IR0,将其中断级转换成三位码(111)送到比较器和中断服务寄存器ISR.⑤如果这时没有中断服务正在执行,优先级控制器就向CPU发出中断请求信号INT。⑥假如这时正在执行IR3中断服务程序。由于IR0优先级编码>IR3优先级编码,

允许IR0的中断打断正在处理的IR3中断而得到服务。⑦中断请求被响应,CPU发出第一个INTA时,ISR0被置‘1’,IRR0被清‘0’。111100ISR01⑧如果是多重中断,ISR多位被置‘1’。ISR310INT8259A内部寄存器的寻址方法CS#RD#WR#A0D4D3读写操作010000写OCW2写OCW3写ICW1写ICW2,ICW3,ICW4,OCW1(顺序写入)00101x1xx00101xx读出IRR、ISR读出IMR需要CS、A0、RD、WR和D4、D3的配合内部寄存器的访问方法如下表:

三、8259A的中断管理方式1.8259A的编程结构初始化命令字写入寄存器ICW1~ICW4,一经设定,在系统运行中不再改变;操作命令字写入寄存器OCW1~OCW3,由应用程序设定。用设定以上寄存器来管理8259A的中断方式。2.优先级设置方式(1)完全嵌套方式

8259A初始化后,自动进入完全嵌套方式:

优先级分配固定级别,顺序从高到低为IR0~IR7。

◆某一中断正被处理时,只有更高优先级的事件可以打断当前正在处理的中断过程而被服务。

▲用初始化命令字ICW4的(D4)SNFM=0,将8259A置于完全嵌套方式.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应C.假定此处发生中断,并获得服务(接IR3)一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.A.INT从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7去CPU(主IR4连从INT)(2)特殊全嵌套方式什么是特殊全嵌套方式昵?为什么要设置特殊全嵌套方式昵?请看!☀一般全嵌套方式:级联时,从片8259A上有中断申请进入并正在处理时,同一从片上又进入更高优先级中断请求,但对主片8259A来说是同级中断申请。所以不能得到服务☀当主片设置为特殊全嵌套方式时,就能对来自从片的同级中断申请开放,从而实现了同级中断请求的特殊嵌套。

☀设置方法:初始化主片的ICW4的(D4)SFNM=1,AEOI=0

☀特殊全嵌套仅用于多个8259A级连时的主片8259A,而不能用于从属8259A或单片8259A系统。

注意!D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定此处发生中断,并获得服务(接IR3)一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7(主IR4连从INT)去CPU(三)优先级自动循环方式◆

加电后8259A的默认优先级顺序从高到低为IR0~IR7◆中断源轮流处于最高优先级,即自动中断优先级循环◆

某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级

设置方法:操作命令字OCW2的R、SL=10۞

优先级自动循环方式,适合于多中断源优先级相等的场合IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低级最高级最高级最低级ISR内容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服务结束以前0101000001000000IR4的服务结束以后ISRi(四)优先级特殊循环方式

◆优先级排列顺序可编程改变◆最低优先级由程序规定,如设定IR3位最低,那末,比它低一级的IR4为最高,其他顺序依次类推。◆设置方法:操作命令字OCW2的R、SL=11IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低级最高级最高级最低级优先级IR7IR6IR5IR4IR3IR2IR1IR0默认优先级优先级可编程改变3.中断结束方式当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。CPU向8259A发出中断结束命令(EOI命令)使ISRi=0。三种EOI命令■普通EOI方式(NSEOI)■

特殊EOI方式(SEOI)——(指定EOI

)■

自动EOI(AEOI)

■普通EOI方式(NSEOI)由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。用于普通全嵌套方式。必须放在

IRET之前设置方法:OCW2的EOI位=1,即R、SL、EOI=001,往偶地址送OCW2操作命令字。PC/XT机:发EOI指令为:

MOVAL,20HMOV20H,AL;8259A端口:20H,21■

特殊EOI方式(SEOI)

由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。

用于特殊屏蔽方式设置方法:OCW2的R、SL、EOI=011,L2~

L1是ISR的位号。

自动EOI(AEOI)◆

在第2个INTA结束时,由8259A使

ISRi自动复位。◆因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式。◆设置方法:初始化ICW4的AEOI=1。

中断服务程序┇向从PIC发EOI命令读从PIC的ISR全0?向主PIC发EOI命令YIRET恢复现场N特殊全嵌套方式下的EOI处理:只有当从PIC的中断全部处理完后,才能向主PIC发EOI命令特殊全嵌套中断服务程序结束时,先向从片发一个中断结束EOI,清除ISR位;然后读出ISR,检查它是否为0,若为0,则向主片发一个EOI命令,清除与从片对应的ISR位,如果从片ISR≠0,则不向主片发EOI命令。4.中断源屏蔽方式

普通屏蔽方式

IMR屏蔽字决定了允许或禁止某位IRi所对应的中断:IMi=1禁止,

IMi=0允许。

☆设置方法:往奇地址送OCW1操作命令字。例屏蔽2、3、5、6位的中断请求,pc/xt的8259A端口地址为20H,21H。

MOVAL,01101100BMOV21H,AL特殊屏蔽方式:提供了允许较低优先级的中断能够得到响应的特殊手段。原理:假定当前正在处理IR3,先进入特殊屏蔽方式,然后设置IM3=1。这时,除IR3外的所有中断请求均能得到响应。设置方法:设置操作命令字OCW3的ESMM、SMM=11特殊屏蔽方式中只能用SEOI命令结束中断。特殊屏蔽例:

┇;IR4中断处理程序

CLI;关中断

MOVAL,68H;OCW3:01101000 OUT0C0H,AL;设置特殊屏蔽方式

INAL,0C1H ORAL,10H;屏蔽IR4 OUT0C1H,AL STI;开中断┇;IR7请求,响应,返回

CLI;为设命令字

INAL,0C1H;读出屏蔽字

ANDAL,0EFH;清除IMR4 OUT0C1H,AL MOVAL,48H;OCW3:01001000 OUT0C0H,AL;取消特殊屏蔽

STI

;继续IR4中断服务

MOVAL,20H;OCW2:00100000(EOI) OUT0C0H,AL

IRET

5.中断请求引入方式边沿触发IRi出现上升沿表示有中断请求

,可以一直保持高电平电平触发IRi出现高电平表示有中断请求,在第1个INTA结束前,IRi必须保持高电平,中断响应后必须撤出高电平。设置方法:初始化ICW1的LTIM,:LTIM=1,电平触发

LTIM=0,边沿触发查询方式(请阅读四、2(3)8259A中断查询方式编程方法)

四、8259A的编程方法CS#RD#WR#A0D4D3读写操作010000写OCW2写OCW3写ICW1写ICW2,ICW3,ICW4,OCW1(顺序写入)00101x1xx00101xx读出IRR、ISR读出IMR8259A内部寄存器的寻址方法(需要CS、A0、RD、WR和D4、D3的配合)

8259A的控制命令分为初始化命令字

ICW1~ICW4操作命令字

OCW1~OCW38259A的初始化顺序

8259的初始化流程

写ICW1写ICW2级连?写ICW3需ICW4?写ICW4NNYY1.初始化命令字注意次序不可颠倒!初始化8259A必须从ICW1开始写ICW1意味着重新初始化8259A写入ICW1后,8259A的状态如下:清除ISR和IMR(全0);将中断优先级设成初始状态:IR0最高,IR7最低;设定为一般屏蔽方式;采用非自动中断结束方式;状态读出逻辑预置为读IRR。(1)ICW1-芯片控制初始化命令字ICW1——初始化字■

LTIM:触发方式=1高电平触发=0上升沿触发■

SNGL:级连控制=1单片=0级连■

IC4:ICW4控制=1需要设置ICW4=0不需要设置ICW4(默认ICW4为全0)A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x

x 1LTIM xSNGL IC4■

偶地址

标致位:区别OCW1,OCW2的设置 (2)ICW2——中断向量码A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7T6 T5 T4 T3

0

0

0奇地址▼T7~T3:中断向量码的高5位,由用户设定▼最低3位为‘0’,是中断类型号基值,对应IR0;000~111分别对应IR0~IR7,由8259A根据中断源的序号自动填入

例如:若ICW2命令字为48H,则IR0的中断向量码为48H,IR7的中断向量码为4FH,等等。

1对应IRi线上连接了从片Si=

0对应IRi线上未接从片

◆ID2~ID0

标识码,说明本从片连接到主片的哪个IR引脚上。000~111分别对应IR0~IR7。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID0■

主片

(3)ICW3—级联主片/从片初始化命令字

ICW3在级联时(ICW1的SNGL=0)才设置

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2

S1S0■

从片奇地址奇地址◆

CPU发出第一个中断响应INTA时,主片通过级联线CAS2-CAS0送出被允许中断的从片标识码ID2~

ID0,各从片与自己ICW3中的ID2~

ID0比较,二者一致的从片在第二个INTA到来后,将自己的中断向量码送上数据总线。

例.8259A主片的IR0、IR7端连两个从片8259A,编写初始化命令字。

初始化命令字如下:

主片:

MOVAL,81HMOV21H,AL;主片端口地址20H,21H

从片1:

MOVAL,00HMOVA1H,AL;从片1端口地址A0H,A1H

从片2:

MOVAL,07HMOVB1H,AL;从片2端口地址B0H,B1HAEOI:自动EOI1自动EOI方式0非自动EOI方式BUF:缓冲方式

M/S:主/从缓冲选择BUFM/S11缓冲方式/主PIC10缓冲方式/从PIC0x非缓冲方式(4)ICW4——中断结束方式字

A0 D7 D6 D5D4 D3 D2 D1 D0

1 00 0SFNM BUF M/SAEOI 1

8088/8086配置SFNM:全嵌套方式1特殊全嵌套方式0一般全嵌套方式写ICW1写ICW2SNGL=1?写ICW3ICW4=1?写ICW4YNNYA0=0(20H)

A0=1(21H)

A0=1(21H)A0=

1(21H)例.IBMPC/XT系统中,ROMBIOS中8259A的初始化程序为:

MOVAL,13H;单片,上升沿触发

OUT20H,ALMOVAL,08H;中段类型号基值08HOUT21H,ALMOVAL,09H;缓冲,正常结束

OUT21H,AL8259A经过ICW的初始化置后,进入操作命令状态,CPU写入操作命令字OCW。8259的初始化流程

2.操作命令字OCW

OCW用于设置8259的工作状态在初始化后写入OCW的写入顺序可任意写入地址要求:OCW1必须写入奇地址端口(A0=1)OCW2,OCW3必须写入偶地址端口(A0=0)

(1)OCW1——中断屏蔽字

1中断请求线IRi被屏蔽(不允许中断)M=0允许该IRi中断A0=1时,OCW1将写入IMR寄存器。A0=1时,读OCW1可读出设置的IMR内容。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7M6 M5 M4 M3

M2

M1

M0(2)OCW2——中断结束和优先级循环

◆R(ROTATE):R=1--优先级自动循环;R=0----固定优先级◆

SL(SPECIFICLEVEL):指定优先级(SL=1----L2~

L0有效)◆EOI(ENDOFINTERRRUPT):EOI=1-----结束中断命令(ISRi=0)RSLEOI001非指定EOI命令(NSEOI),全嵌套方式011指定EOI命令(SEOI),全嵌套方式,按L2~L0编码复位ISR101NSEOI命令,优先级自动循环100自动EOI,设置优先级自动循环000自动EOI,取消优先级自动循环(固定优先级)111SEOI命令,按L2~L0编码循环优先级(L2~L0设为最低优先级)110按L2~L0编码,循环优先级(L2~L0设为最低优先级)

A0 D7 D6 D5 D4 D3 D2 D1 D0

0 RSL EOI 0 0

L2

L1

L0

优先级编码000--IR0001--IR1

110--IR6111--IR7标志位(3)OCW3——屏蔽方式和读出控制字

ESMM:允许使能特殊屏蔽方式

SMM:特殊屏蔽方式

ESMMSMM功能

11特殊屏蔽方式置位

10特殊屏蔽方式复位

0x非特殊屏蔽方式A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0ESMMSMM 0 1 P RR RISRR:读寄存器RIS:ISR/IRR选择RRRIS功能11读ISR10读IRR0x无效P(Polling):p=1查询方式p=0非查询方式

标志位读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。OCW3(续)--中断查询方式编程方法①系统关中断②CPU先写一个D2=1的OCW3③再对同一地址读入,即可得到如下查询字节:

IRxxxxR2R1R0

IR=1表示有中断请求,中断请求号为R2~

R0,

R2~

R0组成的代码表示当前中断申请的最高优先级。此查询步骤可反复执行,以响应多个同时发生的断。④

CPU转入R2~

R0所指示的某一中断服务程序中断查询方式实际用在多于64级中断的8259A级联系统中五、8259A的中断级联单片8259A可支持8个中断源;采用多片8259A级连,可最多支持64个中断源。n片8259A可支持7n+1个中断源;级连时只能有一片8259A为主片,其余的均为从属片;涉及到的8259A引脚包括:CAS0-CAS2SP/ENIRiINT

1.非缓冲方式,主片的SP=1,从片的SP=0;

2.CPU发出的中断响应INTA,连各主/从片的INTA;

3.各从片的INT连主片的IRi

4.主片的CAS2~CAS0(输出)连各从片的CAS2~CAS0(输入)。INTR☛8259A级联工作过程描述INTR1.2#从片IRi端收到多个中断申请,经判优后,从片发出中断请求INT到主片的IR6端。1#从片经判优后,发出中断请求INT到主片的IR3端。跳到‥4.被选通的从片收到第一个INTA后,置从ISRi=1,清IRRi=0。2.主片判优后,确定当前最高优先级,通过主片INT向CPU发出中断申请INTR,CPU响应中断回送2个INTA。3.主片收到第一个INTA,置主ISR6=1,清IRR6=0,检测ICW3,判定中断请求是否来自从片,若是,将从片的级联地址从CAS2~CAS0输出到所有从片,只有级联地址与CAS2~CAS0相同的从片,才能选通。5.第2个INTA到达后,被选通的从片将中断类型号送到数据总线,供CPU读取。

(☛8259A级联工作过程描述)1.2#从片IRi端收到多个中断申请,经判优后,从片发出中断请求INT到主片的IR6端。2.主片判优后,确定当前最高优先级,通过主片INT向CPU发出中断申请INTR,CPU响应中断回送2个INTA。3.主片收到第一个INTA,置主ISR6=1,清IRR6=0,检测ICW3,判定中断请求是否来自从片,若是,将从片的级联地址从CAS2~CAS0输出到所有从片,只有级联地址与CAS2~CAS0相同的从片,才能选通。4.被选通的从片收到第一个INTA后,置从ISRi=1,清IRRi=0。5.第2个INTA到达后,被选通的从片将中断类型号送到数据总线,供CPU读取。主片设置为特殊全嵌套,允许相同级别的中断申请通过。例1.一个8259A主片连2个从片,从片经主片的IR3,IR6引脚接入,则系统中优先级排列顺序为(设主片为特殊全嵌套方式):

主片:IR0,IR1,IR2从片2#:IR0~

IR7主片:IR4,IR5

从片1#:IR0~

IR7

主片:IR7

允许的中断源数=主片(8-2)+从片1#(8)+从片2#(8)=22个例2.按以下要求初始化8259A:接口地址为20H和21H;中断为上升沿触发;单片8259A;不写ICW4;与IR0-IR3对应的中断向量码为08H-0BH;IR4-IR7不使用。根据要求,各初始化参数及工作参数如下:ICW1=00010010B=12HICW2=08H;中断向量码OCW1=11110000B=0F0H;中断屏蔽字初始化程序如下:INIT8259A:

MOV DX,20H ;A0=0,写ICW1 MOV AL,12H ;上升沿触发,单片,不写ICW4 OUTDX,AL MOV DX,21H ;A0=1,写ICW2,OCW1 MOV AL,08H ;ICW2 OUT DX,AL MOV AL,0F0H ;OCW1:屏蔽IR4-IR7 OUT DX,AL(1)将2个中断入口地址写入中断向量表

MOVAX,1000H;送入段地址

MOVDS,AXMOVDX,2000H;送入偏移地址

MOVAL,31H;中断类型号31HMOVAH,25HINT21HMOVAX,2000HMOVDS,AXMOVDX,3600HMOVAL,44H;中断类型号44HMOVAH,25HINT21H

图中断向量表例3.两片8259A级联,从片的INT连主片的IR3。主片的IR1引入中断请求,类型号为31H,中断服务程序入口地址1000H:2000H。从片的IR4引入中断请求,

类型号为44H,中断服务程序入口地址2000H:3600H。┇0020001000360020000C4H000C6H00110H00112HIPCS类型号31H(主片)入口地址IPCS类型号44H(从片)入口地址(2)主片8259A初始化编程:端口地址FFC8H,FFC9H。各初始化参数及工作参数如下:

;ICW1=11H,ICW2=30H,ICW3=08H,ICW4=11H,OCW1=0F5H.MOVAL,11H;初始化ICW1,级联,边沿触发,设ICW4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论