计算机组成原理与接口技术笔记 15 中断8259中断控制器
微机接口实验报告8259中断控制器实验
实验六8259中断控制器实验1 实验目的(1) 学习中断控制器8259的工作原理。
(2) 掌握可编程控制器8259的应用编程方法。
3 实验内容编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。
4 实验原理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内部寄存器的读出命令。
2.8259寄存器及命令的控制访问在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表6-1所示。
图6-1 8259内部结构和引脚图图6-2(a) ICW1格式图6-2(b) ICW2格式图6-2(c) ICW3格式图6-2(d) ICW4格式图6-3 OCW命令字格式3. PC微机系统中的8259在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表6-2示。
总结介绍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有一个中断到达。
《微机原理与接口》知识点第7章中断控制器8259
五、引入中断请求的方式
1、边沿触发方式
特点:将中断请求输入端出现的上升沿作为中断请求信号。
2、电平触发方式 特点:将中断请求输入端出现的高电平作为中断请求信号。
3、中断查询方式 特点: 1.外设通过向8259A发中断请求信号要求CPU服务。
2.CPU内部的中断允许触发器复位。
3.CPU使用软件查询来确认中断源。
第7章 中断控制器
7.1 8259A概述
7.2 8259A的引脚信号、编程结构和工作原理 7.3 8259A的工作方式 7.4 8259A的初始化命令字和操作命令字
7.5 8259A使用举例
第7章 中断控制器8259A 重点: 1、8259A的编程结构和工作原理 2、8259A的初始化命令字、操作命令字 3、8259A的初始化流程和初始化编程 4、8259A的应用
;×××10×11B ;设置ICW1 ;00011000B~ 00011111B ;设置ICW2 ;00000001B ;设置ICW4
三、8259A的操作命令字
1、OCW1 :中断屏蔽操作命令字
D7 M7 D6 M6 D5 M5 D4 M4 D3 M3 D2 M2 D1 M1 D0 M0 A0 1
中断 触发 方式
A0
0
是否设 置ICW4 规定单片或 级连方式
1:设置ICW4 0:不设ICW4
1:单片方式 0:级连方式
2、ICW2 :设置中断类型码初始化命令字
ICW2高五位与中断类型码的高五位相同。 注:该命令字必须写入“奇地址”端口,即A0=1。
3、ICW3 :标志主/从片初始化命令字
D7 D6 D5 D4 D3 D2 D1 D0
特点:发结束命令时,指令内不指定清除ISR中的哪一位, 由8259A自动将最高优先级对应的ISR中非零位复位,结 束当前正在处理的中断。 用于全嵌套方式。
计算机接口与微机原理-第12周-中断控制器8259A-c
计算机接⼝与微机原理-第12周-中断控制器8259A-c可编程中断控制器8259Ap IBM PC/XT的中断指令p DOS系统功能调⽤p BIOS中断类型p8259A的中断级联p IBM PC/AT的中断级联p8259A的应⽤举例p8259A的编程⽅法中⼭⼤学信息科学与技术学院陈任IBM PC/XT中的中断指令(1) 8086/8088系统中与中断有关的专⽤指令。
1.INT n 软件中断指令(Interrupt)-软件中断指令,也称为软中断指令,其中n为中断类型号,其值必须在0~255的范围内。
-可在编程时安排在程序中的任何位置上,因此也被称为陷阱中断。
-CPU执⾏INT n指令时,先把标志寄存器的内容推⼊堆栈,再把当前断点的段基地址CS和偏移地址IP⼊栈保护,并清除中断标志IF和单步标志TF。
-然后将中断类型号n乘以4,找到中断服务程序的⼊⼝地址表的表头地址,从中断⽮量表中获得中断服务程序的⼊⼝地址,将其置⼊CS和IP寄存器,CPU就⾃动转到相应的中断服务程序去执⾏。
-原则上讲,利⽤INT n指令能以软件的⽅法调⽤所有256个中断的服务程序,尽管其中有些中断实际上是由硬件触发的。
因此可以利⽤这条指令来调试各种中断服务程序。
-例如,可⽤INT 0指令让CPU执⾏除法出错中断服务程序,可⽤INT 2指令执⾏NMI中断服务程序,⽽不必在NMI引脚上加外部信号。
IBM PC/XT中的中断指令(2)1. INT n 软件中断指令(Interrupt)2. INTO 溢出中断指令(Interrupt On Overflow)-当带符号数进⾏算术运算时,如果溢出标志OF置1,则可由溢出中断指令INTO产⽣类型为4的中断,若OF清零,则INTO指令不产⽣中断,CPU继续执⾏后续程序。
-在带符号数进⾏加减法运算之后,必须安排⼀条INTO指令,⼀旦溢出就能及时向CPU提出中断请求,CPU响应后可作出相应的处理,如显⽰出错信息,使运算结果⽆效等。
微机原理与汇编语言_实验5_8259中断控制器实验概论
微机原理与汇编语言实验报告姓名x x x学号xxxxxx 专业班级计科x班课程名称微机原理与汇编语言实验日期2014.11.25 实验名称8259中断控制器实验成绩1、掌握8259A的工作原理。
2、掌握编写中断服务程序方法。
3、掌握初始化中断向量的方法。
二、实验内容1、实验原理本实验用到三部分电路:电平开关电路、简单I/O口扩展电路和8259中断控制器电路。
电平开关电路简单io扩展电路8259中断控制器电路1)电平开关电路开关量输入电路由8只开关组成,每只开关有两个位置H和L,一个位置代表高电平,一个位置代表低电平。
对应的插孔是:K1~K8。
2)扩展输出口扩展输出接口由74LS273构成,74LS273的输出信号由插孔O0~O7输出,插孔CS273是其选通信号,其它信号线已接好。
3)8259中断控制电路CS8259是8259芯片的片选插孔,IR0~IR7是8259的中断申请输入插孔。
DDBUS是系统8位数据总线。
INT插孔是8259向8086CPU的中断申请线,INTA是8086的中断应答信号。
2、实验步骤1)实验接线CS0↔CS8259 CS1↔CS273 O0~O7↔LED1~LED8 K1~K8↔IR0~IR7 INT↔INTR INTA↔QINTACS0 片选信号,地址04A0~04AF 偶地址有效CS1 片选信号,地址04B0~04BF 偶地址有效CS2 片选信号,地址04C0~04CF 偶地址有效CS3 片选信号,地址04D0~04DF 偶地址有效CS4 片选信号,地址04E0~04EF 偶地址有效CS5 片选信号,地址04F0~04FF 偶地址有效CS6 片选信号,地址0000~01FF 偶地址有效CS7 片选信号,地址0200~03FF 偶地址有效关于偶地址有效当8259片选连接CS0时,因访问端口时地址位A0的值必须为1,由A1地址位来区分两个端口吗,因此,偶地址:04A0,04A4…奇地址:04A2,04A6…2)编译调试程序3)全速运行程序,拨动某一电平开关,观察LED的亮灭情况。
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
38
第八章 中断与可编程中断控制器8259A
39
出现IR2、IR4
主程序 …… …… …… …… …… …… ……
IR2服务 …
S…TI … CLI P…OP… EOI IRET
出现IR1 IR1服务 IR4服务 … S…TI CLI P…OP… EOI IRET
第八章 中断与可编程中断控制器8259A
微机原理与接口技术
第八章 中断与可编程 中断控制器8259A
第八章 中断与可编程中断控制器8259A
2
本章内容
第八章 中断与可编程中断控制器8259A
3
第八章 中断与可编程中断控制器8259A
4
第八章 中断与可编程中断控制器8259A
5
二、中断源和中断分类
第八章 中断与可编程中断控制器8259A
G B7 B6 B5 B4 B3 B2 B1 B0
CLK RD
INTA
接 CPU 的 D7 ~ D0
CPU从D2D1D0读取 7当4L前S2优45先方级向最高的 始中终断是类A型B码
第八章 中断与可编程中断控制器8259A
29
第八章 中断与可编程中断控制器8259A
30
(二)中断嵌套
第八章 中断与可编程中断控制器8259A
28
利用74LS148编码器构成的优先权排队电路示意图
74LS245的 方向是AB
+5V
D Q INTR
假设中断请求 信号低有效
INT 7 INT 6
II7 6
Eo
INT 5 I5
INT 4 I4
A2
INT 3 I3
A1
INT 2 I2
A0
实验3 8259中断控制器实验(20131104)
实验三、8259中断控制器实验1.实验目的(1).掌握中断控制器8259 IP核的工作原理,熟悉对8259的初始化设置。
(2).掌握中断服务程序的编写方法。
(3).掌握程序固化及脱机运行程序的方法。
2.实验原理8259的工作原理。
参考微机原理与接口技术相关教材。
使用中断控制器8259,首先要对8259初始化,对初始化命令字ICW1~ICW4进行设置,初始化命令字的格式如表3-1所示。
8259 - P rogrammble Intrrupt Controller图3-1 8259 可编程中断控制器表3-1 初始化命令字ICW1~ICW4数据格式:子程序的入口地址写入中断向量表。
另外要编写相关的中断服务子程序。
8259的端口地址如下:PIC_ICW1 EQU 20HPIC_ICW2 EQU 21HPIC_ICW3 EQU 21HPIC_ICW4 EQU 21Hppt 8255的端口地址是:port A 378h ;PA接2个LED数码管port B 379h ;PB接8个LED 发光二极管port C 37ah ;PC口ppt_ctrl 37bh ;控制字口ppi 8255的端口地址是:port A 060h ;PA接4×4键盘和LCD液晶模块port B 061h ;PB 最低位控制计数器2门控信号port C 062h ;PC pc.0控制ppi portA 输入使能ppt_ctrl 063h ;控制字口定时器/计数器8254的端口地址:PIT_CNT0 EQU 40HPIT_CNT1 EQU 41HPIT_CNT2 EQU 42HPIT_CTRL EQU 43H3.实验内容(1)中断计数显示程序本实验主要验证中断控制器8259的中断控制功能。
中断请求信号由按键产生,该按键向8259的IR1发出中断请求,每中断一次,寄存器加1计数,并通过8255的PA口外接的数码管显示出中断的次数。
PA 口输出使能由PC口最低位控制。
微机实践报告——8259中断控制
实验六 8259中断控制(1)一、实验目的1. 学习8086/8088 CPU中断系统的知识。
2. 学习8259中断控制器的使用。
二、实验内容编写程序,使8255的A口控制LED灯。
CPU执行主程序时四个绿灯亮。
用“”作为8259的IR3的输入信号,向CPU请求中断。
CPU在中断服务程序中熄灭绿灯,并使4个红灯亮。
中断服务程序结束,又返回主程序,再使绿灯亮。
三、实验区域电路连接图8259的INT连8088的INTR(Xl5);8259的INTA连8088的INTA(Xl2);“”插孔和8259的3号中断IR3插孔相连;(单脉冲与时钟单元);8259的CS端接EX1(60H);连JX4→JX17。
IOWR→IOWR;IORD→IORD;A0→A0;PA0…PA3→L2,L6,L10,L14; PA4…PA7→L3,L7,L11,L15。
四、实验步骤1、按连线图接好,检查无误后打开试验箱电源。
通过在计算机上进行设置将试验箱与电脑连接。
2、根据功能要求在 PC 端软件开发平台上编写程序代码,编译通过后下载到试验箱。
在试验箱上检测程序运行的结果。
3、在试验箱上检测程序运行的结果。
即运行程序后,绿色LED灯点亮表面程序运行在主程序。
按下AN开关按钮,应当红色LED灯亮,绿色LED灯灭,表明在执行中断服务程序;过一会儿红灯熄灭了,绿灯又亮了起来,表明中断服务程序已返回了主程序。
4、如果运行结果不正确就要检查连线和程序,修改直到正确。
五、程序框图六、程序代码CODE SEGMENTASSUME CS:CODEINTPORT1 EQU 0060HINTPORT2 EQU 0061HINTQ3 EQU INTREEUP3INTCNT DB ?ORG 1200HSTART:CLDMOV DX,0FF2BHMOV AL,80H/设置8255方式字为10000000/OUT DX,ALCALL WRINTVERMOV AL,13HMOV DX,INTPORT1OUT DX,ALMOV AL,08HMOV DX,INTPORT2OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0F7HOUT DX,ALMOV INTCNT,01HSTI/开中断/WATING:MOV DX,0FF28HMOV AL,0F0HOUT DX,ALJMP WATING/跳转到WATING,使绿灯持续亮/ WRINTVER:MOV AX,0HMOV ES,AXMOV DI,002CHLEA AX,INTQ3STOSW/送偏移地址/MOV AX,0000HSTOSW/送段地址/RETINTREEUP3:CLI/关中断/PUSH AXPUSH DX /现场保护/MOV DX,0FF28HMOV AL,0FHOUT DX,ALMOV BL,0FHDELAY: MOV AX,0FFFFHDELAY1:DEC AXJNZ DELAY1DEC BLJNZ DELAYINTRE2:MOV AL,20HMOV DX,INTPORT1OUT DX,ALPOP DXPOP AXSTI/开中断/IRETCODE ENDSEND START。
8259中断控制器
8259中断控制器是一个集成电路芯片, 8259中断控制器是一个集成电路芯片,它将中断接口与 中断控制器是一个集成电路芯片 优先级判断等功能汇集于身,常用于微型机系统. 优先级判断等功能汇集于身,常用于微型机系统.其内部 结构如下页图所示. 结构如下页图所示. 8位中断请求寄存器(IR)接受8个外部设备送来的中断请 位中断请求寄存器(IR)接受 接受8 求,每一位对应一个设备. 每一位对应一个设备. 中断请求寄存器的各位送入优先权判断器,根据中断屏蔽 中断请求寄存器的各位送入优先权判断器, 寄存器(IM)各位的状态来决定最高优先级的中断请求 各位的状态来决定最高优先级的中断请求, 寄存器(IM)各位的状态来决定最高优先级的中断请求,并 将各位的状态送入中断状态寄存器(IS). IS保存着判优 将各位的状态送入中断状态寄存器(IS). IS保存着判优 结果.由控制逻辑向CPU发出中断请求信号 发出中断请求信号INT, 结果.由控制逻辑向CPU发出中断请求信号INT,并接受 CPU的中断响应信号 CPU的中断响应信号INTA. 的中断响应信号INTA. 数据缓冲器用于保存CPU内部总线与系统数据总线之间进 数据缓冲器用于保存CPU内部总线与系统数据总线之间进 行传送的数据. 写逻辑决定数据传送的方向, 行传送的数据.读/写逻辑决定数据传送的方向,其中为 读控制,为写控制,为设备选择,A0为I/O端口识别 端口识别. 读控制,为写控制,为设备选择,A0为I/O端口识别.
详细分类的话,pentium共有 共有256种中断和异常 种中断和异常。 详细分类的话,pentium共有256种中断和异常。每种中 断给予一个编号,称为中断向量号(0—255), 断给予一个编号,称为中断向量号(0—255),以便发生 中断时,程序转向相应的中断服务子程序入口地址。 中断时,程序转向相应的中断服务子程序入口地址。 当有一个以上的异常或中断发生时,CPU以一个预先确 当有一个以上的异常或中断发生时,CPU以一个预先确 定的优先顺序为它们先后进行服务。中断优先级分为5 定的优先顺序为它们先后进行服务。中断优先级分为5级。 异常中断的优先级高于外部中断的级,这是因为异常中断 异常中断的优先级高于外部中断的级, 发生在取一条指令或译码一条指令或执行一条指令时出现 故障的情况下,情况更为紧急。 故障的情况下,情况更为紧急。 2.中断服务子程序进入过程 中断服务子程序进入过程 中断服务子程序的入口地址信息存于中断向量号检索表 实模式为中断向量表IVT, 内。实模式为中断向量表IVT,保护模式为中断描述符表 IDT。 IDT。 CPU识别中断类型取得中断向量号的途径有三种: 识别中断类型取得中断向量号的途径有三种: (1)指令给出 如软件中断指令INT 中的n (1)指令给出,如软件中断指令INT n 中的n即为中断向 指令给出, 量号。 量号。
8259中断控制器实验的实验报告
8259中断控制器实验的实验报告实验报告:8259中断控制器实验一、实验目的本实验的目的是通过对8259中断控制器的实验,掌握和理解8259中断控制器的原理、工作原理和使用方法。
通过实验能够进一步了解中断控制器的中断分配和中断处理等功能。
同时还能够通过实验,对中断优先级以及中断的屏蔽和响应进行深入了解。
二、实验原理1.8259中断控制器简介8259中断控制器是用于管理和控制多个硬件设备的中断请求的重要芯片。
它是一个具有8个中断请求输入和8个中断向CPU输出的优先级解码器。
中断控制器主要由两个部分组成:中断请求器部分和中断控制器部分。
中断请求器部分用于产生中断请求信号,而中断控制器部分用于优先级解码和中断分配。
2.8259中断控制器的工作原理8259中断控制器可以管理多个硬件设备的中断请求,同时对中断信号进行优先级判断和派发给CPU进行相应处理。
当一些硬件设备发生中断时,会发送中断请求信号给8259中断控制器,然后8259将根据中断请求的优先级判断是否屏蔽或者响应该中断请求。
3.8259中断控制器的使用方法在使用8259中断控制器时,首先需要设置中断控制器的工作模式和中断请求的优先级,然后对中断控制器的屏蔽和响应进行相应的配置。
使用中断控制器时,还需要对中断服务程序进行适当的编程,以实现中断的处理逻辑。
三、实验步骤1.实验前的准备工作(1)准备实验所需的开发板和8259中断控制器。
(2)将8259中断控制器与相应的硬件设备连接。
(3)准备PC机和开发板的通信线缆。
2.8259中断控制器的设置和初始化(1)通过编程方式将8259中断控制器设置为特定的工作模式。
(2)设置中断请求(IRQ)的优先级。
3.中断服务程序的编写(1)根据需求编写中断服务程序,即中断处理逻辑。
(2)将中断服务程序与8259中断控制器的相应中断请求进行关联。
4.实验结果的观察和分析(1)观察测试硬件设备的输出结果。
(2)分析实验结果,判断是否成功实现中断控制和处理。
接口技术实验-8259中断控制器
接口技术实验报告实验四:8259中断控制器实验一、实验目的1、掌握8259中断控制器的接口方法。
2、掌握8259中断控制器的应用编程。
二、实验设备微机原理实验箱、8086CPU模块。
三、实验内容用脉冲发生器作为中断源,每按一次脉冲发生器的按键即产生一次中断。
在中断服务程序中,通过74LS273输出一个数据,以点亮与中断源相对应位置的LED。
四、实验原理介绍8259中断控制器电路本实验用到三部分电路:电平开关电路、简单I/O口扩展电路和8259中断控制器电路。
电平开关电路、简单I/O口扩展电路参看实验一。
8259中断控制器电路:如上图所示,其中:CS是8259芯片的片选插孔,IR0~IR7是8259的中断申请输入插孔。
DBUS是系统8位数据总线。
INT插孔是8259向8086CPU的中断申请线,INTA是8086的中断应答信号。
五、实验步骤1.断电连接导线,连好实验线路图。
1)8259的INT连8088的INTR;2)8259的INTA连8088的INTA;3)“”插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;4)8259的CS端接FF80H孔,74LS273的CS端接FF90H孔。
5)Q0~Q7 L1~L82.编译调试程序3.全速运行,观察实验现象六、实验提示1、8259芯片介绍中断控制器8259A是专为控制优先级中断而设计的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。
因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。
即中断结构可以由用户编程来设定。
同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。
2、8086的中断系统是向量中断方式。
内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量(中断入口地址)。
不同中断类型的中断向量在表内有对应的偏移地址,其计算方法是:中断类型*4。
第八章 中断控制器8259.讲义
第八章中断控制技术和8259第一节中断控制技术补充一中断处理的隐操作及堆栈的使用⒈隐操作CPU响应中断转去执行中断服务程序之前,其状态标志和程序断点地址进栈,以及中断返回时,断点和标志信息的退栈,是由机器硬件安排自动完成的,无需外界干预,故称为中断处理的隐操作,这些操作都使用堆栈。
⒉堆栈堆栈是一种专用的"后进先出"(LIFO)的存储区,用来保存断点、现场信息及传递子程序所需的参数,广泛用于中断处理、子程序调用及返回处理。
8088/8086的堆栈设置在存储器中,由SS堆栈段寄存器和SP堆栈指针来定位。
SS指向当前栈的段基址,是栈区的最低地址。
SP包含距段基址的偏移地址,也称为堆栈的深度,一个栈最大的深度只能占有64KB空间。
SP作为堆栈指针始终指向栈顶(TOS),栈顶在程序执行过程中,随着进栈(PUSH)与退栈(POP)操作而发生变化,有所谓向下生长和向上生长之分。
8088/8086的堆栈是向下生长型,即在进栈操作时,栈顶向下生长,使堆栈的地址单元号从大到小,递减2,趋向堆栈段基址SS;在退栈操作时,堆栈地址单元号从小到大,递增2,趋向栈底,空栈时,SP指向堆栈段的最高地址,即栈底。
栈底也就是SP的初值,栈底一经设定就固定不变。
⒊堆栈操作①建栈操作STACK1 SEGMENT STACKBUFFER DB 30 DUP(0)TOP_STACK LABEL WORDSTACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1START:┆MOV AX,STACK1MOV SS,AX ;将当前堆栈段基址送入SSMOV SP,TOP_STACK ;将堆栈段偏移地址送入SP┆②进栈操作PUSH AXPUSH BX③弹栈操作POP AXPOP BX二中断向量的装入中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量区的。
BIOS程序负责0~1FH共32个中断向量的装入。
微机原理与接口技术-中断8259
•前两个单元存放中断向量的偏移地址(IP)
•后两个单元存放中断向量的段地址 (CS)
中断类型码与中断向量在中断向量中所在位置 (中断向量地址)之间的对应关系为: 中断向量地址=4×中断类型码 例: 0C号中断向量地址=4 ×0CH=30H
30H(IPL) 31H(IPH) 32H(CSL) 33H(CSH)
中 断 向 量 表
00H 中断向量
003FCH 003FDH 003FEH 003FFH
FFH 中断向量
8086/8088的中断向量表由三个部分组成: •5个专用中断(0#~4#),用户不能对其修改 •27个系统使用或保留中断(5#~31#),这是 Intel公司保留的中断指针,用户不应使用
•224个用户定义中断(32#~255#),为用户 使用的中断指针,它可由用户指定
0
0 0
中断优先级和中断嵌套
1. 中断优先级
2. 中断优先级的确定 •软件查询法
•硬件排队电路
•软件查询法
4.中断嵌套
4.2 8086/8088中断系统
1 中断类型
8086/8088系列微机有一个简单而灵活的中断系 统,可以处理256个不同类型的中断源,每个中 断源都有一个中断类型码供CPU识别。 •外部中断: 中断源来自CPU外部 •内部中断: 中断源来自CPU内部
MOV OUT IN
AL, 0CH 20H, AL AL, 20H
特定屏蔽管理:
ESMM SMM
功能
0
1 1
*
0 1
该操作对特殊屏蔽无效
取消特定屏蔽 设置特定屏蔽
取消方法:
用OCW3取消特定屏蔽, 用OCW1取消被屏蔽的IR。
(14)中断及中断控制器82596.2.1
第12页
电气工程学院
① 用程序设置中断向量表 假设中断类型号为32H,断服务程序入口处的标号为INTSUB。
、、、
CLI MOV MOV MOV LEA CLD STOSW AX,0 ES,AX DI,4*32H AX,INTSUB ;关中断 ;0段
MOV STOSW
、、、
AX,SEG
;0段内偏移地址 ;取入口地址的偏移地址 ;增址 ;把入口地址的偏移地址存入 ;0000:4*32 字单元 INTSUB ;取入口地址的段基址 ;把入口地址的段基址存入 ;0000:4*32+2 字单元 中断向量表 ES 0段
51 00
IP
CS
00
01
N FFH
N×4 03FCH 0000:03FCH
0000:03FFH
CPU根据中断源提供的标识码(即:中断类型号,中断向量号)即可在中断向量表中找到该 中断源的中断服务程序入口地址。 在硬中断中,向CPU提供中断源识别码是中断技术的关键。需要硬软件的有机配合。 8259A可编程中断控制器用于管理中断,向CPU提供标识码(中断向量号、中断类型号)
电气工程学院
6.2 中断及中断控制器8259
6.2.1 中断的基本概念 (1)什么是中断
在日常生活中,中断现象俯拾皆是…… 在计算机系统中,一个CPU要处理若干事务:数据采集,运算,显示,处理突发事件,通 信,打印…….。这就要求采用中断技术,才能作到面面俱到而又不误突发事件的处理时机。 计算机用于测控领域,必然涉及中断。在计算机中,中断的含义很狭窄: 从程序执行的角度看:CPU正在执行的当前程序被外设打断,转而执行为外设服务的所谓 “中断服务程序”(ISR:Interrupt Service Routine)。
中断控制器8259A及中断服务
实验内容:中断控制器8259A及中断服务1、实验连线原理见图1所示:8259A连线:(1)单脉冲与时钟单元“”插孔和8259的3号中断IR3插孔相连作为中断源;(2)8259的INT连8088的INTR(Xl5);(3)8259的INTA连8088的INTA(Xl2);(4)8259的CS端接EX1(8259A端口地址是60H,61H);(5)A0→A0。
(6)IOWR→IOWR;(7)IORD→IORD;(8)连通CPU和8259A的数据总线,JX4→JX17。
8255连线:(1)将8255的A端口的PA7到PA0连接到灯L1~L8上。
图1:实验连线图2、实验原理:按动按键AN0后,单脉冲与时钟单元部件会产生“”信号,该信号的上升沿作为中断请求送8259A的IR3引脚,如果8259A没有屏蔽该级中断并且其优先级最高,8259A向CPU的INTR引脚送中断,CPU如果允许响应中断,则进入中断处理子程序,中断处理子程序向8255A的A端口送数据,将灯L1~L8点亮1秒。
3、实验要求:单片8259A以缓冲方式连接数据总线,以上升沿作为中断请求信号,中断源通过IR3引入,优先级采用一般全嵌套方式,非自动中断结束方式,引脚IR0~IR7的中断类型号为08F~0FH,编写一个汇编程序,主程序完成8255和8259A的初始化,循环等待中断请求;中断处理子程序将灯点亮1秒后熄灭。
4、端口地址:5、系统内存分配:5、程序结构:CODE SEGMENTASSUME CS:CODEMAIN PROCSTART: ;主过程;初始化8259;初始化8255;调用3号中断 MAIN ENDPINT3 PRCO……;中断处理子程序 INT3 ENDPDELAY PROC…… ;延时子过程DELAY ENDPCODE ENDSEND6、程序流程图主程序代码:PA EQU 0FF28H ;8255A端口地址标号定义 PB EQU 0FF29HPC EQU 0FF2AHPCTL EQU 0FF2BHINTPORT1 EQU 0060H ;8259控制口地址标号定义 INTPORT2 EQU 0061HCODE SEGMENTASSUME CS:CODEORG 1000HMAIN PROCSTART: CLI ;CPU关中断MOV AL,80H ;初始化8255MOV DX,0FF2BHOUT DX,ALPUSH DS ;保护DSMOV AX,0MOV DS,AXMOV DI,0B*4MOV DX,OFFSET INT3MOV WORD PTR[DI],DXMOV DX,SEG INT3MOV WORD PTR[DI+2],DXPOP DS ;恢复DSMOV AL,13H ;初始化8259AOUT 60H,ALMOV AL,08HOUT 61H,ALMOV AL,0DHout 61H,ALMOV AL,0F7HOUT DX,AL ;开放8259A中断STI ;CPU开中断HLTWATING: JMP WATING ;循环等待中断请求MAIN ENDPINT3 PROCPUSH DXPUSH AX ;保护现场STIMOV DX,PAMOV AL,00HOUT DX,AL ;灯全亮CALL DELAY1S ;延时子程序MOV AL,0FFHOUT DX,AL ;灯全灭MOV DX,INTPORT1MOV AL,20HOUT DX,AL ;送中断结束命令 CLIPOP AXPOP DX ;恢复现场MOV AL,20HOUT 60H,ALIRET ;中断返回INT3 ENDPDELAY1S PROCPUSH CXPUSH DXMOV DX,04AGAIN: MOV CX,0FFFFHDELAY: LOOP DELAYDEC DXJNZ AGAINPOP DXPOP CXRETDELAY1S ENDPCODE ENDSEND START。
实验九 中断控制器8259实验
初始化
附录3 发送到LED的值 附录3 发送到LED的值
�
思考题
① 将A口改为B口,应如何修改程序 口改为B
和连线?
② 修改程序,使之向发光二极管输出的同 修改程序, 时,在显示器上同步输出.
附录1 几个DOS 附录1 几个DOS中断 DOS中断
功能01H,07H和 功能01H,07H和08H 功能描述:从标准输入设备(如:键盘) 功能描述:从标准输入设备(如:键盘)读入一个字 符.该中断在处理过程中将一直处于等待状态直 到有字符可读为止.该输入还可被重定向,如果 这样做,则无法判断文件是否已到文件尾 入口参数:AH=01H,过滤掉控制字符,并回显 入口参数:AH=01H,过滤掉控制字符,并回显 =07H,不过滤掉控制字符,不回显 =07H,不过滤掉控制字符,不回显 =08H,过滤掉控制字符,不回显 =08H,过滤掉控制字符,不回显 出口参数:AL=输入字符的ASCII码 出口参数:AL=输入字符的ASCII码
;LED灯熄灭
MOV AX,3572H INT 21H MOV INT0A_OFF,BX MOV BX,ES MOV INT0A_SEG,BX CLI MOV AX,2572H MOV DX,SEG LEDLIGHT PUSH DS MOV DS,DX MOV DX,OFFSET LEDLIGHT INT 21H POP DS STI IN AL,0A1H AND AL,0FBH OUT 0A1H,AL IN AL,21H AND AL,0FBH OUT 21H,AL
8259主片和从片简图 8259主片和从片简图
第八章 中断控制器8259.讲义
第八章中断控制技术和8259第一节中断控制技术补充一中断处理的隐操作及堆栈的使用⒈隐操作CPU响应中断转去执行中断服务程序之前,其状态标志和程序断点地址进栈,以及中断返回时,断点和标志信息的退栈,是由机器硬件安排自动完成的,无需外界干预,故称为中断处理的隐操作,这些操作都使用堆栈。
⒉堆栈堆栈是一种专用的"后进先出"(LIFO)的存储区,用来保存断点、现场信息及传递子程序所需的参数,广泛用于中断处理、子程序调用及返回处理。
8088/8086的堆栈设置在存储器中,由SS堆栈段寄存器和SP堆栈指针来定位。
SS指向当前栈的段基址,是栈区的最低地址。
SP包含距段基址的偏移地址,也称为堆栈的深度,一个栈最大的深度只能占有64KB空间。
SP作为堆栈指针始终指向栈顶(TOS),栈顶在程序执行过程中,随着进栈(PUSH)与退栈(POP)操作而发生变化,有所谓向下生长和向上生长之分。
8088/8086的堆栈是向下生长型,即在进栈操作时,栈顶向下生长,使堆栈的地址单元号从大到小,递减2,趋向堆栈段基址SS;在退栈操作时,堆栈地址单元号从小到大,递增2,趋向栈底,空栈时,SP指向堆栈段的最高地址,即栈底。
栈底也就是SP的初值,栈底一经设定就固定不变。
⒊堆栈操作①建栈操作STACK1 SEGMENT STACKBUFFER DB 30 DUP(0)TOP_STACK LABEL WORDSTACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1START:┆MOV AX,STACK1MOV SS,AX ;将当前堆栈段基址送入SSMOV SP,TOP_STACK ;将堆栈段偏移地址送入SP┆②进栈操作PUSH AXPUSH BX③弹栈操作POP AXPOP BX二中断向量的装入中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量区的。
BIOS程序负责0~1FH共32个中断向量的装入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8259有4个初始化控制字,3个操作控制字。
三个重要的寄存器:中断服务寄存器、中断屏蔽寄存器、中断请求寄存器
中断请求寄存器:发出中断请求的设备
中断屏蔽寄存器:被屏蔽中断的设备
中断服务寄存器:正在被响应中断的设备
8086处理器芯片有INTR和NMI引脚,用来接收中断请求,会通过INTA引脚来发回中断响应。
INTR是可以屏蔽的中断,NMI是不可屏蔽的中断。
都是输入高电平时有效。
INT 02H是已经分配的NMI中断。
INTR接收的中断的处理程序没有在中断向量中初始化,需要我们自己初始化。
INT 00:除法出错
INT 01:单步执行
也可以把TF标志位设置为1,标志寄存器不能直接进行赋值,所以要通过堆栈来赋值。
INT 03:断点中断
遇到INT 03则中断程序执行
INT 04:有符号数溢出中断
指令:INTO,如果OF为1,则执行INT 04中断
如何编写自己的中断服务程序
AH = 35H,INT 21H,可以获取中断向量表中,中断号为AL的中断服务程序的入口地址。
返回值在ES和BX中。
AH = 25H,INT 21H,可以设置中断向量表,可以把我们写的中断服务程序的入口地址写入到中断向量表中。
入口地址通过DS:DX传递进去。
中断服务程序的返回是IRET
中断的优先级
一般情况下会给不同的IO设备分配不同的优先级,如果同时有中断请求,则先处理优先级高的中断请求。
优先级低的中断请求在执行的时候,优先级高的中断请求可以把优先级低的中断请求打断。
中断屏蔽位:对于不同优先级的中断请求
假设有4个中断设备,则设置4个位表示这4个设备发出的请求是否能被响应,如果该位是1,则不能响应,如果是0则能够响应。
8259芯片:可编程中断控制器
8086处理器只有一个INTR来接收中断请求信号,如果直接接收则只能接收一个外设的中断请求。
用8259芯片来扩展。
8259可以接收8路中断请求信号,IR0最低,IR7最高
8259是处理器的一个外设,也需要分配端口地址。
8259进行级联之后可以扩大接收中断请求的信号的数量,一个主片可以接收8个从片的请求。
最多两级,所以最多只能接收64个外设的中断请求。
8259控制字和端口
8259有4个初始化控制字ICW,3个操作控制字OCW
IMR:中断屏蔽寄存器
ICW2是必须初始化的,总共8位正好是0到FF,代表中断号。
ICW3和ICW4是可选的,根据ICW1的D0和D1来判断是否需要初始化
ICW3只有在级联的时候才需要初始化,从片的ICW3A的最后3位代表它是连接到主片的第几个IR中。
ICW4的D4用来控制是否能接收来自同一个引脚的不同请求,一般是不能打断的,设置为1代表特殊的完全嵌套模式,是可以打断的。
这样的设置一般是用在级联中,连向IR2的从片的7个IR发送中断请求都是发送向主片的IR2的,假如从片的IR3发出中断请求,然后在处理它的时候,从片的IR2又发出请求,则要打断前面的,对于主片来讲,它的同样输入到IR2的中断请求,所以要设置为特殊的完全嵌套模式来打断中断服务。
EOI:中断结束
中断结束并不是简单的中断服务程序执行到IRET,还要相应把各个寄存器恢复到初始状态,比如ISR要恢复为0
OCW1:A0为1,对奇数地址的写入,通过对OCW1的写入,可以屏蔽中断。
OCW2:A0为0,D4和D3为00。