第八章 中断控制器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 STACK

BUFFER DB 30 DUP(0)

TOP_STACK LABEL WORD

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK1

START:

MOV AX,STACK1

MOV SS,AX ;将当前堆栈段基址送入SS

MOV SP,TOP_STACK ;将堆栈段偏移地址送入SP

②进栈操作

PUSH AX

PUSH BX

③弹栈操作

POP AX

POP BX

二中断向量的装入

中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量区的。 BIOS程序负责0~1FH共32个中断向量的装入。用户若想使用硬、软中断,则要将中断服务程序入口地址装入中断向量指针所指定的中断向量表中。下面举例说明填写中断向量表所用的三种方式:

⒈用MOV指令填写中断向量表。例如,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移地址是OFFSET_INTR(006DH)。则填写中断向量表的程序段为:

CLI

CLD

MOV AX,0

MOV ES,AX

MOV DI,4*60H ;中断向量指针→DI

MOV AX,OFFSET_INTR ;中断服务程序偏移值→AX

STOSW ;AX→[DI][DI+1]中,然后DI+2

MOV AX, SEG_INTR ;中断服务程序的段基址→AX

STOSW ;AX→[DI+2][DI+3]

STI

⒉将中断服务程序的入口地址直接写入中断向量表,其程序段为:

MOV AX,00H

MOV ES,AX

MOV BX,60H*4 ;中断号*4→BX

MOV AX,006DH ;中断服务程序偏移地址

MOV ES:[BX],AX ;装入偏移地址

PUSH CS

POP AX ;中断服务程序段基址

MOV ES:[BX+2],AX ;装入段基址

⒊采用DOS功能调用"INT 21H"中的AH=25H来装入中断向量,其程序段为:

MOV AL,N ;中断号

MOV AH,25H ;设置中断向量

MOV DX,SEG_INTR

MOV DS, DX ;DS指向中断程序段址

MOV DX, OFFET_INTR ;DX指向中断程序偏移量

INT 21H

三编写中断服务程序

?编写内部中断服务程序与编写子程序类似

?利用过程定义伪指令PROC/ENDP

?第1条指令通常为开中断指令STI

?最后用中断返回指令IRET

?通常采用寄存器传递参数

?主程序需要调用中断服务程序

?调用前,需要设置中断向量

?利用INT n指令调用中断服务程序

?编写80H号中断服务程序

?功能:显示以“0”结尾字符串的功能

?利用显示器功能调用INT 10H

?字符串缓冲区首地址为入口参数

?DS:DX(段地址:偏移地址)传递参数

code segment

assume cs:code,ds,code

intoff dw ?

intseg dw ?

intmsg db ‘A Instruction Interrupt !’

db 0dh,0ah,0

start: mov ax,code

mov ds,ax

mov ax,3580h

int 21h

mov intoff,bx ;保存偏移地址

mov intseg,es ;保存段基地址

push ds

mov dx,offset new80h

mov ax,seg new80h

mov ds,ax

mov ax,2580h

int 21h

pop ds

mov dx,offset intmsg

int 80h

new80h proc

sti ;开中断

push ax ;保护寄存器

push bx

push si

mov si,dx

new1: mov al,[si]

cmp al,0

jz new2

mov bx,0

mov ah,0eh

int 10h

inc si

jmp new1

new2: pop si ;恢复寄存器

pop bx

pop ax

iret ;中断返回

new80h endp

mov dx,intoff

mov ax,intseg

mov ds,ax

mov ax,2580h

int 21h

mov ax,4c00h

int 21h

code ends

end start

第二节中断控制器8259A

一 8259A简介

⒈概述

Intel 8259A是可编程中断控制器PIC,可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断。

⒉ 8259A的基本功能

①优先级排队管理:根据任务的轻重缓急或

设备的特殊要求,分配中断源的中断等级。8259A

具有全嵌套、循环优先级、特定屏蔽多种方式的

优先级排队管理。

②接受外部设备的中断请求:经过优先权判

决找到哪一个中断源的中断请求级别最高,然后

再向CPU提出中断申请INT;或者拒绝外设的中

断请求,予以屏蔽。一片8259A可以接受8个中

断请求,经过级联可扩展至8片8259A,实现64

级中断。

③提供中断类型号:为CPU实现程序的转移

给出中断服务程序入口地址指针。8259A最突出

的特点是具有对中断服务程序入口地址的寻址能

力,也就是当CPU响应中断申请时,通过8259A提供的中断类型号可以找到中断服务程序的入口地址,转移到中断服务程序去执行。

二 8259A的外部特性和内部结构

⒈外部特性

8259A为28脚双列直插式芯片。外部引脚如上图所示。各引脚的功能如下表所示。

8259A引脚定义及功能表

⒉内部结构

①中断请求寄存器IRR

8位,每一位对应一个I/O设备,用来记录发生中断请求的外设。当某一外设(I/O设备)发出中断请求信号IRQ时,对应位被置“1”。简言之:用来存放要请求服务的所有中断请求信号。

②中断服务寄存器ISR

8位,用来存放正在被服务,包括尚未服务完毕而中途被别的中断打断了的所有中断级。

③优先权判决电路PR

用来识别各中断请求信号的优先级别。当多个中断请求信号同时产生时,由判优电路判定哪一个中断请求具有最高优先权,若有中断正在被服务,则还需与ISR的当前中断服务优先级相比较,以决定是否将8259A的中断申请线INT上升为高电平。

④中断屏蔽寄存器IMR

IMR对IRR起屏蔽作用,即对中断请求IR是禁止还是允许。寄存器8位(D0~D7)对应8级中断屏蔽。哪一级中断被屏蔽,哪位就写1,即禁止IR 提出中断请求;反之,就写0,不屏蔽,即允许IR提出中断请求。屏蔽操作由屏蔽命令OCW1执行。 IMR可很方便地读和写。

⑤控制逻辑

用于向8259A内部其它部件发控制信号,外部向CPU发INT信号,接收CPU

发来的INT A信号,控制8259A进入中断服务状态。

控制逻辑是8259A全部功能的核心,包括一组方式控制字寄存器和一组操作命令字寄存器,以及相关的控制电路。

⑥数据总线缓冲器

8位双向三态缓冲器,是8259A与CPU之间数据接口。当CPU对8259A进行读操作时,数据总线缓冲器用来传输从8259A内部读至CPU的数据/状态信息和中断类型码,写操作时由CPU向8259A内部写入控制命令字。

⑦读/写控制逻辑

用于控制对8259A的读、写操作。

控制信号有:RD、WR、CS、A0共同控制,完成规定的操作。

8259A芯片内可写的寄存器有:各种命令寄存器,可读的寄存器有:IRR、ISR、IMR等状态寄存器。具体参考下表。

⑧级连缓冲器

多片8259A可级连使用,最多可以组成64级中断优先级控制,此时一片8259A作主片,另外1~8片作从片,主从片的CAS0~CAS2并接在一起,作为

级连总线。

在中断响应过程中,主片的CAS0~CAS2为输出线,从片的CAS0~CAS2为输入线。在第一个INT A负脉冲结束时,主片把被响应的中断请求的从片编码送入CAS0~CAS2级连总线。从片接收后,将主片送来的编码与自己的编码相比较,若相同,表明从片被选中,则在第二个中断响应总线周期把中断类型码送至D7~D0,供CPU读取。

⒊中断优先级分析器(参考下图)

首先,由8个“与门”逻辑选出参加中断优先级排队的中断请求级,即8位IRR与8位IMR各位分别送入“与门”输入端,只有当IRR位置“1”(有中断请求)和:IMR位置“0”(开放中断请求)同时成立时,相应“与门”输入位有效。

其次,优先级编码器从参加排队的那些中断优先级中选出当前最高优先级,作为下一步比较的一个输入(A2A1A0)

最后,把来自ISR的当前正在服务的优先级(B2B1B0)与当前请求的最高优先级(A2A1A0)一起送入比较器进行比较,当比较器A>B端输出有效时,并且只要当前存在非屏蔽的中断请求,“或门”输出有效时,8259A即向CPU 提出中断请求INT。

三 8259A的中断响应过程

⒈中断响应周期

⒉中断响应过程

①当中断请求线(IR0~IR7)上有一条或若干条变为高电平,则使IRR 相应的位置1;

②当IRR的某一位或若干位被置1后,若IMR中相应的位为1,则屏蔽该中断请求,若IMR中相应位为0,则中断请求送PR;

③ PR把接到的中断请求的最高优先级与ISR正中在服务的中断级比较,若前者级别高于后者,或CPU不在服务中,则置INT为高电平,否则INT低电平;

④ CPU采样到INT为高后,响应中断进入连续的两个可屏蔽中断响应周期;

⑤ 8259A接到第一个INT A负脉冲后,将对应的ISR位置位,而相应的IRR被复位;

⑥ 8259A接到第二个INT A负脉冲后(第二个中断响应周期),在该脉冲期间,8259A向CPU发出中断类型码。

⑦若8259A处于AEOI(自动中断结束)方式,则第二个INT A负脉冲结束时,相应的ISR位被复位。否则(工作在非自动中断结束方式)要等到CPU 向8259A送内含中断结束(EOI)命令的OCW2后,相应的ISR位才被复位。

至此,CPU根据中断类型码,从中断矢量表中获取对应的中断服务程序入口地址进入中断服务。

第一个负脉冲到达时,8259A完成以下3个动作:

①使IRR的锁存功能失效。这样,在IR7~IR0线上的中断请求信号就不予接收,直到第二个负脉冲到达时,才又使IRR的锁存功能有效。

②使当前中断服务寄存器ISR中的相应位置1,以便为中断优先级裁决器以后的工作提供判断依据。

③使IRR寄存器中相应位(即刚才设置的位)清0.

第二个负脉冲到达时,8259A完成下列动作:

①将中断类型寄存器中的内容ICW2送到数据总线的D7~D0,CPU将此作为中断类型码。

②如果ICW4(方式控制字)中的中断自动结束位为1,那么,在第二个INT A结束时,8259A会将第一个INT A脉冲到来时设置的当前中断服务寄存器ISR的相应位清0。

注意:在自动结束中断方式下,当前ISR

的置1位由第2个INT A脉冲后沿清除。而在

非自动结束中断方式下,ISR的置1位一直保

持直到中断服务程序结束时,由CPU向 8259A

发出结束命令为止。也就是说,对非自动中断

结束方式,在中断服务程序中,中断返回之前,

要由CPU向8259A发一个中断结束命令,以清

除ISR中被置“1”的位。

四 8259A的级联连接

?一个系统中,8259A可以级连,有一个

主8259A,若干个(最多8个)从8259A

?级连时,主8259A的三条级连线CAS0~

CAS2作为输出线,连至每个从8259A

的CAS0~CAS2

?每个从8259A的中断请求信号INT,连

至主8259A的一个中断请求输入端IR

?主8259A的INT线连至CPU的中断请求输入端

?SP/EN在非缓冲方式下,规定该8259A是主片(SP=1)还是从片(SP

=0)

五 8259A的初始化命令字和操作命令字

㈠初始化命令字

?初始化命令字ICW最多有4个

?8259A在开始工作前必须写入

?必须按照ICW1~ICW4顺序写入

?ICW1和ICW2是必须送的

?ICW3和ICW4由工作方式决定

?ICW1必须写入偶地址端口,其余必须写入奇地址端口。

?偶地址较低,奇地址较高

⒈芯片控制初始化命令字(ICW1)

触发方式,通过写ICW1的D3位来选择,ICW1的格式如下:

其中:D4位为ICW1的特征位,必须为“1”。

D3位决定电平触发方式(LTIM):D3=1,为电平触发;D3=0,为边沿触发。

D1位决定单片使用(SNGL):D1=1,为单片使用;D1=0,为多片级联方式。

D0位决定是否需要初始命令字ICW4配合,(对8088/8086一般都需使用ICW4),D0=1,需要ICW4;D0=0,不需要ICW4。

其他位只对8位微机(8085)有效,故写0。

例如,若8259A采用电平触发,单片使用,需要ICW4,则程序段为:

MOV AL,1BH ;ICW1的内容

OUT 20H,AL ;写入ICW1端口(A0=0)

注意:这里的例子是8088的例子。

⒉中断类型号的设定(ICW2)

8259A提供给CPU的中断类型号是一个8位代码,是通过初始化命令ICW2提供的。只有高5位是在初始化编程时,通过命令字ICW2写入的,它的低3位是由中断请求线IRi的二进制编码(如IR4的编码为100)决定,并且是在

第一个INT A到来时,将这个编码写入低3位的。ICW2的格式如下:

例如,在PC系列中断系统中,硬盘中断类型号的高5位是08H,它的中断请求线连到 8259A的IR5上,在向ICW2写入中断类型号时,只写中断类型号的高5位(08H),低3位可以取0:

MOV AL,08H ;ICW2的内容(中断类型号高5位)

OUT 21H,AL ;写入ICW2的端口(A。=1)当CPU响应硬盘中断请求时,8259A把IR5的编码101作为低3位构成一个完整的8位中断类型号0DH,经数据总线发送给CPU。

可见,外部硬中断中断源的中断号(8位代码)是由两部分构成的,即高5位(ICW2)+低3位(IRi的编码)。

注意:这里的例子是8088的例子。

⒊级联方式的设定(ICW3主片/从片的初始化命令)

若主控输入端IRi上联接从控,则Si=1;否则,Si =0。

例如,假设主控的IR3和IR6的两个输入端分别联接了从控A与B。故:主控ICW3的值=01001000B=48H

MOV AL,48H ;ICW3(主)内容

OUT 21H,AL ;写入ICW3端口(A0=1)

3位从控标志码可有8种编码,表示从控的中断请求线INT被连到主控的哪一个输入端IRi。

例如,假设从控A和B的请求线INT分别联到主控的IR3和IR6,故:从控A的ICW3的内容=00000011B=03H

从控B的ICW3的内容=00000110B=06H

MOV AL,03H ;ICW3(从片A)内容

OUT 21H,AL ;写入ICW3(从片A)端口(A0=1)

说明:级联方式下从控制器中断申请及响应的过程

假定一个从控的IR输入端已接收到一个中断申请,并假设这个申请比起其他申请和比起这个从控内正在服务中的等级来具有最高级的优先权,那么这个从控的INT脚变为高电平,向主控制器提出中断申请。主控接到这个申请后,要进行判优,如果这个申请与其他的申请及服务中的等级(可能来自其他从控制器)相比是最高优先等级,则主控制器的INT脚变为高电平,向CPU提出中断请求。

在CPU看来,级联的“中断响应序列”和不是级联的“中断响应序列”是一样的,然而对于8259A是不同的。第一个INT A脉冲使所有的8259A得到通

知:中断申请已被允许。与此同时,作为主控制器的8259A在CAS0~2总线上放上申请被响应的从控制器的ID码,通知让它在下一个中断响应序列INT A

时,送出中断类型号到数据总线上,这样就完成了中断响应。

在中断响应时,主控器和从控器分别将对应的ISR位置位。这也就意味着在中断完成后必须发出两个EOI命令(若不是自动EOI方式),一个给主控器,一个给从控器。

D4:D4=1,特殊完全嵌套方式,一般作为级联时主片的方式,工作在该

方式时与工作在一般完全嵌套方式仅一点不同:在中断处理过程中,对优先级相等的同级中断也给予响应,能实现同级中断嵌套;

D4=0,一般完全嵌套方式,一般作为级联时从片的方式,或单片使用时的方式;

D3:D3=1,缓冲方式,是指8259A和DB之间需加一缓冲器(提高DB带

负载能力),此时/ 作为输出线,用以锁存或开启缓冲器;

D3=0,非缓冲方式,/ 作为主从片选择。

D2:D2=1,在D3=1时(缓冲方式),主片;

D2=0,在D3=1时(缓冲方式),从片。

在D3=0时,D2无意义。

D1:D1=1,自动中断结束方式(AEOI);

D1=0:非自动中断结束方式。

D0:D0=1,8259A用于80X86CPU系统;

D0=0,8259A用于非80X86CPU系统。

㈡操作命令字

8259A有3个操作命令字,即OCW1~OCW3。操作命令字是在应用程序内部设置的。设置时,次序上没有严格的要求,但是,对端口地址有严格规定,即OCW1必须写入奇地址端口,OCW2和OCW3必须写入偶地址端口。

⒈中断屏蔽操作命令字(OCW1)

①正常屏蔽方式

8259A的IMR中断屏蔽寄存器,可以屏蔽一个或几个IR的中断请求,它加强了对中断的控制能力,此时本级中断优先级在ISR 中的登录位ISi尚未清除,即使本级中断的IRi被屏蔽,优先权比它低的中断仍然得不到响应。

一个中断源提出中断申请时,虽然它被屏蔽(即相应的M位置1),但它的中断不一定被忽略,因此当它的屏蔽位复位时,并且,若它的IRR位未撤消,则会产生中断。若在IMR复位之前撤掉IR申请,则中断就不会产生响应。OCW1的格式如下

例如,要使中断源IR3开放,其余均被屏蔽,则OCW=11110111B

MOV AL,OF7H ;OCW1内容

OUT 21H,AL ;OCW1端口(A0=1)

IMR寄存器的内容,还可以读出,如BIOS中有一段检查中断屏蔽寄存器的程序:

MOV AL, 00H ;置IMR为全"0"

OUT 21H,AL ;OCW1口地址

IN AL,21H ;读IMR

OR AL,AL ;检查是否为全"0"

JNZ D6 ;不为0,则出错

MOV AL,OFFH ;置IMR为全"1"

OUT 21H,AL ;OCW1口地址

IN AL,21H ;读IMR

ADD AL,1 ;检查是为全"1"

JNZ D6 ;不为全"1",出错

D6为出错处理(略)

②特定屏蔽方式

它用于开放低级中断,允许比正在服务中的中断级别低的中断请求。特定屏蔽方式的操作见下面关于OCW3的介绍。

⒉ 中断优先级和中断结束方式操作命令字(OCW2)

其中:

D0~D2位:L0~L2是用来指定中断等级(0~7)。这指定的等级是为了对指定的ISR 复位或指定设备的优先权。它和D6位SL 配合使用。

D5位:EOI 用于所有需要使用中断结束命令的情况。若置1,则在中断服务完成之后需要发送中断结束命令。若置0,则不需要发送中断结束命令(如中断自动结束)。

D6位:SL 用来设置需要指定的操作。若SL 置1,则需要指定,并且用L0~L2位来指定中断等级;若SL=0,则不需要指定,并且使L0~L2位选择中断等级无效(全部写0)。

D7位:R 用来控制8259A 中断优先权的轮换操作。若R 位置1,则需要轮换优先权,并且按照SL ,EOI 及L2~L0各位的组态来执行优先权的轮换;若R 为

② 特殊优先级循环方式时,指定最低优先级。 ⒊ 特定屏蔽方式的操作字(OCW3)

OCW3用来设置查询中断方式,特定屏蔽方式以及读取8259A 的IRR 、ISR 寄存器的内容。OCW3的格式及各位定义如下:

其中:

D0位:RIS用于选择被读寄存器ISR或IRR。若要读ISR,则RIS置1;若要读IRR侧RIS置0。RIS的状态仅在RR位为1时有效。

D1位:RR用于执行为读寄存器命令选择数据源。若RR置1,则为CPU按RIS位的状态选数据源;若RR为0,则读寄存器命令的数据源不变。

D2位:用于发送出查询命令。若P置1,则通知8259A,CPU将执行一条读查询字的指令(A0=0),并且同时使读其它寄存器命令无效,CPU每读一次查询字之前都要发送该命令;若P为0,则不执行读查询字的指令。

D5位:SMM用于设置特定屏蔽方式。若SMM置1,则选择特定屏蔽方式;若置0,则不选。

D6位:ESMM为允许特定屏蔽方式位,用来开放或关闭SMM。若ESMM=1,则SMM位有效;若ESMM=0则SMM位无效。

六 8259A的工作方式

⒈设置优先级的方式

①全嵌套方式

全嵌套方式是8259A最常用的工作方式,如果对8259A进行初始化以后没有设置其他优先级方式,那么,8259A就按全嵌套方式工作。

在全嵌套方式中,中断请求按优先级0~7进行处理,0级中断的优先级最高。

当一个中断被响应时,中断类型码被放到数据总线上,当前中断服务寄存

被置1,然后进入中断服务程序。一般情况下(除了中断器ISR中的对应位IS

n

自动结束方式外),在CPU发出中断结束命令(EOI)前,此对应位一直保持“1”。这样做,可以为中断优先级裁决器中的裁决提供依据,因为中断优先级裁决器总是将新收到的中断请求和当前中断服务寄存器中的IS位进行比较,判断新收到的中断请求的优先级是否比当前正在处理的中断的优先级高,如果是,则实行中断嵌套。

②特殊全嵌套方式

特殊全嵌套方式和全嵌套方式基本相同,只有一点不同,就是在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么,也会给予响应,从而实现一种对同级中断请求的特殊嵌套。而在全嵌套方式中,只有更高级的中断请求来到时,才会进行嵌套,当同级中断请求来到时,不会给予响应。

特殊全嵌套方式一般用在8259A级连的系统中。在这种情况下,对主片编程时,让它工作在特殊全嵌套方式,但从片仍处于其他优先级方式。这样,当来自某一从片的中断请求正在处理时,一方面,和普通全嵌套方式一样,对来

自优先级较高的主片其他引腿上的中断请求开放,当然,这些中断请求是由其他从片引入的;另一方面,对来自同一从片的较高优先级请求也会开放。对同一从片中这样的中断请求,在主片引腿上反映出来,是与当前正在处理的中断请求处于同一级的,但是,在从片内部看,新来的中断请求一定比当前正在处理的中断的优先级别高,否则,通过从片中的中断优先级裁决电路裁决之后,就不会发出INT信号,从而就不会在主片引腿上产生中断请求信号。

注意:特殊全嵌套方式是专门为多片8259A系统提供的用来确认从片内部优先级的工作方式。

③优先级自动循环方式

优先级自动循环方式一般用在系统中多个中断源优先级相等的场合。在这种方式下,优先级队列是在变化的,一个设备受到中断服务以后,它的优先级自动降为最低。

在优先级自动循环方式中,初始优先级队列规定为IR0、IR1、IR2、┅IR6、IR7,如果这时,IR0端正好有中断请求,则进入IR0的中断处理子程序,IR0处理完后,如果又来IR4中断请求,则处理IR4。处理完IR4,IR5为最高优先级,然后依次类推。

这种方式的设置是由OCW2决定。

④优先级特殊循环方式

优先级特殊循环方式和优先级自动循环方式相比,只有一点不同,就是在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也由此而定。比如,确定IR5为最低优先级,那么,IR6就是最高优先级。而在优先级自动循环方式中,一开始的最高优先级一定是IR0。

⒉屏蔽中断源的方式

①普通屏蔽方式

在普通屏蔽方式中,8259A的每个中断请求输入端都可以通过对应屏蔽位的设置被屏蔽,从而使这个中断请求不能从8259A送到CPU。

8259A内部有一个屏蔽寄存器,它的每一位对应了一个中断请求输入,程序设计时,可以通过设置操作命令字OCW1使屏蔽寄存器中任一位或几位置1.当某一位为1时,对应的某一级中断就受到屏蔽。

②特殊屏蔽方式

在有些场合中,希望一个中断服务程序能动态地改变系统的优先级结构。这就需要特殊屏蔽方式。设置了特殊屏蔽方式后,再用OCW1对屏蔽寄存器中某一位进行置位时,就会同时使当前中断服务寄存器中的对应位自动清0,这样,就不只屏蔽了当前正在处理的这级中断,而且真正开放了其他级别较低的中断。因此,特殊屏蔽方式总是在中断处理程序中使用的。

⒊结束中断处理的方式

不管用哪种优先级方式工作,当一个中断请求得到响应时,8259A都会在

当前中断服务寄存器设置相应位IS

,这样,为此后中断裁决器的工作提供了

N

依据。当中断处理程序结束时,必须使IS

位清0,否则,8259A的中断控制功

N

能就会不正常。这个使IS

位清0的动作就是中断结束处理。

N

①中断自动结束方式

在中断自动结束方式中,系统一进入中断过程,8259A就自动将当前中断

清除,这样,尽管系统正在为某个设备进行中断服服务寄存器中的对应位IS

N

务,但对8259A来说,当前中断服务寄存器中却没有对应位作指示,所以,好象已经结束了中断服务一样。使ICW4的AEOI位为1,就设置了中断自动结束方式。

②一般的中断结束方式

一般中断结束方式用在全嵌套情况下。当CPU用输出指令往8259A发出一般中断结束命令时,8259A就会把当前中断服务寄存器中的最高的非零IS位复位。因为在全嵌套方式中,最高的非零IS位对应了最后一次被响应的和被处理的中断,也就是当前正在处理的中断,所以,最高的非零IS位的复位相当于结束了当前正在处理的中断。

③特殊的中断结束方式

在非全嵌套方式下,用当前中断服务寄存器是无法确定哪一级中断为最后响应和处理的。这时,就要采用特殊的中断结束方式。采用特殊中断结束方式反映在程序中就是要发一条特殊中断结束命令,这个命令中指出了要清除当前中断服务寄存器中的哪个IS位。这种方式的设置是通过OCW2来实现的。

⒋连接系统总线的方式

①缓冲方式

在多片8259A级联的大系统中,8259A通过总线驱动器和数据总线相连,这就是缓冲方式。在缓冲方式下,有一个对总线驱动器的启动问题。为此,将8259A的SP/EN端和总线驱动器的允许端相连,因为8259A工作在缓冲方式时,会在输出状态字或中断类型码的同时,从SP/EN端输出一个低电平,此低电平正好可作为总线驱动器的启动信号。

②非缓冲方式

当系统中只有单片8259A时,一般将它直接与数据总线相连,这种方式为非缓冲方式。在此种方式中,8259A的SP/EN端作为输入端,当系统只有单片8259A时,该引脚必须接高电平;当系统中有多片8259A时,主片的该引脚接高电平,而从片的接低电平。

注意:这两种方式都是通过ICW4来设置的。

⒌引入中断请求的方式

①边沿触发方式

在边沿触发方式下,8259A将中断请求输入端出现的上升沿作为中断请求信号。中断请求输入端出现上升沿触发信号以后,可以一直保持高电平。这种方式的设置是通过ICW1来设置的。

②电平触发方式

也是通过ICW1来设置的,一旦设置为电平触发方式,那么8259A工作时,便把中断请求输入出现的高电平作为中断请求信号。

在电平触发方式下,要注意的一点是当中断输入端出现一个中断请求并得到响应后,输入端必须及时撤除高电平。

③中断查询方式

中断查询方式的特点是:

Ⅰ设备仍然通过往8259A发中断请求信号要求CPU服务,但8259A不使用INT信号向CPU发中断请求信号。8259A输入端的中断请求信号可以是上升沿,也可以是高电平。

Ⅱ CPU内部的中断允许触发器复位,所以禁止了外部对CPU的中断请求。

Ⅲ CPU要使用软件查询来确认中断源,从而实现对设备的中断服务。

查询命令是通过OCW3来实现的。当CPU往8259的偶地址端口发出查询性质的OCW3时,如果这之前,正好有外设发出中断请求,那么8259A就会在当前中断服务寄存器中设置好相应的IS位,于是,CPU就可以在查询命令之后

的下一个读操作时,从当前中断服务寄存器中

读取这个优先级。

一般步骤:系统先关中断,然后用输出指

令将OCW3送到8259A的偶地址端口,接着用输

入指令从偶地址端口读取8259A的查询字。

七 8259A编程

8259A有两类编程命令:初始化命令字(ICW)

和操作命令字(OCW)。

⒈初始化命令字(ICW)

在中断系统运行之前,系统中的每一个

8259A必须按先后次序接收CPU的2~4个ICW

初始化命令字进行初始化。初始化程序放在程

序的开头,作为主程序的一部分。初始化流程图如右图所示。对于16位机,必须有ICW1、ICW2和ICW4,而ICW3则要看是否多片使用。若是,则写ICW3。

⒉操作命令字(OCW)

在处理器对中断控制器完成初始化编程后,8259A就处于准备就绪状态,等待接收外界的中断请求,进行完全嵌套的中断管理。若用户要改变初始化设

《8259中断控制器实验》的实验报告

实验六8259中断控制器实验 6.1 实验目的 (1) 学习中断控制器8259的工作原理。 (2) 掌握可编程控制器8259的应用编程方法。 6.2 实验设备 PC微机一台、TD-PIT+实验系统一套。 6.3 实验内容 1. 单中断应用实验 (1)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。 (2)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“Hello”,中断5次后退出。 2.扩展多中断源实验 利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IR0和IR1中断请求进行处理。 6.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所示,

微机接口实验报告-8259中断控制器应用实验

姓名 院专业班 年月日实验内容8259中断控制器实验指导老师 【实验目的】 (1)学习中断控制器8259的工作原理。 (2)掌握可编程控制器8259的应用编程方法。 【试验设备】 PC微机一台、TD-PIT+实验系统一套。 【实验内容】 (1) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。 (2) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“9”,中断显示6次后退出。 【实验原理】 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内部寄存器的读出命令。 图6-1 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次后程序退出。 JC I/O EM 实验连线6条,如图红色虚线所示 去IRQ7 去去50去1MHz 输出端

1.复习8259A工作原理,编程方法和使用方法。 2.根据要求编写相应的汇编程序。 四﹑报告要求 1.整理好经过运行是正确的源程序,并加上注释。 2.总结实验调试过程中遇到的问题。 3.通过实验回答思考题。 五﹑思考题 初始化时设置为非自动结束方式,那么在中断服务程序 将结束时必须设置什么操作命令?如果不设置这种命令会发 生什么现象? 六、实验原理 1、PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。 IBM-PC/XT机内有一片8259中断控制器对外可提供8个中断源: 中断源中断类型号中断功能 IRQ0 08H 时钟 IRQ1 09H 键盘 IRQ2 0AH 保留 IRQ3 0BH 串行口2 IRQ4 0CH 串行口1 IRQ5 0DH 硬盘 IRQ6 0EH 软盘 IRQ7 0FH 并行打印机 8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线总线插槽中可以引出,系统已设定中断请求信号为“边沿触发”、普通结束方式。对于286以上的微机又扩展了一片8259中断控制器,主片的IRQ2已用于从片的级连。本实验箱在出厂时,默认IRQ7引到实验台上。 2、编程说明:PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清0(允许中断),中断服务程序返回前要使用中断结束命令: MOV AL,20H OUT 20H,AL 中断结束返回DOS时应将IMR对应位置1,以关闭中断。

实验七-8259中断控制器实现

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称微机原理与接口技术 项目名称 8259A中断控制实验 班级 学号 姓名 同组人员无 实验日期 2016/06/28 一、实验目的与要求 1、了解8259的内部结构,工作原理;了解8259A与8088的接口逻辑;掌握对8259A 的初始化编程方法,了解8088是如何响应中断、退出中断的。

二、实验逻辑原理图与分析(汇编—流程图) 2.1 画实验逻辑原理图 2.2 逻辑原理图分析 实验原理与分析:由于实验中需拨动单脉冲开关,送给8259A的IR0,触发中断,8088计数中断次数,显示于G5区的数码管上。故8259中断控制实验需要8259A芯片,8282地址锁存器,用于8086CPU与8259A芯片地址线的连接,8286收发器用于8086CPU与8259A 芯片数据线的连接,通过地址译码器实现片选信号(CS)的选通。 三、程序分析 3.1程序代码分析 .MODEL TINY EXTRN Display8:NEAR ;装入外部程序块 IO8259_0 EQU 0F000H IO8259_1 EQU 0F001H .STACK 100 .DATA BUFFER DB 8 DUP(?) Counter DB ? ReDisplayFlag DB 0 .CODE START: MOV AX,@DATA

MOV DS,AX MOV ES,AX NOP CALL Init8259 CALL WriIntver MOV Counter,0 ;中断次数 MOV ReDisplayFlag,1 ;需要显示 STI ;开中断 START1: CMP ReDisplayFlag,0 JZ START1 CALL LedDisplay MOV ReDisplayFlag,0 JMP START1 Init8259 PROC NEAR MOV DX,IO8259_0 mov al,13h ;ICW1:0001 0011 上升沿触发,间隔为8,单片工作故没有ICW3,写ICW4 out dx,al mov dx,IO8259_1 mov al,08h ;ICW2:0000 1000 中断类型码为:00001,用的中断请求为IR0 out dx,al mov al,09h ;ICW4:0000 1001 000为ICW4的标识码,采用一般嵌套,缓冲方式,正常EOI,8086/8088系统 out dx,al mov al,0feh ;OCW1:1111 1110 屏蔽其他IR,允许IR0发送中断请求 out dx,al RET Init8259 ENDP WriIntver PROC NEAR PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H ;20H~23H是IR0的矢量地址 LEA AX,INT_0 STOSW ;把INT_0的偏移地址写到ES:DI指向的内存单元中 MOV AX,CS STOSW ;把段基址存入ES:DI的内存单元中 POP ES RET WriIntver ENDP

实验二 中断控制电路实验

实验二中断控制电路实验 一、实验目的 1、学习单片机的中断控制原理。 2、编程中断控制器。 二、实验环境 硬件环境:奔3以上处理器,512MB以上内存空间 软件环境:windowsXP以上操作系统,emu8086编译环境,Proteus7、5sp3。 三.实验内容与完成情况 1、实验电路图 2.实验原理 8259中断控制器就是专为控制优先级中断设计的芯片。它将中断源优先级排队,辩别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优行模式与中断请求方式,即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259的级联,能构成多达64级的矢量中断系统。 (1) 写初始化命令字 * 写初始化命令字ICW1(A0=0),以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队与确定系统用单片还就是多片。

* 写初始化命令字ICW2,以定义中断向量的高五位类型码。 * 写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A从片。 第i位=0,表明IRi引脚上无从片 第i位=1,表明IRi引脚上有从片 * 写初始化命令ICW4,用来定义8259A工作时用8085模式,还就是8088模式,以及中断服务寄存器复位方式等。

(2) 写控制命令字 * 写操作命令字0CW1,用来设置或清除对中断源的屏蔽。 第i位=0,对应的中断请求IRi开放 第i位=1,对应的中断请求IRi屏蔽 注: OCW1如不写,则在初始化命令写入后,OCW1为全开放状态。 * 操作命令字OCW2,设置优先级就是否进行循环、循环方式及中断结束方式。 注: 8259A复位时自动设置IR0优先权最高,IR7优先权最低。

实验六 8259中断控制(1)

实验六8259中断控制(1) 一.实验目的 1. 学习8086/8088 CPU中断系统的知识。 2. 学习8259中断控制器的使用。 二.实验要求 编写程序,使8255的A口控制双色灯。CPU执行主程序时四个绿灯亮。用+pulse作为8259的IR2的输入信号,向CPU请求中断。CPU在中断服务程序中熄灭绿灯,并使红灯亮。中断服务程序结束,又返回主程序,再使绿灯亮。 三.实验电路及连线

1.将8255的PA0~PA3接双色灯的DG1~DG4。 2.将8255的PA4~PA7接双色灯的DR1~DR4。 3.将单脉冲电路的+pulse接8259的IR2。 4.将8255的CS接200~207H。 5.将8259的CS接210~217H。 6.将K15插针连上。 四.编程提示 1. 8255初始化:A口方式0输出。 2. 8259初始化:边沿触发。 3. 设置中断矢量,将中断服务程序入口地址送入中断矢量表的相应单元,在本系统中,80000H~800FFH相当于00000H~000FFH,其中用户可用中断矢量表区域为80014H~800FFH。 4. 主程序控制8255 PA0~PA3输出点亮绿灯。 5. 编制中断服务程序,使PA4~PA7输出点亮红灯,关闭绿灯。 五.实验步骤 1. 编制程序。 2. 在PC机上编辑、汇编及连接。 3. 在实验板上按实验连线要求连接硬件线路(注意先关闭实验板电源)。 4. 连接实验板与PC机的串行通信线,开实验板电源。 5. 将程序从PC机送入实验板。 6. 运行程序,此时双色灯绿灯亮,表明在运行主程序。 7. 按一下+pulse按钮,应当红灯亮绿灯灭,表明在执行中断服务程序;过一会儿红灯熄灭了,绿灯又亮了起来,表明中断服务程序已返回了主程序。 六.实验报告 应包括画电路图、试验程序框图、编程(要有注释)、调试过程及心得体会等。

8259A中断实验

实验8259单级中断控制器实验 一、实验目的 ⒈掌握8259中断控制器的接口方法。⒉ 掌握8259中断控制器的应用编程。 二、实验内容 利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。 三、实验接线图 图6-6 四、编程指南 ⑴8259芯片介绍 中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式 为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。 五、实验程序框图 IR3中断服务程序: IR7中断服务程序: 六、实验步骤 1、按图6-6连好实验线路图。

⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“” 插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;⑷8259的CS端接FF80H孔。 2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入12D0,按EXEC键,系统显示8259-1。 3、拨动AN开关按钮,按满l0次显示good。 七、实验程序清单 CODE SEGMENT ;H8259.ASM ASSUME CS: CODE INTPORT1 EQU 0FF80H INTPORT2 EQU 0FF81H INTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 12D0H START: JMP START0 BUF DB ?,?,?,?,?,? intcnt db ? data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h, 0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: CLD ;递加 CALL BUF1 ;写显示缓冲初值 CALL WRINTVER ;写中断向量 MOV AL,13H ;写ICW1 MOV DX,INTPORT1 OUT DX,AL MOV AL,08H ;写ICW2 MOV DX,INTPORT2 OUT DX,AL MOV AL,09H ;写ICW4 OUT DX,AL MOV AL,0F7H ;写OCW1 OUT DX,AL MOV intcnt,01H ;中断计数初值 STI ;开中断 WATING: CALL DISP ;DISP 8259-1

《8259中断控制器实验》的实验报告

实验六 8259中断控制器实验 6.1 实验目的 (1) 学习中断控制器8259的工作原理。 (2) 掌握可编程控制器8259的应用编程方法。 6.2 实验设备 PC微机一台、TD-PIT+实验系统一套。 6.3 实验容 1. 单中断应用实验 (1)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。 (2)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“Hello”,中断5次后退出。 2.扩展多中断源实验 利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IR0和IR1中断请求进行处理。 6.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用于设置优先级循环

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,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

8259中断实验

XX学院 实验报告 实验名称 姓名 学号 班级 教师 日期

一、实验内容与要求 1.1 实验内容 本次实验分为如下3个子实验: (1)单中断请求实验:利用系统总线上中断请求信号MIR7,设计一个单一中断请求实验; (2)双中断优先级实验:利用系统总线上中断请求信号MIR6和MIR7,设计一个双中断优 先级应用实验,观察8253对中断优先级的控制; (3)级联中断实验:利用系统总线上中断请求信号MIR7和SIR1,设计一个级联中断应用 实验。 1.2 实验要求 本次实验中三个子实验的实验要求如下: (1)单中断请求实验:单脉冲KK1+与主片8259的IR7相连。每按KK1+,进入一次中断, 输出7; (2)双中断优先级实验:单脉冲KK1+连主片8259的IR7,KK2+连其IR6。每当KK1+按 下时显示“7”,每当KK2+按下显示“6”; (3)级联中断实验:单脉冲KK1+连主片8259的IR7,KK2+连从片的IR1。每当KK1+按 下时显示“M7”,每当KK2+按下显示“S1”。 二、实验原理与硬件连线 2.1 实验原理 (1)中断控制器8259简介 在Intel 386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。从片的INT连接到主片的IR2信号上构成两片8259的级联。 在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。8259的内部连接及外部管脚引出如图1-1:

计算机组成原理与接口技术笔记 15 中断8259中断控制器

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是处理器的一个外设,也需要分配端口地址。

8259a中断控制器——利用IRQ2显示中断过程

8259a中断控制器:利用8259A的IRQ2显示中断过程 目录 8259a中断控制器:利用8259A的IRQ2显示中断过程 (1) 设计题目: (1) 要求: (1) 设计思路: (1) 实验代码: (2) 实验心得体会: (10) 设计题目: 利用8259A IRQ2显示中断过程 要求: 1.主是在7段数码管上循环显示‘8’从右到左显示 2.中断服务中在7段数码管上依次显示全1234567 89要去显示2秒左右时间可采用软件Software延迟(时间可通过调试大致2秒左右)总计中断9次结束返回DOS 3.每次由手动产生IRQ2中断请求信号引起中断 设计思路: 软件Software方面有两个主要部分:主和中断服务子 主首先要完成是些和处理工作例如查找设备设置TPC卡中9054芯片IO口,保存原来0AH号中断中断向量设置新中断向量设置中断掩码显示提示信息然后打开中断进入主循环在主循环中不断在LED上从右向左显示8直到被IRQ2中断信号打断此外在主中还对中断执行进行计数当计数满9次后自动跳出为了使主上8循环可以看出来故将显示8延迟设计比较长当完成9次中断主还要完成些后续处理工作:恢复中断掩码;恢复中断向量;设置TPC卡中9054芯片IO口,关闭中断返回DOS 中断子完成在6位数码管上“同时”显示个数功能这个数为1—9中某个可以用循环次数作为参数这里同时显示实质上是利用视觉上暂停效果即只要每秒能在同个数码管上显示信息超过24次看起来就是同时了而这点在现在计算机速度条件下很容易实现为了不发生混乱在中断子执行过程中不允许再次中断 另外中还有两个子:findtpc和dispword这些是为了完成查找设备等预处理 硬件方面实验时把总线上IRQ2引脚和拨键开关相连以手动产生中断信号另外再把LED片选信号CS和210-217相连(注:LED显示是通过向LED数据端口送入数据再向LED位选端口送入

8259中断控制实验

《微机系统与接口技术》课程实验报告 学院:计算机学院 班级学号: 学生姓名: 指导老师: 成绩评定:

1 实验目的 1. 掌握8259中断控制器的工作原理。 2. 学习8259的应用编程方法。 3. 掌握8259级联方式的使用方法。 2 实验设备 PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。 3 实验内容及步骤 1. 中断控制器8259简介 在Intel 386EX 芯片中集成有中断控制单元(ICU ),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A 是一致的,操作方法也相同。从片的INT 连接到主片的IR2信号上构成两片8259的级联。 在TD-PITE 实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。8259的内部连接及外部管脚引出如图4-1: 主片8259A 从片8259A INT INT CAS2:0 CAS2:0 IR2 IR4 IR6IR7 IR1 INTR (内核) 串口0MIR6MIR7 SIR1 图4-1 8259内部连续及外部管脚引出图 表4-1列出了中断控制单元的寄存器相关信息。 表4-1 ICU 寄存器列表 寄存器 口地址 功能描述 ICW1(主) ICW1(从) (只写) 0020H 00A0H 初始化命令字1: 决定中断请求信号为电平触发还是边沿触发。 ICW2(主) ICW2(从) (只写) 0021H 00A1H 初始化命令字2: 包含了8259的基址中断向量号,基址中断向量是IR0的向量号,基址加1就是IR1的向量号,依此类推。 ICW3(主) (只写) 0021H 初始化命令字3: 用于识别从8259设备连接到主控制器的IR 信号,内部的从8259连接到主8259的IR2信号上。 ICW3(从) (只写) 00A1H 初始化命令字3: 表明内部从控制器级联到主片的IR2信号上。 ICW4(主) ICW4(从) (只写) 0021H 00A1H 初始化命令字4: 选择特殊全嵌套或全嵌套模式,使能中断自动结束方式。 OCW1(主) OCW1(从) 0021H 00A1H 操作命令字1: 中断屏蔽操作寄存器,可屏蔽相应的中断信号。

实验六 8259中断控制(1)

星期二1-2节序号:1 实验六8259中断控制(1) 12120771 易远明 一、电路图 二、程序框图

三、实验程序及注释 ASSUME CS:CODE INTPORT1 EQU 0060H INTPORT2 EQU 0061H INTQ3 EQU INTREEUP3 INTCNT DB ? ORG 1200H START: CLD MOV DX,0FF2BH MOV AL,80H ;设置8255方式字:A口出 OUT DX,AL CALL WRINTVER ;WRITE INTRRUPT MOV AL,13H ;ICW1=00010011B,边沿触发、单8259、需ICW4 MOV DX,INTPORT1 OUT DX,AL MOV AL,08H MOV DX,INTPORT2 OUT DX,AL MOV AL,09H ;ICW4=00001001B,非特殊全嵌套方式、缓冲/从、正常EOI OUT DX,AL MOV AL,0F7H ;OCW1=11110111B OUT DX,AL MOV INTCNT,01H ;延时 STI WATING: MOV DX,0FF28H ;主程序绿灯亮(低四位为0则绿灯亮,高四位为1故红灯灭)MOV AL,0F0H OUT DX,AL JMP WA TING WRINTVER: MOV AX,0H

MOV ES,AX MOV DI,002CH ;中断向量地址2CH=0BH*4 LEA AX,INTQ3 STOSW ;送偏移地址 MOV AX,0000h STOSW ;送段地址 RET INTREEUP3:CLI ;中断服务子程序开始 MOV DX,0FF28H ;中断服务子程序执行红灯亮 MOV AL,0FH ;低四位为1则绿灯灭,高四位为0故红灯亮 OUT DX,AL CALL DELAY1S MOV AL,20H ;OCW2=001 00 000B非特殊EOI命令,结束命令,用于完全嵌套方式的中断结束 MOV DX,INTPORT1 OUT DX,AL STI ;开系统中断 IRET DELAY1S: MOV CX,0FFFFH MOV BX,5 L:DEC CX JNZ L DEC BX JNZ L RET CODE ENDS END START

中断控制器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 SEGMENT ASSUME CS:CODE MAIN PROC START: ;主过程 ;初始化8259 ;初始化8255 ;调用3号中断 MAIN ENDP INT3 PRCO ……;中断处理子程序 INT3 ENDP DELAY PROC …… ;延时子过程 DELAY ENDP CODE ENDS END 6、程序流程图 主程序

8259A中断控制器实现

一、实验目的与要求 1、了解8259的内部结构,工作原理;了解8259A 与8088的接口逻辑; 掌握对8259A 的初始化编程方法,了解8088是如何响应中断、退出中断的。 二、实验逻辑原理图与分析 2.1 画实验逻辑原理图 AD0~AD15 ALE WR# INTR INTA 数据锁存器 地址锁存器 地址译码器D0~D7 CS#A0 WR#INT INTA# IR0 A0 2.2 逻辑原理图分析 8282地址锁存器,用于8086CPU 与8259A 芯片地址线的连接用于总线周期T1状态 下发出的地址信号。经锁存后的地址信号可以在整个周期内保持稳定不变,8286收发器用于8086CPU 与8259A 芯片数据线的连接,通过地址译码器实现片选信号(CS )的选通。 (1)、8086是Intel 系列的16为微处理器,芯片上有4万个晶体管,采用NMOS 工艺制造,用单一的+5V 电源,时钟频率为4.77MHZ~10MHZ.8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据,可寻址的内存空间为1MB 。 (2)、8282锁存器:用来锁存8086访问存储器或I/O 端口时,于总线周期T1状态下发出的地址信号。经锁存后的地址信号可以在整个周期内保持稳定不变 (3)、8286收发器:可以进行双向数据锁存 (4)、8259A 可编程中断控制器主要功能: 1)、 1片8259A 能管理8级中断,通过级联用9片8259A 可以构成64 级主从 式中断系统 2)、每一级中断可以屏蔽或允许 3)、在中断响应周期,8259A 可提供相应的中断类型号。 4)、 可编程使8259A 工作在多种不同的方式。 (5)、8259A 的内部结构:

中断实验报告报告

中断试验试验报告 班级:电信1001 姓名:张贵彬学号:201046830213 一、实验目的 1、掌握PC机中断处理系统的基本原理。 2、学会编写中断服务程序。 二、实验原理与内容 1、实验原理 PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源: 中断源中断类型号中断功能 IRQ0 08H 时钟 IRQ1 09H 键盘 IRQ2 0AH 保留 IRQ3 OBH 串行口2 IRQ4 0CH 串行口1 IRQ5 0DH 硬盘 IRQ6 0EH 软盘 IRQ7 0FH 并行打印机 8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。对于PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源: 中断源中断类型号中断功能 IRQ8 070H 实时时钟 IRQ9 071H 用户中断 IRQ10 072H 保留 IRQ11 O73H 保留 IRQ12 074H 保留 IRQ13 075H 协处理器 IRQ14 076H 硬盘 IRQ15 077H 保留 TPC-USB实验板上,固定的接到了3号中断IRQ3上,即进行中断实验时,所用中断类型号为0BH。 2、实验内容 实验电路如图9-1,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)。要求每按一次开关产生一次中断,在屏幕上显示一次“TPCA Interrupt!”,中断10次后程序退出。 三、实验电路图

实验一 8259单级中断控制器实验

实验一8259单级中断控制器实验 一、实验目的 ⒈掌握8259中断控制器的接口方法。 ⒉掌握8259中断控制器的应用编程。 二、实验内容 利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。 三、实验接线图 图6-6 四、编程指南 ⑴8259芯片介绍 中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。 五、实验程序框图 IR3中断服务程序: IR7中断服务程序:

六、实验步骤 1、按图6-6连好实验线路图。 ⑴ 8259的INT连8088的INTR; ⑵ 8259的INTA连8088的INTA; ⑶“”插孔和8259的3号中断IR3插孔相连,“”端初始为低电平; ⑷ 8259的CS端接FF80H孔; ⑸连JX4→JX17。 2、DJ-8086k软件启动和联机 ⑴启动和联机。双击桌面上‘DJ-8086k’快捷图标,即可运行DJ-8086k软件; ⑵新建文件:单击菜单栏“文件”或工具栏“新建”图标,即会建立一个新的源程序 编辑窗口,此时可在此窗口编辑、输入源程序(注:新建文件扩展名为 .ASM)。 或打开文件F3:单击菜单栏“文件”或工具栏“打开”图标,弹出“打开文件”的对话框,然后选择要装入的源文件,单击“确定”即可装入源文件。; 3、调试程序 ⑴编译装载F9: 打开源文件,依次单击:调试”\“编译装载F9”或工具栏上的编译装载图标,状 态栏会提示正在编译、编译成功、正在装载数据、装载数据结束,几秒钟后便会弹出‘源文件调试窗口’,如编译出错,会提示错误信息,待修改源文件正确后,重新编译装载即可; ⑵连续运行; 单击菜单栏“调试”下的“连续运行”或单击工具栏的连续运行图标,即全速连续运行程序,系统显示8259-1。 ⑶在系统处于命令提示符“P.”状态下,输入12D0,按EXEC键,系统显示8259-1。 ⑷拨动AN开关按钮,按满6次显示good。 七、实验程序清单 CODE SEGMENT ;H8259.ASM ASSUME CS: CODE INTPORT1 EQU 0FF80H INTPORT2 EQU 0FF81H INTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 12D0H START: JMP START0 BUF DB ?,?,?,?,?,?

实验二中断控制电路实验

实验二中断控制电路实验 一. 实验目的 1.学习单片机的中断控制原理。 2.编程中断控制器。 二. 实验环境 硬件环境:奔 3 以上处理器,512MB 以上内存空间 软件环境: windowsXP 以上操作系统,emu8086 编译环境, Proteus7.5sp3。 三. 实验内容与完成情况 1.实验电路图 2.实验原理 8259 中断控制器是专为控制优先级中断设计的芯片。它将中断源优先级排队,辩别中 断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259 进行编程,就可以管理8 级中断,并选择优行模式和中断请求方式,即中断结构可以由用户编程来设定。 同时,在不需要增加其它电路的情况下,通过多片8259 的级联,能构成多达64 级的矢量中断系统。 (1) 写初始化命令字 * 写初始化命令字ICW1(A0=0) ,以确定中断请求信号类型,清除中断屏蔽寄存器,中断优 先级排队和确定系统用单片还是多片。

* 写初始化命令字ICW2 ,以定义中断向量的高五位类型码。 * 写初始化命令字ICW3 ,以定义主片8259A 中断请求线上IR0~IR7 有无级联的8259A 从片。 第 i 位=0,表明IRi 引脚上无从片 第 i 位=1,表明IRi 引脚上有从片 * 写初始化命令ICW4 ,用来定义8259A 工作时用8085 模式,还是8088 模式,以及中断服务寄存器复位方式等。

(2) 写控制命令字 * 写操作命令字0CW1,用来设置或清除对中断源的屏蔽。 第 i 位=0,对应的中断请求IRi 开放 第 i 位=1,对应的中断请求IRi 屏蔽 注:OCW1 如不写,则在初始化命令写入后,OCW1 为全开放状态。 * 操作命令字OCW2 ,设置优先级是否进行循环、循环方式及中断结束方式。注:8259A 复位时自动设置IR0 优先权最高,IR7 优先权最低。

13281036_刘大力_8259中断控制器作业

接口作业3: 8259-1:利用8255触发8259A的中断点亮 LED 一、目的 掌握8259A矢量中断方式的硬件连接和软件编程的方法,同时掌握中断和其它接口芯片配合来完成某一特定任务的方法。 二、内容 8255的PC6作为8259A的中断源,8255每向8259A发出中断请求,都让LED指示灯交替点亮和熄灭。 三、实验接线图 图1-4 实验连线图 四、编程提示 1、中断服务程序的主要功能是交替点亮和熄灭LED指示灯(即第1次进中断点亮LED, 第2次进中断则熄灭LED)。当然8255A能使用前需要在主程序中初始化。 2、主程序可以采样死等待的方式,如果要结束程序,可以按动实验平台的Reset键。 也可以采用计数的方法,即进中断5次后结束程序。 3、8255的PC6作为中断源,应采用上升沿触发方式(由低到高的变化),为了能够进 行下次中断,PC6必须变为低点平。 4、为了能使LED的闪烁可见,在中断各申请之间加入延迟程序。

.MODEL SMALL .386 CODE SEGMENT ASSUME CS:CODE START: MOV DX,203H MOV AL,10000000B ;设置8255控制字 OUT DX,AL MOV CL,0 CLI ;关386CPU中端 IN AL,21H;写入中断屏蔽字OCW1时,采用读取-修改-写入的顺序 AND AL,11011111B OUT 21H,AL;将中断入口地址写入中断向量表 PUSH DS MOV BX,0 MOV DS,BX LEA AX,CS:INT_PROC ;将中断程序的入口地址给AX MOV BX,5 ;N=IRX 中端IR5 MOV SI,30H ;BASE=30H 基址 ADD SI,BX ;W基址+IR5=中断类型号35H SAL SI,2 ;中断类型号为35H*4=中断向量存在SI MOV DS:[SI],AX ;将入口地址AX送到中断向量表中 PUSH CS POP AX MOV DS;[SI+2],AX POP DS

相关文档
最新文档