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

CAS0 CAS1 CAS3
级 联 缓 冲 比较器
内 部 总 线
中 断 服 务 寄 存 器
ISR
优 先 权 处 理 器
中 断 请 求 寄 存 器
IRR
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
SP / EN
中断屏蔽寄存器 IMR
IRR,IMR
1.中断请求寄存器IRR
IRi(i=07)上有中断请求时,IRR相应位置1。
AEOI=1自动中断结束方式AEOI=0:非自动中断结束(EOI) µ PM=1:86系列CPU; µ PM=0:非86系列CPU 。
普通全嵌套方式
普通全嵌套方式也叫固定优先权方式。 优先权从IR0到IR7依次递降。 级别高的中断请求可以中断级别低的中断服 务子程序。 一中断被响应的过程中,自动屏蔽同级和更 低级别的中断。
8259A在PC机中的I/O端口地址
PC机中相当有两片8259A级联,一个主片,一个从片。
ICW1 ICW2 ICW3 ICW4 OCW1 OCW2 OCW3
主片 0x20 从片 0xa0
0x21 0xa1
0x21 0xa1
0x21 0xa1
0x21 0xa1
0x20 0xa0
0x20 0xa0
主片初始化程序
0
X
ESMM SMM 0
1
P
RR
RIS
A0=0 , D4=0 , D3=1 是OCW3的特征。 ESMM=1,SMM=0: 设置特殊屏蔽
ESMM=1,SMM=1: 清除特殊屏蔽
P=1:发查询命令 ; P=0:不发查询命令 RR=1,RIS=0: 读IRR寄存器 RR=1,RIS=1: 读ISR寄存器
8259A中断控制器和8253计数器

8259A中断控制器和8253计数器·定时器实验浏览次数:1129次悬赏分:50|解决时间:2008-12-2 12:17 |提问者:liushang8811程序1参考流程图1:开始2:关中断3:初始化8253(设定定时器0和1的工作方式及技术初值)4:使用INT 21H的35H号功能获取0AH号中断向量并保存。
5:使用INT 21H的25H号功能设置0AH号中断的新中断向量。
6:设置IMR寄读器及允许IRQ2中断。
7:开中断8:循环等待中断。
程序2参考流程图:编写中断服务程序。
要求主机每响应一次IRQ2的中断时,就执行一次终端服务子程序。
中断服务子程序的核心就是显示字符串“THIS IS A 8259A INTERRUPT”1:开始2:显示字符串3:技术结束?终端结束并返回4:关中断5: 使用INT 21H的25H号功能恢复原OAH号中断的中断向量6: 恢复IMR寄存器的原值7: 开中断8: 结束,返回DOS用汇编,急用,跪谢1.MOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXMOV AL,00110110B ;假设定时器0设为方式3OUT 43H,ALMOV AL,XXH ;OUT 40H,ALMOV AL,XXHOUT 40H,AL ;定时器0初值MOV AL,01110110B ;假设定时器1设为方式3OUT 43H,ALMOV AL,XXH ;OUT 41H,ALMOV AL,XXHOUT 41H,AL ;定时器1初值MOV AH,35HMOV AL,0AHINT 21HPUSH ES ;保存原向量PUSH BXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,XXH ;新中断向量段地址MOV DX,XXH ;新中断向量偏移量MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSIN AL,21HMOV SAV_IR,AL ;保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间)OR AL,00000100B ;开IR2OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXWAIT1:JMP WAIT12.MESSAGE DB 'THIS IS A 8259A INTERRUPT$'SAV_IR DB 0MOV AH,9MOV DX,SEG MESSAGEMOV DS,DXMOV DX,OFFSET MESSAGEINT 21HMOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,ESMOV DX,BX ;原0AH中断向量值MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSMOV AL,SAV_IR ;读回8259原设置值OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXIRET回答者:shinesnow_wy|三级| 2008-11-12 18:51 呵呵~~我们是同行啊~~~也许是对的吧~~顶~~顶~~~顶~~~~MOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXMOV AL,00110110B ;假设定时器0设为方式3OUT 43H,ALMOV AL,XXH ;OUT 40H,ALMOV AL,XXHOUT 40H,AL ;定时器0初值MOV AL,01110110B ;假设定时器1设为方式3 OUT 43H,ALMOV AL,XXH ;OUT 41H,ALMOV AL,XXHOUT 41H,AL ;定时器1初值MOV AH,35HMOV AL,0AHINT 21HPUSH ES ;保存原向量PUSH BXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,XXH ;新中断向量段地址MOV DX,XXH ;新中断向量偏移量MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSIN AL,21HMOV SAV_IR,AL ;保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间)OR AL,00000100B ;开IR2OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXWAIT1:JMP WAIT12.MESSAGE DB 'THIS IS A 8259A INTERRUPT$'SAV_IR DB 0MOV AH,9MOV DX,SEG MESSAGEMOV DS,DXMOV DX,OFFSET MESSAGEINT 21HMOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,ESMOV DX,BX ;原0AH中断向量值MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSMOV AL,SAV_IR ;读回8259原设置值OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXIRET。
可编程中断控制器8259详解

可编程中断控制器8259详解
中断系统的使用极大的提高了CPU的利用率。
中断是一种机制,这种机制实现的过程可分为请求-->响应-->服务-->返回。
可编程中断控制器8259A是Intel公司专为80x86 CPU控制外部中断而设计开发的芯片。
其内部结构及引脚图如下:
中断申请的过程可大概描述为:中断源发生-----》(此中断未被屏蔽)中断优先级判定(高于正在服务的中断则打断)------》向cpu发送中断请求-----》cpu 回复一个inta告诉中断申请成功------》中断服务寄存器相应的位置位,表示这个中断正在被执行---------》当收到cpu的第二个inta的时候,中断逻辑单元把中断号发给cpu,cpu调用相应的中断程序执行------》发送中断号时,将ISR的相应位复位(利用完了就复位,主要是把中断号拿出来。
如果不复位,则每次逻辑电路放在总线上的中断号就会出错),表示执行完毕。
其内部涉及的关键型寄存器有:中断请求寄存器,中断屏蔽寄存器,中断优先级判别寄存器,中断服务寄存器。
对于8259A的各个模块的官方描述如下:。
第六章1-3讲 可编程中断控制器

天津工业大学
SP/EN:双功能信号。 缓冲方式时, EN 为输出,控制缓冲 器传输的方向。 EN=0,表示允许8259A通过缓冲器输出。 EN=1,表示CPU写8259A。 非缓冲方式时,SP为输入,表示主从 关系, SP=1,表示主片, SP=0,表示从片。
天津工业大学
④控制逻辑:
向CPU发送中断请求信号,处理CPU的中断应 答信号INTA,直接连接到CPU的中断请求输入端 INTR. INT:8259A向CPU发出的中断请求信号,高电平 有效。 INTA:CPU响应中断时,约两个总线周期,称为 响应周期。用来对8259A的中断申请进行响应, 在中断响应周期中产生两个INTA信号, 第一个用来使中断请求服务寄存器相应位置1, 第二个INTA信号,8259A向CPU提供中断矢量号。
天津工业大学
⑦ 中断服务寄存器(ISR) 记录优选后的中断申请标志(正在执行 的中断服务程序其ISR相应位置1),后来 的中断申请在优先排队电路的控制下与当 前正在执行的中断过程进行优先级排队, 以决定是否实现中断嵌套。
天津工业大学
⑧中断屏蔽寄存器IMR 由CPU设置,以决定某个中断源是否被屏 蔽,当该寄存器中某一位置“1”时,表示 禁止该中断请求进入系统。通过IMR寄存器 可实现对各级中断的有选择的屏蔽。
• ♣SP/EN在非缓冲方式下,规定(SP=1)时该
8259A是主片, (SP=0)时该8259A是从片。
天津工业大学
第一个周期 T1 T2 T3 T4
CLK ALE LOCK INTA D0~D7 SP/EN CAS0~CAS2 IR0~IR7 INT
第二个周期 T1 T2 T3 T4
CPU响应周期
天津工业大学
6.5.3 8259A的优先级管理方式
8259中断控制器实验报告

竭诚为您提供优质文档/双击可除8259中断控制器实验报告篇一:8259中断控制器实验报告8259中断控制器实验报告作者:一实验目的1,掌握8259A的工作原理。
2,掌握编写中断服务程序方法。
3,掌握初始化中断向量的方法。
二,实验设备cpu挂箱,8086cpu模块图1-cpu挂箱三,实验内容用电平开关的输出作为中断源,每个开关对应于一个中断源。
在中断服务程序中,通过74Ls273输出一个数据,以点亮于中断源对应位置的LeD灯。
四,实验原理1.本实验用到三部分电路:电平开关电路、简单I/o扩展电路和8259中断控制器电路;2.8086的中断系统是向量中断方式,内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量,不同的中断向量对应不同的偏移地址;3.中断类型由8359通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序;4.中断类型的高5位由8359寄存器Icw2决定,低3位由中断源IRx的编码自动填充,IRo~IR7的编码分别是000,001,010,011,100,101,110,111。
五,实验步骤1,实验接线cs0-cs8259cs1-cs27300~07-LeD1~LeD8K1~K8-IR0~IR7InT-InT(8086cpu板)InTA-InTA(8086cpu板)2,编译调试程序3,全速运行程度,拨动某一电平开关,观察LeD的亮灭情况。
六,实验结果全速运行程序,由上向下拨动开关时,相应位置的LeD灯点亮,其余LeD灯全灭七,源代码Assumecs:coDecoDesegmenTpubLIcoRg100hsTART:moVcx,0sTART1:cLImoVDx,04A0hmoVAx,13houTDx,AxmoVDx,04A2hmoVAx,80h ouTDx,AxmoVAx,01houTDx,AxmoVAx,00houTDx,AxnopmoVAx,0moVDs,AxmoVADDDI,2DI,200hmoVDs:[DI],100h;初始化中断向量表moVAx,oFFseTint0moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint1moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint2moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint3moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint4moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint5moVDs:[DI],AxADDDI,2moVAx,oFFseTint6moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint7moVDs:[DI],AxADDDI,2;上述程序为芯片8259的初始化程序moVDs:[DI],100hmAIn:moVAx,0sTIwAITIng:cmpAx,0hJewAITIngmoVDx,04b0houTDx,AxmoVcx,0 DeLAY:LoopDeLAYJmpsTART1Int0:cLInopmoVAx,oFehIReTInt1:cLInopmoVAx,oFDhIReTInt2:cLInopmoVAx,oFbhIReTInt3:cLInopmoVAx,oF7hIReTInt4:cLInopmoVAx,oeFhIReTInt5:cLInopmoVAx,oDFhIReTInt6:cLInopmoVAx,obFhIReTInt7:cLInopmoVAx,o7FhIReT篇二:8259中断控制实验报告深圳大学实验报告班级:实验时间:实验报告提交时间:教务处制篇三:8259中断控制实验报告实验六8259中断控制一、实验目的1.学习8086/8088cpu中断系统的知识。
a可编程中断控制器实验

4.2 8259A可编程中断控制器实验4.2.1 实验目的1、掌握8259A可编程中断控制器的工作原理、编程方法以及如何通过8259A实现对外部可屏蔽硬件中断的管理;熟悉实验中涉及到的中断屏蔽寄存器IMR和中断服务寄存器ISR等的使用方法.2、进一步掌握中断服务程序的设计方法.4.2.2 实验预习要求1、复习教材中有关中断的内容,了解微型计算机中外部可屏蔽硬件中断的处理过程.2、复习8259A的工作原理以及如何通过8259A实现对外部可屏蔽硬件中断源的管理.3、复习中断服务程序的编写方法.4、预先编写好实验程序.4.2.3 实验原理微型计算机中用户可使用的外部硬件中断只有可屏蔽中断,由8259A可编程中断控制器管理.中断控制器用于接收外部的中断请求信号,可实现中断优先级判定、提供中断类型号、屏蔽中断输入等功能.在IBM PC/XT机中,仅使用了1片8259A芯片,能实现对外部8个硬件可屏蔽中断源的中断管理(其中IRQ2系统保留),有关8259A在IBM PC/XT机中的使用情况见教材“7.5 可编程中断控制器Intel 8259A”一节.IBM PC/A T(80286CPU)及其以后机型使用2片8259A组成级联方式,扩展的8259A与主8259A通过IRQ2进行级联,两个8259A中断控制器最多可对外部15个中断源进行管理.实验台上的中断请求信号通过扁平电缆连接到微机主板上的ISA总线扩展插槽的IRQ2、IRQ3、IRQ4和IRQ7中的某一个上,然后送往主板上主8259A可编程中断控制器的对应中断请求输入端.具体选用IRQ2、IRQ3、IRQ4和IRQ7中的哪一个,由本实验台接口卡上的跳线开关(JK)设置,可以选择将IRQ2、IRQ3、IRQ4和IRQ7中的某一个引到实验台上的IRQ插座上,跳线方法详见第3章,实验台接口卡出厂设置为IRQ7.系统启动时,8259A中断类型号的高5位已被初始化为00001,故IRQ0~IRQ7的中断类型号为08H~0FH;8259A的中断结束方式初始化为非自动结束方式,即要在中断服务程序中发EOI命令;中断请求信号设置为“边沿触发”方式;8259A的端口地址为20H和21H.4.2.4 实验内容按图4.2-1连接线路(只需连接一根线),按动单脉冲发生器的微动开关产生一个正脉冲作为中断请求信号.要求每按一次开关产生一次中断,在屏幕上显示一次“This is a interruption!”,中断10次后程序结束.4.2.5 实验提示设实验台接口卡上的跳线开关(JK)设置为通过ISA总线中的IRQ7(接口卡出厂设置)将实验台上的中断请求信号引入微机主板上的主8259A中断控制器.由于系统中使用IRQ7作为并行打印机的中断请求信号输入,其中断类型号为0FH,其对应的中断服务程序入口地址存放在内存(中断向量表)0FH⨯4~0FH⨯4+3四个存储单元中,因此,程序应首先将系统设置的IRQ7对应的中断服务程序的入口地址保存起来,然后再将实验台上的外部可屏蔽硬件中断对应的服务程序的入口地址写入中断向量表中的这四个单元中,在程序返回前恢复原有内容.下面分别给出以上有关操作的编程提示.1、原中断向量的保存与新中断向量的写入DATA SEGMENTKEEP_CS DW 0 ;存放原中断服务程序所在代码段的段地址&&图4.2-1 IRQKEEP_IP DW 0 ;存放原中断服务程序在代码段的偏移地址 OLD_IMR DB 0 ;存放中断屏蔽寄存器IMR 原来的内容DATA ENDSCODE SEGMENT;保存原中断服务程序的入口地址(由DOS 系统功能调用INT 21H 功能号为35H 实现)MOV AH ,35HMOV AL ,0FH ;IRQ7的中断类型号为0FHINT 21H ;返回值:(ES )=段地址 (BX )=偏移地址MOV KEEP_CS ,ES ;保存段地址MOV KEEP_IP ,BX ;保存偏移地址;将新的IRQ7的中断服务程序入口地址送中断向量表MOV AX ,SEG PIRQ7 ;中断服务程序入口地址送DS :DXMOV DS ,AXMOV DX ,OFFSET PIRQ7MOV AL ,0FH ;中断类型号0FH 送ALINT 21HPIRQ7 PROC ;IRQ7对应的新的中断服务程序IRETPIRQ7 ENDP CODE ENDS⋯ ⋯ ⋯ ⋯图4.2-2 主程序流程图 图4.2-3 中断服务程序流程图2、8259A中断屏蔽寄存器IMR对应位清零(允许该位中断)IN AL,21H ;读IMRMOV OLD_IMR,AL ;保存IMR内容AND AL,7FH ;IRQ7对应的bit7清零,允许IRQ7的中断OUT 21H,AL ;写回到IMR3、中断服务程序结束前使用中断结束命令MOV AL,20HOUT 20H,AL4、程序结束返回DOS前应恢复8259A中断屏蔽寄存器IMR的原有内容,并恢复原IRQ7的中断向量.注意:若实验台接口卡未使用出厂时的设置,即不是使用ISA总线中的IRQ7将实验台上的中断请求信号IRQ送到主板的8259A,请根据具体设置在编写程序时作适当修改.实验内容1和2的程序流程图如图4.2-2和4.2-3所示.4.2.6 实验报告要求1、根据流程图编写实验程序,并说明在实验过程中遇到了哪些问题,是如何处理的.2、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等.。
中断系统和中断控制器8259A详解
微 机 原
第7章 中断系统和中断控制器8259A
理
及
应 用
7.1 中断的基本概念
∨∨
•中断:是指CPU在正常运行程序时,由于内部或外部事件 引起CPU暂时中止执行现行程序,转去执行请求CPU为其 服务的那个外设或事件的服务程序,待该服务程序执行完 后又返回到被中止的程序这样一个过程。
•中断源:能发出中断申请的外设或引起中断的原因。
IRR锁存
逻辑电路根据IMR判断 IMR对应位为0
优先权判别器PR
优
先
权
最
CPU响应中断 IF=1 CPU的INTR端
高 8259A的INT端为1
INTA 8259A
ISR相应位置1, IRR响应位清0,
送中断类型码
●若允许嵌套,PR依据ISR的状态,判断新的中断请求优先权是否高 于正在服务的中断,是则送出INT=1。 ●服务结束,8259A清除ISR响应位。
提高了CPU的利用效率。
7.1.2 中断处理过程
∧∧
微 机
1.中断过程
原
理 及
● 对于不同的微机系统,CPU中断处理的具体过程不尽相同,但是一
应 用
个完整的中断基本过程应包括五个基本过程:
∨∨
中
中
保护现场
中
中
中
断
断
请
判
断 响
断 处
断 返
开中断
求
优
应
理
回
中断处理
产指断触生令接发中或口器断电和CP信路中U确 最号有断引定高。一屏脚有的来个蔽。中那至中触每断个于断发个请中中请器中C自关保形求断P断 求 。动中护成U且 源完 断 现 中响优 。成 ; 场 断应先下 保 服;进级列 护 务入中 中 中工 断 程中断 断作 点 序断服 服 服: ; 入周务 务 务口期就 程 程地,是 序 序弹址过 结C出P程 构断U。 如执点图行,返回主程恢中关序复断。中现返断场回
总结介绍8259中断控制器
8259中断控制器Overview前言8259A芯片是一个中断管理芯片,中断的来源除了来自于硬件自身的NMI中和来自于软件的INT n指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断的可屏蔽的。
这些中断也都通过PIC(Programmable Interrupt Controller)进行控制,并传递给CPU。
一个8259A芯片最多可接收8个中断源,但由于可以将2个或多个8259A芯片进行级连(cascade),并且最多可以级链到9个,所以最多可以接64个中断源。
如今绝大多数的PC 都拥有2个8259A,这样最多可以接收15个中断源。
通过8259A可以对单个中断源进行屏蔽。
在一个8259A芯片上有如下几个内部的寄存器:1.Interrupt Mask Register(IMR)。
2.Interrupt Request Register(IRR)。
3.In Service Register(ISR)。
IMR被用作过滤被屏蔽的中断,IRR被用作暂时放置未被进一步处理的Interrupt,当一个Interrupt正在被CPU处理时,此中断被放置在ISR中。
除了这几个寄存器之外,8259A还有一个单元叫做Priority Resolver,当多个中断同时发生时,Priority Resolver根据它们的优先级,将最高优先级的优先传递给CPU。
工作原理当一个中断请求从IR0到IR7中的某根线到达IMR时,IMR首先判断IR是否被屏蔽,如果被屏蔽,则此中断请求被丢弃;否则,则将放入IRR中。
在此中断请求不能进行下一步处理之前,它一直被放置在IRR中。
一旦发现处理中断的时机已到,Priority Resolver将从所有被放置于IRR中的中断中挑选出一个优先级最高的中断,将其传递给CPU去处理。
IR号越低的中断优先级级别越高,比如IR0的优先级是最高的。
8259A通过发送一个INTR(Interrupt Request)信号给CPU,通知CPU有一个中断到达。
8259A介绍
(5)控制逻辑电路 控制逻辑电路根据CPU对8259A编程设定的工作方 式 管 理 8259A , 负 责 发 出 INTR 和 接 收 INTA# , 并 使 INTA#转化为内部所需的各种控制信号。 (6)读/写电路 读/写电路可接收CPU对8259A的初始化命令字ICW 和操作命令字OCW,并将其存入相应的端口寄存器, 来规定8259A的工作方式和控制模式;也可以向CPU提 供各端口寄存器的内容。 (7)数据总线缓冲器 连 接 系 统 总 线 和 8259A 的 内 部 总 线 , 用 于 传 输 8259A的控制字或状态字,以及中断类型号。 (8)级连缓冲/比较器 控制多片8259A的级连,扩展中断级。多片8259A 级连时,一片为主,其余为从。最多可9片级连,扩 展64级中断。
1.中断嵌套方式
(2)特殊全嵌套方式 和一般全嵌套方式基本相同,区别在于: 在特殊全嵌套方式下,处理某一中断时, 可实现对同级中断请求的响应。 系统中只有单片8259A时,通常用全嵌 套方式;而当8259A多片级连时,主片 必须采用特殊全嵌套方式,从片可采用 一般全嵌套方式。
一般全嵌套方式与特殊全嵌套方式的区别
8259A中断优先权的管理方式有固定优先权方式和自 动循环优先权方式两种。 (1)固定优先权方式 注: 特殊全嵌套仅用于多个8259A级连时的 在固定优先权方式中,IR7~IR0的中断优先权 主 8259A , 而 不 能 用 于 从 属 8259A 或 单 的级别是由系统确定的。 8259A系统。 它 们 由 高 到 低 的 优 先 级 顺 序 是 : IR0, IR1, IR2, …, IR7, 其中,IR0的优先级最高,IR7的优 先级最低。当有多个IRi请求时,优先权判决器(PR) 将它们与当前正在处理的中断源的优先权进行比较, 选出当前优先权最高的IRi,向CPU发出中断请求INT, 请求为其服务。
(8259A)
从ISR是 否全为0
N
Y EOI主
IRET
(3) 优先权循环方式
一个系统的优先权比较复杂,所以不能总规定IR0高 … IR7低。 8259A设计了两种改变优先权的方法。
•自动循环方式 ——适用于设备的优先权相等情况 当一个设备受到中断服务后,它的优先级自动降到最低,其相 邻的中断请求变成最高的。 例如: IR0 IR1 IR2 IR 3 IR4 IR5 IR6 IR7 初始 高 低 若IR4有中断请求,处理IR4后,IR5成为最高优先级, 优先级次序为:IR5 IR6 IR7 IR0 IR1 IR2 IR3 IR4 IR4左循环至最低优先级。
不管是普通、还是特殊的中断结束方式,级联系统中的中断结 束必须发送两次EOI: 一次给从片,一次给主片。 (向从片发EOI后,须检查从片中的所有申请中断的源是否全服务过。 只有都服务过了,才能向主8259送另一个EOI命令)。
17
中断结束字
什么是8259A的中断结束字(EOI)?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ISR2上的1,一直要保持到该中断源的中断处理结束为止,当8259A收到中断结 束命令后,ISR2才被清0,表明连接在IR2上的外设的中断服务已经结束。 有两个以上的“1”,表明有中断嵌套。
设IR2引脚有中断请求,IRR2= 1
IR7引脚 IR6 IR5 IR4 IR3
CPU 响 应 IR2 中断,回送中 断应答信号; 8259 的 INTA 引 脚收到第一个 中断响应信号 , 使 ISR 某 位 ( 如 ISR2) 置 1 时 ,把IRR中某位 (如IRR2)清0
2)内部结构 *1 中断请求寄存器 IRR Interrupt Request Register 功能: 存放中断请求信号直到CPU响应中断为止。
IRR7
:
:
:
IRR0
IR7引脚
IR0引脚 或
IR7~IR0引脚上出现中断请求信号
上升边或高电平表示有中断请求,则相应的位置1。 80X86计算机系统设定的是上升边方式
*2中断屏蔽寄存器 IMR Interrupt Mask Register 功能: 用于屏蔽某IR0~IR7引脚上的中断请求信号,使之不能被传递给CPU。
某位为1,则屏蔽对应引脚上的中断请求;为0,允许。 IMR与IRR的各个位一一对应
例:IR0,IR3,IR7引脚上有中断请求信号,要求只屏蔽IR7引脚上的中断请求,则对屏蔽寄 存器送入屏蔽字10000000即可
IR2 IR1 IR0引脚
IRR7
IRR2
1 0
IRR0
IRR IMR
1
10
ISR
第二个中断响应信号,启动8259把选中的中断源的中断类型号 回送给CPU
*4 优先级分析器 PR Priority Resolver 功能:用于分析中断请求寄存器IRR中各位的优先级,对各个中断请求择优。 *择优对象:没有被屏蔽的IRi *择优时间:接收到第一个INTA信号时 *择优方式:由编程决定 *择优结果:找出优先级最高的中断源,送出中断类型号给CPU,并且使ISRi对应的位置1。 *5 逻辑控制 根据CPU对8259A设定的方式,产生8259A内部所需的控制信号,并且能够 发出INT信号和接收INTA信号。 *6 读写逻辑 *7 数据总线缓冲器:通过这一环节,可以使8259A的数据线直接与CPU的DB连接而不用增加 其它电路。 *8 级联缓存器/比较器(了解) 在多片8259A级联的情况下,用于存放和比较从8259A的级联选择代码。CPU响应中断 时,通过CS2~CS0对从8259A输出级联选择代码,选出发中断请求的从8259A;从8259A则通 过CS2~CS0接受来自主8259A的选择代码。 *9 初始化命令寄存器和操作字命令寄存器 两组可编程控制寄存器,用于设定或改变8259A的工作方式和控制方式。
中断屏蔽寄存器 IMR
8259A与总线的连接
8259A
总线 Vcc 数据线 D0 ~ D7 RD WR A0 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 + 5V 18.2Hz 方波 键盘 保留 串 口2 串 口1 硬盘 软盘 打印机
D0 ~ D7
IOR IOW A0 A1 ~ A9 INTA INTR
从功能的角度,认识和学习8259A!
*功能: 1)一片8259A可以管理8个中断源的识别和判优;一片8259可以级连8 片8259A,可以管理64个中断源的识别和判优。 2)对于每一个由8259管理的外中断,均可独立屏蔽或非屏蔽 3)能够向CPU提供中断源的识别码(中断类型号) 4)具有多种优先级管理方式
(1) 8259A内部的结构和引脚功能
INTA
数据总线 缓冲器
INT
D0~D7 RD WR A0
控制逻辑
读 /写 逻辑
正在服务 寄存器 ISR
优先级 分析器 PR
中断请求 寄存器 IRR
CS CAS0 CAS1 CAS2
SP/EN
级联 缓冲 /比较器
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
A0=1,选中奇地址端口 A0=0,选中偶地址端口
8259A规定有些命令字要写入奇地址端 口,有些则应写入偶地址端口。
在80X86系统中,使用一片8259,偶地址为20H,奇地址为21H 使用两片8259A时,主片8259H,偶地址为20H,奇地址为21H 从片8259H,偶地址为A0H,奇地址为A1H * WR RD *INT 中断请求信号 8259 INT INTR CPU 上一级8259
IMR7 IMR3 IMR0
IMR IRR
1
IRR7
0
IRR3
0
IRR0
1
R7引脚
1
R3引脚
1
R0引脚
如果我们希望确保IR3引脚上的信号不被屏蔽(允许中断请求信号 能够传送到CPU),而又要求其它各个引脚上屏蔽/开放的状态不变,可以采用 如下指令:
重 要
IN AL,21H ;从8259的奇地址读入屏蔽字 AND ALAL ;开放(允许)IR3的中断
*INTA 中断响应信号输入端 *SP / EN (Slave Program / ENable buffer)(了解即可) 从编程/使能缓冲线 双功能引脚。工作在级联方式时,主8259A的这条引脚接高电平,从8259A 接低电平。 * CAS0,CAS1,CAS2:(CAScade lines)级联线(了解即可) 主从片的CAS0,CAS1,CAS2对应连接 *IR0~IR7 中断请求输入引脚。8个外设的中断请求信号分别连接在这些引脚上。 每一个引脚可以扩展一片8259A 注意:外设的中断请求不是直接提交给 CPU的,而是通过中 断控制器经过管理后,再传递给CPU的INTR引脚的。
6.2.2 8259A 可编程中断控制器
中断管理包括: 中断请求信号的产生和锁存环节; 中断请求的屏蔽环节; 中断判优环节; 中断源的识别环节; 向CPU传递识别码(中断向量号)的环节; 中断请求信号的撤除环节。 中断管理可以由若干块芯片来实现,与可以采用可编程接口芯片来实现。8259A就 是一块在计算机系统中,用得相当普遍的一种中断管理芯片,它不仅可以完成上面 所提及的各种操作,还具备更强的、更多的功能,具有更方便、更灵活的特性
片 选 20~3FH 译 码
CS
INTA INT
SP/EN CA0 CA1 CA2 GND
用于多片 8259A 级连情况
1) 引脚功能 P174 图6.15 *D0~D7: 8259A数据线。通过D0~D7,设置8259A的工作模式;外设的中断类型号也必须 通过数据线送给CPU。 * CS 片选信号 * A0:端口选择信号 8259A内部有两个可寻址的端口:偶地址端口和奇地址端口
*3 中断服务寄存器 ISR Interrupt Service Register ISR与IRR的各个位一一对应 功能:记录CPU正在为之服务的是哪一个中断源。
例如:经过优先级分析器,IR2中断被选中,8259向CPU发出中断请求,CPU响应中断,向 8259A回送两个中断响应信号INTA。第一个INTA使ISR2置1,表明CPU正在为IR2服务(正在 处理IR2中断),并且把IRR2清0, (已经响应了该中断请求,所以撤除请求标志)。