8259A中断控制器和8253计数器
8259、8253实验报告
数字逻辑与CPU实验报告实验内容:8259中断控制器、8253可编程定时/计数器接口实验姓名:班级:学号:实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。
2、掌握编写中断服务程序的方法。
3、掌握初始化中断向量的方法。
二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。
三、实验方法(1)连线1、单脉冲发生器输出P+与8259的IR0相连;2、8259的片选CS8259与CS0相连;3、8259的INT与8086的INT相连;4、CS273与CS1相连;5、00与LED1相连;其他线均已连好。
(2)在8086实验系统软件中编辑程序,编译链接后,调试程序,程序流程图如图2。
(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。
四、程序源代码CODE SEGMENT PUBLICASSUME CS:CODEORG 100H;设置堆栈起点0100HSTART: 图2 程序流程图 MOV DX,4A0HMOV AX,13H ;写ICW1,单片8259,要写ICW4OUT DX,AXMOV DX,4A2HMOV AX,80H ;写入ICW2,设定IR0中断类型吗为80HOUT DX,AXMOV AX,01 ;写入ICW4,设定一般嵌套,非自动EOI方式 OUT DX,AXMOV AX,0 ;写入OCW1,设定允许中断。
OUT DX,AXMOV AX,0MOV DS,AXMOV SI,200H ;中断向量预存放在0100:0200H(向量码80H) MOV AX,OFFSET HINT;取中断服务程序的入口地址MOV DS:[SI],AXADD SI 2MOV AX,CSMOV DS:[SI],AXSTI;开中断JMP $;原地跳转HINT:;中断服务程序XOR CX,0FFH;CX全部取反(8位)MOV DX,4B0H;CS273接口的地址,与8个LED灯相连MOV AX,CX;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的的地址MOV AX,20H;写入OCW2,一般EOI命令,全嵌套方式OUT DX,AXIRET;中断返回CODE ENDSEND START五、实验结果程序调试通过后,当我们按一次单脉冲发生器的输出开关,对应连好的灯就会亮。
总结介绍8259中断控制器
总结介绍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有一个中断到达。
计时器
选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。
时、分、秒的数值通过对8255的编程可送到七段数码管上显示。
在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数器2可在方式0下工作。
8255的A口、B口都设为方式0,为基本的输入输出方式。
在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。
时、分、秒分别对应6个存储单元,分别存放时、分、秒的十位和个位。
当中断次数满10次时,将秒的个位加1,同理对分,时亻相应处理。
七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的段码,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示。
基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。
以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz 的时钟信号,要求每隔10ms完成一次扫描键盘的工作。
在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。
本设计由8259A中断控制器、8253定时/计数器、8255A接口芯片、LED数码显示管和两个按键组成。
主要用8259A的IRQ7的中断服务程序完成秒、分、时的运算即计时功能,IRQ6的中断服务程序完成调时、调分功能。
8253用来产生50ms 的脉冲信号作为IRQ7的中断请求信号。
8259A可编程中断控制器
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的工作方式和控制方式。
第七章--中断系统和中断控制器8259APPT课件
发出中断请求的条件:外部设备已准 备好,且该外设的中断请求没有被 系统评屏蔽。
-
5
2. 中断排队和中断响应
概念:CPU接收到中断请求后,从 中止现行程序到转向中断服务程序 入口的过程,称为中断响应。
条件:
1)中断是开放的;
中断类型号×4——该中断向量在表中 起始单元的地址。
寻找4个连续存储单元,获得IP及CS
-
25
17H*4=90H IP
46 00H
CS 3B A4H
例 n=24H
00H 46H A4H 3BH
0000:0090H 0000:0091H 0000:0092H 0000:0093H
中断处理子程序
3BA4:4600H
1) AH中预置功能号25H;
2) AL中预置中断类型码; 3 ) DS:DX中预置中断服务程序的人口地址 (段地址和偏移地址分别置人DS和DX)。 预置完以上参数后,执行INT21H指令就可把 中断服务程序的人口地址置人中断向量表 中适当的位置。
-
29
例7-2 设中断服务程序的人口地址为INTSUB,
1)AL中预置入中断类型码;
2)AH中预置入功能号35H。
执行INT21H指令,ES和BX中分别是中断 服务程序入口地址的段地址和偏移地址。
-
31
7.2.4 8086/8088的中断处理过程
中断处理过程包含:中断请求、中断 排队、中断响应、中断服务和中断返 回。
1. 中断响应条件,有内部中断发生或 NMI /INTR引脚上有效中断请求信号 且IF=1时,待CPU执行完当前指令后 方能响应中断。
8259可编程的中断控制器
82598259A是一个可编程的中断控制器,应用在实时的、以中断方式进行监控的计算机系统中。
用一片8259A可以管理8个等级的中断申请。
并可再经级联扩展多至8片8259A,使得中断等级可扩展多至64级。
8259A可以作为一个I/O外围器件,用系统软件编程,它所具有的多种优先权方式可以通过主程序在任何时候进行改变或重新组织。
这意味着可以按照全系统的外围情况和要求,设计出一个完整的中断结构,用来实现优先管理、中断屏蔽以及自动中断矢量转移。
它几乎可以适合于任何一种中断控制的结构,因而得到了广泛的应用。
1 引脚图8259A为28脚双列直插式封装的器件。
2 内部结构其工作过程如下:第一步:当中断请求线(IR0~IR7)上有信号输入时,就把中断请求寄存器IRR相应的位置1。
第二步:当IRR的一位置1后,就会与IMR中相应的屏蔽位进行比较,如该屏蔽位为0,则请求被发送给优先级分析器;如该屏蔽位为1,则封锁该请求。
第三步:当一个中断请求被输入优先级分析器后,将由优先权分析器判定其优先权,然后向CPU 发中断申请,INT脚变高(INT联到8086的INTR)。
第四步:CPU的INTR引脚为异步状态接收,也就是它可以在任何时间(与时钟无关)接收中断。
在软件控制下利用STI指令(中断置位)或CLI(中断复位)指令可分别将CPU的“中断开放标志位”IF置位或复位,可以做到接受或不理睬在INTR上的中断申请。
第五步:假定CPU中的IF标志为1,则CPU在完成当前指令的即进入中断响应周期,这个中断响应周期将标志寄存器入栈,然后清除IF标志,关闭了中断。
再将代码段寄存器和指令指针也入栈(这是为了从中断服务程序返回),然后CPU发出第二个 INTA脉冲通知8259A,说明8086已经允许了它的中断请求。
若8086用于“最小方式”,则INTA脉冲信号为8086 INTA引脚上的信号;若8086用于“最大方式”时,则8086 LOCK脚在中断响应序列执行期间变为低电平。
中断系统和中断控制器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,8253芯片资料
8259芯片:8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。
单个的8259A能管理8级向量优先级中断。
在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。
8259A有多种工作方式,能用于各种系统。
各种工作方式的设定是在初始化时通过软件进行的。
在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态,编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。
8259工作原理:一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。
如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。
但CPU这时可能正在执行一条指令,因此CPU不会立即响应。
而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。
如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。
当CPU执行完一条指令时后,会检查一下INTR管脚是否有信号。
如果发现有信号,就会转到中断服务,此时,CPU会立即向8259A芯片的INTA(中断应答)管脚发送一个信号。
当芯片收到此信号后,判优部件开始工作,它在IRR中,挑选优先级最高的中断,将中断请求送到ISR(中断服务寄存器),也即将ISR 中代表此IRQ的位置位,并将IRR中相应位置零,表明此中断正在接受CPU的处理。
同时,将它的编号写入中断向量寄存器IVR 的低三位(IVR正是由ICW2所指定的,不知你是否还记得ICW2的最低三位在指定时都是0,而在这里,它们被利用了!)这时,CPU还会送来第二个INTA信号,当收到此信号后,芯片将IVR中的内容,也就是此中断的中断号送上通向CPU的数据线。
中断技术DMA控制器及定时器计数器
定
一个时钟周期,然后又自动变为高电平并一直维持高
时
电平。一般将此负脉冲作为选通信号。当计数值N被送 到计数初值寄存器后,在下一个时钟周期,计数初值
器
被送到计数执部件,之后,计数执行部件作减1计数,
第八章
中断技术、DMA控制器及定时器/计数器
中断的基本原理
主 要
中断的实现方法
内
中断控制器8259A
容
DMA控制器8237
计数器/定时器8253
中
断
所谓中断,就是指当CPU正在执行
的 基
程序时,外设(或其它中断源)向CPU 发出请求,CPU暂停当前程序的执行, 转向该外设服务(或称中断服务)程
本 序,当中断服务程序运行结束后,
统
INTR的中断请求。如果IF为0,即使INTR端有
中断请求信号CPU也不会响应。这种情况称为
中断屏蔽。
中断向量表
8086/8088系统支持最多256个中断,对
8086 8088
应每一个中断,都有一个中断服务程序,
中
该中断服务程序的入口地址称为中断向 量。每个中断向量占用4个字节,前两个
断 字节为服务程序的IP(偏移量),后两
❖设置方式寄存器
PC机BIOS在初始化时,将方式寄存器初始化为单字 节传送方式、地址递增、通道0为读传送、自动预置 (方式字为58H)、通道1、2、3为校验传送、禁止 自动预置,其方式字为41H、42H、43H。
❖设置命令寄存器
初始化必须设置命令寄存器,以确定其工作时序、 优先级方式、DREQ和DACK的有效电平及是否允许工 作等。
时
(不是减到0)时,输出OUT变为低电平。
器
计
微机原理8259A中断控制器实验
计算机科学与技术系实验报告专业名称计算机科学与技术课程名称微机原理与接口技术项目名称 8259A中断控制器实验班级学号姓名同组人员无实验日期 2016/12/17一、实验目的与要求:(简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要求。
)1、了解8259A的内部结构,工作原理;2、了解8259A和8088的接口逻辑;3、熟悉8259A的控制寄存器和初始化编程方法,了解8088是如何响应中断,退出中断的。
二、实验内容(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、算法原理、实验仪器、设备选型及连线图、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他)内容:1、编制程序,拨动单脉冲开关,脉冲信号送给8259A的IR0,触发中断,8088计数中断次数,显示在G5区的数码管上。
原理:1. 8259控制器的介绍中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。
8259A的内部结构和引脚如图6-1所示。
8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如图6-2所示,OCW1-OCW3各命令字格式如图6-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
实验四定时器8253与中断控制器8259A实验
实验四 定时器8253与中断控制器8259A 实验一﹑实验目的1. 掌握计数器/定时器8253的工作原理和编程方法。
2. 掌握8259中断控制器的工作原理;3. 掌握中断服务程序的编写。
二﹑实验内容1. 该实验用PC 机内部的中断控制器8259A ,中断源用TPC_H 实验箱上8253来产生,电路如下所示,将8253计数器0、计数器1分别设置为方式3和方式2,计数初值设为2000,每隔4秒产生一次。
TPC_H 实验箱上的IRQ 已连接到PC 机内部主片8259A 的IRQ7,主片8259A 的端口地址为20H 和21H ,主机启动时,系统已将8259A 中断控制器进行了初始化(边沿触发﹑一般完全嵌套方式﹑非自动结束,ICW2为08H ,IRQ7对应的中断类型码为0FH);2. 实验电路如下图:注意:做中断实验时,JB 上的短路片应插在“I/O ”位置,JC 上的短路片插在“I/O ”位置。
3. 编写程序,要求每次主机响应外中断IRQ7时,显示"THIS IS A 8259A INTERRUPT !",在键盘上敲任意一个键,程序退出。
4. 修改电路和程序,直接用手动产生单个脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次“THIS IS A IRQ7 INTRUPT !”,中断10次后程序退出。
JCI/O EM实验连线6条,如图红色虚线所示去IRQ7去去50去1MHz 输出端1.复习8259A工作原理,编程方法和使用方法。
2.根据要求编写相应的汇编程序。
四﹑报告要求1.整理好经过运行是正确的源程序,并加上注释。
2.总结实验调试过程中遇到的问题。
3.通过实验回答思考题。
五﹑思考题初始化时设置为非自动结束方式,那么在中断服务程序将结束时必须设置什么操作命令?如果不设置这种命令会发生什么现象?六、实验原理1、PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。
8253计数器
8253内部包含3个完全相同的计数器/定时器通道的 操作完全是独立的每个通道都包含一个8位的控制字 寄存器、一个16位的计数初值寄存器、一个计数执 行部件(实际的计数器)和一个输出锁存器。
8253的3个计数器都各有3个引脚: (1)CLK0—CLK2计数器0—2的输入时钟脉冲端 (2)OUT0—OUT2计数器0—2的输出端 (3)GATE0—GATE2计数器0—2的门控脉冲输入端
▪ CLK0:307.2kHz ▪ cs: 200H ▪ 地址:控制字寄存器:203H
定时器0:200H 定时器1:201H 定时器2:202H
器高字节 11先读/写计数器低字节, 后读/写高字节
▪ M2M1M0—工作方式选择位
000—方式0 001方式1 X10方式2 X11方式3 110方式3 101方式3
▪ BCD—计数方式选择位
1 BCD码计数
0 2进制计数
8253的初始化步骤
▪ 写入控制字 ▪ 写入计数初值
初值可以是8位,也可以是16位数据。如是16位 数据,先送低8位数据,后送高8位数据。
门控信号控制功能
工作方式 GATE为低电平或下降沿 GATE为上升沿
GATE为高电 平
方式0
禁止计数
允许计数
方式1
从初值开始计数,下 一个时钟后输出变为 低电平
方式2 禁止计数,使输出变高 从初值开始计数
允许计数
方式3 禁止计数,使输出变高 从初值开始计数
允许计数
Байду номын сангаас
方式4
禁止计数
允许计数
方式5
从初值开始计数
控制字寄存器
D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RL1 RL0 M2 M1 M0 BCD
8259A中断控制器
– 如果进入的中断申请比 ISR 中记录的中断优先级高, » 则通过 8259A 的 INT 引脚向 CPU发出中断请求信号; – 如果进入的中断申请不比 ISR 中记录的中断优先级高, » 同级或低级,则不向 CPU 发中断请求信号。
① 中断申请寄存器IRR 锁存外部的中断申请。 • 若 IR0~IR7 引脚上有中断申请,则将 IRR 相应位置1
(1) 处理外设中断申请,决定是否向 处理外设中断申请,决定是否向CPU发中断申请信号 发中断申请信号 ① 中断申请寄存器IRR 锁存外部的中断申请。 • 若 IR0~IR7 引脚上有中断申请,则将 IRR 相应位置1 ② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。 • IMR对应位为 0,允许中断申请进入优先级裁决器,
第二个 中断响应周期 T1 T2 T3 T4
向量类型
三、8088CPU的中断优先权 8088CPU的中断优先权
• 优先级 • 高
• 非屏蔽中断 • 可屏蔽中断
低
• 内中断 ( 除零,INT 指令,断点,INTO指令 )
•
低
内中断( 单步 )
当有多个中断源同时产生中断申请时, 当有多个中断源同时产生中断申请时, CPU先响应优先权最高的中断源,再 先响应优先权最高的中断源, 先响应优先权最高的中断源 响应优先级较低的中断源。 响应优先级较低的中断源。
– ISR中的某位为1,表示CPU正在响应此级中断, » 即正在执行此中断源的中断子程; – ISR中的某位为 0,表示CPU没有或已响应完此级中断, » 即不在执行此中断源的中断子程 总线 D0 ~ D7 A0 A5 ~ A9 IOR IOW INTA INTR 片 选 CS 译 码 RD WR INTA INT 数据线 A0 D0 ~ D7
第9章 中断系统和中断控制器8259A
第7章 中断系统及8259A
24
二、8086/8088的中断系统
1、8086/8088的中断指令 2、8086/8088的中断分类 3、中断向量表 4、8086/8088中断处理过程
2015-1-5
第7章 中断系统及8259A
25
1、8086/8088的中断指令
(1)中断指令 指令格式: INT n ;n=0~255,中断类型码 指令操作: SP-2 → SP(修改堆栈指针), FR入栈, IF=0(中断标志置0,关中断,CPU不响应可屏蔽中 断) , TF=0(陷阱标志,TF=0,CPU正常执行程序) , SP-2 → SP (修改堆栈指针), CS入栈 SP-2 → SP (修改堆栈指针),IP入栈 [n×4] →IP [n×4+2] →CS
第7章 中断系统及8259A
16
(4)中断服务和(5)中断返回
中断服务是指CPU执行中断服务程序。
中断服务程序应包括: ①保护现场,CPU响应中断时自动保护断点, 寄存器则由程序员决定是否要入栈; ②开中断,CPU响应中断时,自动执行关中断 操作。要实现中断嵌套,必须在中断服务程序中开 中断;
2015-1-5
2015-1-5
第7章 中断系统及8259A
7
(1)实现中断及返回
* 通过设置CPU内部的中断允许触发器(IFF),开 关中断 。 当IFF=1,使中断允许(开中断); 当IFF=0,使中断不允许(关中断)。
注意: 不可屏蔽中断,要求CPU立即处理。不受中断允 许触发器(IFF)的控制。 可屏蔽中断,受中断允许触发器(IFF)的控制。
2015-1-5
第7章 中断系统及8259A
14
第九章 中断控制器8259A(9.1)
中断类型码:
D7D6D5D4D3 D2D1D0 0 0 0 0 0 1 … 1 1 1
2. 优先级的管理方式
(1)完全嵌套方式
在对8259进行初始化后,没有设置其它优先级方式, 则自动按此方式工作.即这是8259A默认的优先权设置方 式,在全嵌套方式下,8259A所管理的8级中断优先权是 固定不变的,其中IR0的中断优先级最高,IR7的中断优 先级最低。 特点:在全嵌套方式中,中断请求按优先级IR0~IR7级 进行处理,IR0级中断的优先级最高。 当一个中断被响应时,中断类型码被放到数据总线上, ISR中的对应位ISn被置1,然后进入中断服务程序。一般情 况下(除了中断自动结束方式外),在CPU发出中断结束 命令(EOI)前,此对应位一直保持“1”。
4.
结束中断处理的方式(EOI)
(1)中断自动结束方式: 用于系统中只有一片8259A,多个中断不会嵌 套的情形。系统一进入中断处理,就将当前中断服 务寄存器ISR的对应位清除。对8259A来说,好像已 经结束了当前中断。 在命令字ICW4中将AEOI(D1)位置“1”。 (2)一般的中断结束方式: 用在全嵌套的情形。 CPU用OUT指令往8259A偶地址发一个EOI命令, 8259A将使ISR最高非零IS位清0。结束当前正在处理 的中断。
⑦优先权判别器PR:用以比较正在处理的中断和刚刚进 入的中断请求之间的优先级别,以决定是否产生多重中断 或中断嵌套。 ⑧ 控制逻辑电路:对整个芯片内部各部件的工作进行协 调和控制。
9.1.2、8259A芯片的工作方式
8259A有多种工作方式,这些工作方式, 可以通过编程设置或改变。 下面,我们进行分类介绍。
CPU响应中断后, 请求中断的中断源 中,优先级最高的 中断源,在中断服 务寄存器ISR中的相 应位置位,而且把 它的中断矢量送至 系统数据总线,在 此中断源的中断服 务完成之前,与它 同级或优先级低的 中断源的中断请求 被屏蔽只有优先级 比它高的中断源的 中断请求才是有效 的,从而出现中断 嵌套。
第七章 中断控制器8259A
引脚信号
INT:向CPU发出的中断请求信号,输出,与CPU的INTR端相连。
INTA:CPU给8259A的中断响应信号,输入。8259A要求两个负脉
冲的中断响应信号,第一个是CPU响应中断的信号,第二个INTA结束 后,CPU读取8259A送去的中断类型号。
CAS2~CAS0:双向级联信号线。8259A作主片时,为输出线,作从片 时,为输入线。与SP/EN配合实现8259A级联。
6/15/2019
共98页
4
开中断 关中断
可屏蔽中断的工作流程
6/15/2019
共98页
5
中断响应过程(以可屏蔽中断为例)
1、外设通过INTR向CPU发出中断请求; 2、CPU在执行完现行指令后,响应该中断请求(IF=1); 3、外设向CPU提供中断类型号; 4、CPU将PSW、CS、IP压入堆栈; 5、清除IF、TF(默认情况下为不允许中断嵌套); 6、从中断向量表中取出中断向量,置入IP、CS; 7、执行中断例程; 8、在中断例程中,如果允许中断嵌套,则开中断(STI); 9、执行IRET,从堆栈中弹出IP、CS、PSW。
MOV DX,INTOFF MOV AX,INTSEG MOV DS,AX MOV AX,2580H ;恢复系统原80H中断向量 ;注意:先设置DX,再设置DS。因为如果先改变DS, ;就不能准确获得INTOFF变量值。 INT 21H MOV AX,4C00H INT 21H
6/15/2019
共98页
INTR_PROG: PUSH STI …… CLI POP IRET
……
;中断服务子程序 AX
AX
6/15/2019
共98页
12
中断向量的设置
微机接口技术8259A中断控制器
D7D0 :双向、三态数据线,接系统数据总线的 D7D0 , 用来传送控制字、状态字和中断类型号等。 IR7IR0 : 中 断 请 求 信 号 , 输 入 , 从 I/O 接 口 或 其 他 8259A( 从控制器) 上接收中断请求信号。在边沿触发方式中, IR输入应由低到高,此后保持为高,直到被响应。在电平触发
︽︾
保留的中断 (共27个) 类型号5~31
︽︾
0000:0014H 0000:0013H
CS IP
CS IP CS IP CS IP CS IP
溢出中断 断点中断
0000:0010H
0000:000FH 0000:000CH 0000:000BH
非屏蔽中断
单步中断 除数为0中断
0000:0008H
2)特殊全嵌套方式(SPECIAL FULLY NESTED MODE-SFNM)
和全嵌套方式基本相同。唯一不同在于可以响应同级 的中断请求,实现同级的中断嵌套。通过ICW4的 “SFNM”位可以设置此种方式。
特殊全嵌套方式的使用场合:级联方式中主片
8259A被设置为特殊全嵌套方式。
特殊全嵌套方式的使用场合:
ICW3 主从片关系 ICW4 方式控制
OCW2 0 1 OCW3
控制部分
yangruioot@
20
8259工作示意图
Go ahead
•
•
•
•
•
IR0~IR7上出现某一中断请求信号 IRR对应位被置“1” 由IMR的相应位决定是否将其屏蔽(屏蔽位=1,不通过; 屏蔽位=0,通过) 未被屏蔽的中断请求进PR,当只有一个中断时,则该中 断源向CPU发出中断请求INTR。当同时有两个以上中断 时,根据编程设定的优先级确定中断优先级最高的中断 向CPU发出中断请求INTR。若CPU正在执行中断服务程序, PR把新进入的中断请求和当前正在处理的中断进行优先 级比较。若新进入的中断优先级高,该中断请求被送到 CPU。 若CPU的IF=1,CPU完成当前指令后,响应中断,在 引脚上发出两个负脉冲(执行两个中断响应总线周期):
第8章8259和8253
▲响应内部中断条件: 当前指令执行 响应内部中断条件: 结束 中断响应过程如下: ▲中断响应过程如下:
主程序 中断响应周期 中断服务程序 保护现场 开中断 中断处理 关中断 读中断向量 服务程序 中断返回 断点 , 转入中断 恢复现场 识别中断源 FLAGS , CS , IP 进栈
清 TF , IF 标志
5
中断服务程序
中断服务程序:处理中断事件的程序段。 中断服务程序:处理中断事件的程序段。如除法 错中断服务程序、输入输出中断服务程序等。 错中断服务程序、输入输出中断服务程序等。 中断服务程序与一般的子程序对比: 中断服务程序与一般的子程序对比:子程序的调 用是由程序设定, 用是由程序设定,因此是确定的而中断服务程序 由某个事件引发,它的发生往往是随机的、 由某个事件引发,它的发生往往是随机的、不确 定的。 定的。
可屏蔽中断的响应过程 引脚上接收到一个高电平的中断请求信号, 当CPU在INTR引脚上接收到一个高电平的中断请求信号, 在 引脚上接收到一个高电平的中断请求信号 并且当前的中断允许标志为1时 并且当前的中断允许标志为 时,CPU就会在当前指令 就会在当前指令 执行完以后,开始响应外部的中断请求。具体地说, 执行完以后,开始响应外部的中断请求。具体地说,就 引脚上发两个负脉冲, 是CPU往INTA引脚上发两个负脉冲,外设接到第 个负 往 引脚上发两个负脉冲 外设接到第2个负 脉冲以后,立即往数据线上给CPU送来中断类型码。 送来中断类型码。 脉冲以后,立即往数据线上给 送来中断类型码 CPU在响应外部中断、并进入中断子程序的过程中,要 在响应外部中断、 在响应外部中断 并进入中断子程序的过程中, 依次作下面几件事: 依次作下面几件事: (1) 从数据总线上读取中断类型码,将其存入内部暂存器。 从数据总线上读取中断类型码,将其存入内部暂存器。 (2) 将标志寄存器的值推入堆栈。 将标志寄存器的值推入堆栈。 (3) 把标志寄存器的中断允许标志 和单步标志 清零。 把标志寄存器的中断允许标志IF和单步标志 清零。 和单步标志TF清零
wfl第六章 中断2—8259
• 表中上半部分用于编程写入,下半部分用于查询读出。 • 其中 ICW1~ICW4 代表 初始化命令字 寄存器。 • OCW1~OCW3 代表 工作命令字 寄存器。
四、8259A 的编程 处理部分
D0 ~ D7 0 0 0 0 0 0 0 0
1、8259编程结构图
ISR 当前 中断 服务 寄存器
0 IRR 0 中断 0 申请 0 PR 寄存器 0 0 优先级 0 0 裁决器
第六章 中断系统
第四节 8259A 中断控制器
一、8259A 的结构及逻辑功能及引线 二、8259A的工作方式 三、中断响应过程 四、8259A 的编程 五、8259A 的应用举例
专用中断控制芯片8259
单片8259能管理8级中断,并且可级联管理64级 有中断判优逻辑功能,可对任一级中断单独屏蔽
中断被响应后,可直接提供中断类型号
可通过编程选择其工作方式 中断触发方式的设置 中断响应方式的设置 中断嵌套方式的设置
中断结束方式的设置
总线连接方式的设置及优先权的设置
一、8259A 的结构及逻辑功能
INTA INT
D7~D0
数据总线
缓冲器
初始化
控制逻辑
RD WR A0 CS
•
6、级联方式
• • • 主、从8259的ICW1中的SNGL位均应设为0 主、从8259的中断类型号不能重复 主、从8259都要对ICW3进行初始化,其初始 化数值要与硬件连接一致 主8259需要将ICW4设置成特殊全嵌套方式, 而从8259只需设置成全嵌套方式即可 如果采用非自动结束中断方式,则在中断服 务子程序最后要向主、从8259的OCW2各发 一个中断结束命令,分别清除主、从8259中 相应ISR位的值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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,FLAGS
AND AX,1111110111111111B ;关中断
MOV FLAGS,AX
MOV AL,00110110B ;假设定时器0设为方式3
OUT 43H,AL
MOV AL,XXH ;
OUT 40H,AL
MOV AL,XXH
OUT 40H,AL ;定时器0初值
MOV AL,01110110B ;假设定时器1设为方式3
OUT 43H,AL
MOV AL,XXH ;
OUT 41H,AL
MOV AL,XXH
OUT 41H,AL ;定时器1初值
MOV AH,35H
MOV AL,0AH
INT 21H
PUSH ES ;保存原向量
PUSH BX
PUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DX
MOV DS,XXH ;新中断向量段地址
MOV DX,XXH ;新中断向量偏移量
MOV AH,25H
MOV AL,0AH
INT 21H
POP DX
POP DS
IN AL,21H
MOV SAV_IR,AL ;保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间)
OR AL,00000100B ;开IR2
OUT 21H,AL
MOV AX,FLAGS
OR AX,0000001000000000B ;开中断
MOV FLAGS,AX
WAIT1:
JMP WAIT1
2.
MESSAGE DB 'THIS IS A 8259A INTERRUPT$'
SAV_IR DB 0
MOV AH,9
MOV DX,SEG MESSAGE
MOV DS,DX
MOV DX,OFFSET MESSAGE
INT 21H
MOV AX,FLAGS
AND AX,1111110111111111B ;关中断
MOV FLAGS,AX
PUSH DS ;借用DS和DX作中断入口,暂时保存原值
PUSH DX
MOV DS,ES
MOV DX,BX ;原0AH中断向量值
MOV AH,25H
MOV AL,0AH
INT 21H
POP DX
POP DS
MOV AL,SAV_IR ;读回8259原设置值
OUT 21H,AL
MOV AX,FLAGS
OR AX,0000001000000000B ;开中断
MOV FLAGS,AX
IRET
回答者:shinesnow_wy|三级| 2008-11-12 18:51 呵呵~~我们是同行啊~~~也许是对的吧~~顶~~
顶~~~
顶~~~~MOV AX,FLAGS
AND AX,1111110111111111B ;关中断
MOV FLAGS,AX
MOV AL,00110110B ;假设定时器0设为方式3
OUT 43H,AL
MOV AL,XXH ;
OUT 40H,AL
MOV AL,XXH
OUT 40H,AL ;定时器0初值
MOV AL,01110110B ;假设定时器1设为方式3 OUT 43H,AL
MOV AL,XXH ;
OUT 41H,AL
MOV AL,XXH
OUT 41H,AL ;定时器1初值
MOV AH,35H
MOV AL,0AH
INT 21H
PUSH ES ;保存原向量
PUSH BX
PUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DX
MOV DS,XXH ;新中断向量段地址
MOV DX,XXH ;新中断向量偏移量
MOV AH,25H
MOV AL,0AH
INT 21H
POP DX
POP DS
IN AL,21H
MOV SAV_IR,AL ;保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间)
OR AL,00000100B ;开IR2
OUT 21H,AL
MOV AX,FLAGS
OR AX,0000001000000000B ;开中断
MOV FLAGS,AX
WAIT1:
JMP WAIT1
2.
MESSAGE DB 'THIS IS A 8259A INTERRUPT$'
SAV_IR DB 0
MOV AH,9
MOV DX,SEG MESSAGE
MOV DS,DX
MOV DX,OFFSET MESSAGE
INT 21H
MOV AX,FLAGS
AND AX,1111110111111111B ;关中断
MOV FLAGS,AX
PUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DX
MOV DS,ES
MOV DX,BX ;原0AH中断向量值
MOV AH,25H
MOV AL,0AH
INT 21H
POP DX
POP DS
MOV AL,SAV_IR ;读回8259原设置值
OUT 21H,AL
MOV AX,FLAGS
OR AX,0000001000000000B ;开中断
MOV FLAGS,AX
IRET。