第一章 可编程中断控制器8259A

第一章 可编程中断控制器8259A
第一章 可编程中断控制器8259A

第一章 可编程中断控制器8259A

可编程中断控制器8259A 是Intel 公司为8086/8088 CPU和8080/8085 CPU 控制外部中断而设计开发的芯片,也可采用8259A来扩展MCS-51单片机的外部中断源。8259A将中断源优先级判优、中断源识别和中断屏蔽电路集于一体,不需要附加任何电路就可以对外部中断进行管理,单片可以管理8级外部中断,在多片级联方式下(1个主片级联8个从片),最多可以管理64 级的外部中断。

1 8259A的内部结构和引脚功能

1.1 8259A内部结构

图1 8259A的内部结构

8259A的内部结构如图1所示,它由8个部分组成:

(1)数据总线缓冲器

数据总线缓冲器是8位双向、三态缓冲器,是8259A与系统数据总线的接口。CPU编程控制字写入8259A、8259A的状态信息读出、以及中断响应时8259A送出的CALL指令机器码或中断类型号,都经过它传送。

(2)读/写控制逻辑

读/写控制电路接收CPU送来的读/写命令RD、WR,片选信号CS及端口选择信号A0。

读/写操作由这4个信号控制来实现,使8259A接收CPU送来的初始化命令字(ICW)和操作命令字(OCW),或将内部状态信息送给CPU。

(3)级联缓冲/比较器

级联缓冲/比较器用于多片8259之间的连接,使得中断源可由8级扩展至64级。当多片8259A采用主从结构级联时,与CPU相连的8259A为主片(主片的INT端与CPU的中断

请求输入端相连),其SP线接高电平;与主片相连的8259A为从片(从片的INT端与主片的IRi端相连),其SP线接地。主片的级联缓冲/比较器可在CAS2~CAS0上输出地址选择码,

从片的级联缓冲/比较器可在CAS2~CAS0上接收主片发来的编码,并与初始化命令字ICW3中的ID2~ID0进行比较。

(4)中断请求寄存器IRR

中断请求寄存器IRR是一个8位寄存器,存放外部输入的中断请求信号IR0~IR7。当某个IR端有中断请求时,IRR中的相应位置1。可以允许8个中断请求信号同时进入,此时IRR寄存器被置成全1。当中断请求被响应时,IRR的相应位复位。

(5)中断屏蔽寄存器IMR

中断屏蔽寄存器IMR是一个8位寄存器,用来屏蔽已被锁存在IRR中的中断请求信号。当用软件编程使IMR中某一位为0时,允许IRR中相应位的中断请求进入中断优先权判别器PR;若为1,则此位中断请求被屏蔽。

(6)中断服务寄存器ISR

中断服务寄存器ISR是一个8位寄存器,保存正在处理中的中断请求信号。某个IR端的中断请求被CPU响应后,当CPU发出第一个INTA信号时,ISR中的相应位置1,一直

保存到该级中断处理结束为止。当ISR中有多个“1”时,表明CPU正在为优先级较低的中断服务时,又有优先级较高的中断请求,则CPU转去处理较高的中断,形成中断嵌套。(7)优先权判别电路PR

优先权判别器PR对保存在IRR中的中断请求进行优先级识别,选出最高优先级的中断请求到中断服务寄存器ISR中去。若8259A正为某一中断服务,而又出现新的中断请求,则PR判断新的中断请求优先级别是否更高;若是,则进入中断嵌套。

(8)控制逻辑

控制逻辑电路是8259A的内部控制器,有7个寄存器,其中ICW1~ICW4用来存放初始化命令字,管理8259A的工作;OCW1~OCW3用来存放操作命令字,对中断处理过程进行动态控制。其功能包括根据IRR和IMR的置位情况,通过PR判定优先级,向CPU发

出中断请求信号INT;接收来自CPU的中断响应信号INTA,使ISR相应位置1,并使IRR

相应位为0,避免该中断源一次申请产生两次或两次以上中断。

1.2. 8259A引脚功能

8259A为28脚双列直插式封装,外部引脚如图2所示。各引脚功能如下:

D7~D0:双向、三态数据线,可与系统的数据总线直接相连。

WR:写控制信号,输入、低电平有效。与控制总线上的信号相连。

RD:读控制信号,输入、低电平有效。与控制总线上的信号相连。

CS:片选信号,输入、低电平有效。CS=0,本8259A被选中工作,CS=1,本8259A

不工作。

A0:地址选择信号,输入,用来选择内部端口。8259A只有两个端口地址,常把A0=0所对应的端口称为“偶端口”,把A0=1所对应的端口称为“奇端口”。

INT:中断请求信号,输出、高电平有效。是8259A向CPU输出的中断请求。

INTA:中断响应信号,输入、低电平有效。对于8080/8085系统,需要CPU在中断响应期间给8259A 发三个INTA负脉冲信号。第一个用于使8259A将正在响应的最高优先级

中断请求保存在中断服务寄存器ISR的相应位中,并将中断请求寄存器IRR中的相应位清零,同时使8259A 把CALL 指令的操作码(11001101)送上数据线以供CPU读入到指令寄存

器IR 中;第二个使8259A 把中断请求所对应的中断服务程序入口地址(即中断向量)的低8位提供给CPU ;第三个使8259A 把中断服务程序入口地址的高8位提供给CPU 。CPU 执行8259A 提供的CALL 指令就可转到相应的中断服务程序入口地址。对于8086/8088系统,需要CPU 在中断响应期间给8259A 发两个INTA 负脉冲信号。

第一个用于使8259A 将正在响应的最高优先级中断请求保存在ISR 的相应位中,并将IRR 中的相应位清零(若采用级联

方式,假如该8259A 为主片,则此时该主片8259A 还将给各从片8259A 送出地址选择码);第二个使8259A 把中断请求所对应的中断类型码提供给CPU ,此后CPU 将根据中断类型码转移到相应的中断服务程序入口地址。

IR0~IR7:外设向8259A 发出的中断请求信号,输入,高电平有效。

CAS2~CAS0:级联信号线,双向。当8259A 作为主片时,为输出线;当8259A 作为从片时,为输入线。

EN /SP :主从片设定/允许缓冲信号,双向双功能,低电平有效。当8259A 工作在缓冲方式(8259A 通过数据总线驱动器和数据总线相连)时,EN /SP 作为输出信号线EN ,当EN =0时,启动数据总线驱动器,以增加8259A 输入/输出数据的驱动能力。当8259A 工作在非缓冲方式(8259A 直接和数据总线相连)时,EN /SP 作为输入信号线SP ,用以指明该片是主片还是从片,SP =1,该片为主片;SP =0,该片为从片,注意单片8259A 时EN /SP 接高电平。

WR CS

RD

INTA

EN

/SP

图2 8259A 引脚图

2 8259A 的工作方式

8259A 的工作方式(即中断管理方式)包括中断触发方式、中断屏蔽方式、优先权管理方式、中断结束方式、连接系统总线的方式。这些方式都可通过编程来设置。 2.1 中断触发方式(中断请求方式)

有边沿触发方式和电平触发方式两种。

边沿触发方式是指8259A 将中断请求输入端(IR 端)出现的上升沿作为中断请求信号。

中断请求输入端出现上升沿触发信号后,可以一直保持高电平。

电平触发方式是指8259A将中断请求输入端出现的高电平作为中断请求信号。当中断得到响应后,中断请求输入端必须及时撤除高电平,否则会产生不必要的第二次中断请求。

中断触发方式的选择可通过设置初始化命令字ICW1中的D3位实现,置1为电平触发方式,置0为边沿触发方式。

2.2 中断屏蔽方式

包括普通屏蔽方式和特殊屏蔽方式两种。

普通屏蔽方式是指将中断屏蔽寄存器IMR中某一位或某几位置1,即可将相应位的中断请求屏蔽掉。这种方式下,当执行某一中断服务程序时,由于优先权判别器PR的作用,只允许级别高的中断源申请中断,而不允许级别低的中断源申请中断。该方式可通过设置操作命令字OCW1实现,可在主程序中写入,也可在中断服务程序中写入。

特殊屏蔽方式能对本级中断进行屏蔽,从而开放优先级较低的中断请求。在执行某一中断服务程序时,若在某种情况下,想开放接受级别较低的中断请求,应使IMR中本级中断的相应位为1,屏蔽本级中断,为开放较低中断提供可能。但仅此是不够的,因为此时ISR 中的相应位为1,将禁止较低中断请求。设置特殊屏蔽方式后,并编程使IMR某位置1,就会同时使ISR的对应位复位。这样,不只屏蔽了当前正在处理的本级中断,而且真正开放了较低中断。该方式可通过设置操作命令字OCW3中的D6、D5位为11实现,并总在中断服务程序中使用。若想退出特殊屏蔽方式,则通过设置OCW3中的D6、D5位为10即可。

2.3 优先权管理方式

有固定优先级和循环优先级两种管理方式。

固定优先级是指各中断源的优先级固定,由IRi引脚编号确定,又分为普通全嵌套方式和特殊全嵌套方式。

普通全嵌套方式是8259A最常用、最基本的工作方式,简称全嵌套方式。在该方式下,IR7~IR0的优先级顺序是IR0最高,IR7最低。且一个中断被响应,只有比它更高优先级的中断请求才会被响应。

特殊全嵌套方式与全嵌套方式基本相同,不同之处在于该方式不但能响应比本级高的中断申请,而且能响应同级的中断申请。该方式一般用于多片8259A的级联方式中,由于从片的INT端接到主片的IRi端,因此当前正在执行的某一中断服务程序是由某一从片的IRi 中断源引起的。这时有可能发生该从片上比IRi级别高的中断源提出请求,则从片予以响应,向主片发INT信号,但主片分不出来,只将它们视为同一级别。若主片设为普通全嵌套方式,则主片不响应,只有主片设为特殊全嵌套方式,主片才能响应。

系统中若只有单片8259A时,通常采用普通全嵌套方式。系统中有多片8259A级联时,主片必须采用特殊全嵌套方式,从片可采用普通全嵌套方式。

固定优先级方式的选择可通过设置初始化命令字ICW4中的D4位实现,置1为特殊全嵌套方式,置0为普通全嵌套方式。

循环优先级是指当某个中断源受到中断服务后,它的优先级别就自动降为最低,而相邻低一级中断源的优先级升为最高。例如,当IR5受到服务后,IR6的优先级升为最高,其他由高至低依次为IR7,IR0,IR1,IR2,IR3,IR4,IR5。循环优先级方式又分为优先级自动循环方式和优先级特殊循环方式。

优先级自动循环方式是指在该方式下,初始优先级顺序是IR0最高,IR7最低。

优先级特殊循环方式是指在该方式下,由用户编程决定初始时的最低优先级。如规定IR5最低,则优先级顺序由高至低依次为IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5。

优先级自动循环方式可通过设置操作命令字OCW2中的D7、D6位为10实现;优先级特殊循环方式可通过设置操作命令字OCW2中的D7、D6位为11实现,同时OCW2中的D2、D1、D0位指出哪个中断源级别最低。

2.4 中断结束方式

当某个中断源发出的中断请求得到响应时,8259A会使ISR中的相应位置1,表示CPU 正在为该中断源服务。而当某个中断服务程序结束时,必须将ISR中的相应位清0,表示该中断源的中断服务已经结束。中断结束方式即是指使ISR中相应位清0的方式,可分为自动结束方式和非自动结束方式两类。

自动结束方式(AEOI)是指在该方式下,ISR中的相应位清0是由硬件自动完成。当CPU 响应某级中断后,在发出的第三个(8080/8085系统)或第二个(8086/8088系统)INTA信号后

沿时会自动将ISR中的相应位清0。注意:此时中断服务程序并未结束。

AEOI只适用于1片8259A,且不会发生中断嵌套的情况。这是因为采用AEOI方式,当硬件自动清除ISR中的相应位时,中断服务程序并未结束,此时有可能会发生同级或低级的中断请求,只要CPU中断是开放的,CPU就可能会响应同级或低级的中断请求,而高级的中断请求反而可能得不到及时地处理。

AEOI可通过使初始化命令字ICW4中的D1位置1实现。

非自动结束方式(EOI) 是指在该方式下,需要通过CPU发指令来使ISR中的相应位清0。又分为普通中断结束方式(普通EOI)和特殊中断结束方式(特殊EOI)。

在全嵌套方式下,任何一级中断处理结束返回上一级程序前,普通EOI通过软件方法向8259A发一个中断结束命令(放在返回指令前),8259A收到后,自动将ISR中级别最高的置1位清0(此位对应当前正在处理的中断)。

特殊EOI也是通过软件方法向8259A发一个中断结束命令,但命令字中须指出要结束哪一级中断源,从而使ISR中相应位清0。

普通EOI首先要使初始化命令字ICW4中的D1位置0,然后通过设置操作命令字OCW2中的D7、D6、D5位为001或101实现。特殊EOI首先要使初始化命令字ICW4中的D1位置0,然后通过设置操作命令字OCW2中的D7、D6、D5位为011或111实现,同时OCW2的D2、D1、D0位给出结束中断处理的中断源号。

另外在特殊全嵌套方式中,对中断结束的操作应注意软件必须检查刚结束的中断是否是从片的唯一中断。方法如下:先向从片发一个普通EOI命令,然后读ISR内容。若为0,表示只有一个中断服务,这时再向主片发一个EOI命令,否则,说明该从片有两个以上中断,则不应发给主片EOI命令,待该从片中断服务全部结束后,再给主片发EOI。

2.5 连接系统总线的方式

分缓冲方式和非缓冲方式两种。

在多片8259A级联的大系统中,8259A通过总线驱动器和数据总线相连,此即为缓冲方式。

当系统中只有单片或片数不多的8259A时,一般将8259A直接与数据总线相连,此即为非缓冲方式。

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

8259A的多种工作方式均可由编程设定。CPU发给8259A的命令分初始化命令字ICW 和操作命令字OCW两种。初始化命令字ICW1~ICW4通常是在计算机系统启动时,由初始化程序设置,一旦设定,一般在系统工作过程中就不再改变。而操作命令字OCW1~OCW3是由应用程序来设定,用来对中断处理过程进行动态控制,如中断屏蔽控制、中断结束和优先级循环控制、中断状态的读/写查询等。因此,操作命令字允许重新设置。

3.1 ICW1——芯片控制初始化命令字

图3 ICW1的格式

8259A最初写入的必是ICW1,其格式如图3所示。

A0=0,表明ICW1要写入偶地址端口。D4=1是ICW1的标志,表示当前设置的是ICW1。

D7~D5(A7~A5):只用于8080/8085系统中,作为中断服务程序入口地址(即中断向量)

的A7~A5。而在8086/8088系统中不用,可为任意值(一般设定为0)。

D3(LTIM):IRi的触发方式选择位。为1,电平触发;为0,边沿触发。

D2(ADI):这一位在8086/8088系统中不起作用。而在8080/8085系统中,该位决定中断源中每两个相邻的中断服务程序入口地址的间隔值。

D1(SNGL):单片/级联方式指示位。为1,单片使用;为0,级联方式。

D0(IC4):表示是否使用ICW4。8086/8088系统必须设定为1,即必须要写入ICW4。

当ICW1写入后,8259A内部有一个初始化过程,相当于RESET功能,其操作是:顺

序逻辑复位,准备按ICW2、ICW3、ICW4顺序接受其余ICW;清除ISR、IMR;指定优先级方式为全嵌套方式(即指定IR0优先级最高,其余依次为IR1,IR2,…,IR7);从片方式

的地址为7(对应IR7);普通屏蔽方式;非自动中断结束方式;状态读出电路预置为IRR。

3.2 ICW2——中断向量/中断类型号设置命令字

ICW2用于设置中断向量(8080/8085系统)或中断类型号(8086/8088系统),其格式如图4

所示。

图4 ICW2的格式

A0=1,表明ICW2要写入奇地址端口。

D7~D0(A15~A8):用在8080/8085系统中,是中断向量的高8位。

D7~D3(T7~T3):用在8086/8088系统中,由用户编程设定,是中断类型码的高5位。

D2~D0:在8086/8088系统下,中断类型号的低3位由中断源所接的IR7~IR0引脚所决定,与ICW2的D2~D0位无关,用户编程时可使D2~D0为任意值,当8259A向CPU发送中断类型码时,D2~D0根据对应的IRi自动生成。

对于8080/8085系统,ICW2和ICW1的D7~D5位组成了中断向量的页面地址。

3.3 ICW3——主片/从片标识命令字(级联控制字)

ICW3仅用于级联方式,而且主片、从片均要写入ICW3,但两者含义有所不同。

主片格式如图5所示。

图5 主片ICW3的格式

A0=1,表明ICW3要写入奇地址端口。

D7~D0(S7~S0):表明主片IR7~IR0是否接有从片。为1,接从片;为0,未接从片,中断请求直接来自外设中断源。

从片格式如图6所示。

图6 从片ICW3的格式

D7~D3可为任意值。

D2~D0(ID2~ID0):从片的标识码,表明该从片的INT端接到主片的IR的哪一端。例如,ID2~ID0=101,表示这个从片的INT端接至主片的IR5端。

3.4 ICW4——方式控制命令字

当ICW1中的D0=1时才写入。8086/8088系统中必须要写入ICW4,其格式如图7所示。

uPM

1 8086/8088系统

0 8080/8085系统

1 自动结束中断方式

0 非自动结束中断方式

1 主片

0 从片

1 缓冲方式

0 非缓冲方式

A0D7D6D5D4D3D2D1D0

1 特殊全嵌套方式

0 普通全嵌套方式

图7 ICW4的格式

A0=1,表明ICW4要写入奇地址端口。

D7~D5:特征位,恒为0,表示送出的是ICW4。

D4(SFNM):中断嵌套方式选择位。为1,特殊全嵌套方式,一般仅用于级联方式下的主片;为0,普通全嵌套方式。

D3(BUF):缓冲方式选用位。为1,缓冲方式;为0,非缓冲方式。

D2(M/S):缓冲方式下主片/从片选择位。为1,主片;为0,从片。当BUF=0时,M/S 位不起作用。

D1(AEOI):中断结束方式选择位。为1,AEOI方式;为0,EOI方式。

D0(uPM):系统选择位,指明8259A当前工作在哪种CPU系统中。为1,8086/8088系统;为0,8080/8085系统。

3.5 OCW1——中断屏蔽控制字

OCW1是中断屏蔽操作命令字,可直接对IMR的相应位进行设置,其格式如图8所示。

图8 OCW1的格式

A0=1,表明OCW1要写入奇地址端口。

D7~D0(M7~M0):Mi置1,则IMR的相应位置1,即屏蔽了IRi 的中断请求信号。3.6 OCW2——中断结束和优先级循环控制字

OCW2的功能包括设置中断优先级循环方式和发送中断结束EOI命令,其格式如图9所示。

图9 OCW2的格式

A0=0,表明OCW2要写入偶地址端口。

D4、D3=0是OCW2的特征位。

D7(R):优先级方式控制位。为1,循环优先级;为0,固定优先级。

D6(SL):决定L2~L0是否有效的标志。为1,有效;为0,无效。

D5(EOI):中断结束命令位。为1,发EOI命令;为0,则该位不起作用。

D2~D0(L2~L0):双功能。在特殊EOI时,L2~L0指出具体要使ISR的哪一位复位;在优先级特殊循环方式时,L2~L0指出循环开始时IRi中哪个优先级最低。

R、SL、EOI是组合起来使用的,表1给出了由它们组合产生的8种工作方式。

【例】若对某8259A的OCW2设置为11000101B,试分析此操作命令字所确定的工作方式。

根据表1,OCW2的D7~D5为110,表明设置为优先级特殊循环方式;D2~D0为101,表明指定初始时最低优先级为IR5,8259A各中断源的优先级由高至低依次为IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5。

表1 R、SL、EOI组合产生的8种工作方式

R SL EOI功能说明

0 0 1 普通EOI命令,全嵌套方式

0 1 1 特殊EOI命令,全嵌套方式,L2~L0指定的ISR位清0

1 0 1 普通EOI命令,优先级自动循环(普通EOI循环方式)

1 1 1 特殊EOI命令,优先级特殊循环,L2~L0指定的ISR位清0,且L2~L0指定的IR位为最低优先级(特殊EOI循环方式)

1 0 0 自动EOI时,优先级自动循环(自动EOI循环方式)

0 0 0 自动EOI时,取消优先级自动循环

1 1 0 优先级特殊循环,L2~L0指定优先级最低的IR位

0 1 0 无操作

【例】某8259A中断系统初始时设置IR0为最高优先级,IR7为最低优先级。有IR2、IR5两个中断请求,当任何一级中断被处理完后,CPU向8259A发送普通EOI循环命令。试给出IR2及IR5中断处理完后中断优先级的变化情况。

ISR7ISR6ISR5ISR4ISR3ISR2ISR1 ISR0

ISR内容

0 0 1 0 0 1 0 0

初始状态

优先级7 6 5 4 3 2 1 0

ISR内容0 0 1 0 0 0 0 0 处理完IR2

优先级 4 3 2 1 0 7 6 5

ISR内容0 0 0 0 0 0 0 0 处理完IR5

优先级 1 0 7 6 5 4 3 2

3.7 OCW3——特殊屏蔽方式和查询方式操作字

OCW3有三个功能:设置/取消特殊屏蔽方式;设置中断查询方式;设置读8259A内部寄存器(IRR、ISR)的命令,其格式如图10所示。

A0=0,表明OCW3要写入偶地址端口。

D4=0,D3=1,为特征位;D7未用,一般为0。

D6(ESMM)、D5(SMM):配合使用,设置/取消特殊屏蔽方式。11,设置特殊屏蔽方式;10,取消特殊屏蔽方式。当ESMM=0,保持原来屏蔽方式,SMM不起作用。

设置特殊屏蔽方式的方法:在某级中断服务程序中首先设置命令字OCW3的ESMM、SMM位为11,进入特殊屏蔽方式,然后通过设置命令字OCW1使该级的Mi位为1。这样该级中断被屏蔽而不允许发生同级中断,同时开放了低级别的中断请求。若要退出特殊屏蔽方式,通过设置命令字OCW3的ESMM、SMM位为10,执行输出指令即可。

D2(P):查询方式控制位。为1,CPU将8259A置于中断查询方式,并向8259A发出查询命令;为0,处于非查询方式。

D1(RR):读命令发送控制位。为1,CPU发读命令,为0,CPU不发读命令。

D0(RIS):读ISR 还是IRR 。为1,读ISR ;为0,读IRR 。该位只在RR=1时起作用。 读取ISR 、IRR 的方法是:首先关中断,然后执行输出指令送出OCW3,使RR=1,发出读命令。最后执行输入指令,把所选中的寄存器内容读入CPU 。

图10 OCW3的格式

中断查询方式是指CPU 在关中断的状态下,不响应中断请求,这时可采用查询方式使CPU 了解IR7~IR0端上哪一个有中断请求并为之服务。查询字的格式如图11所示。

A0=0,表明查询字从偶地址端口读出。

D7(I):表明有无中断请求。为1,有中断请求;为0,无中断请求。

D2~D0(W2~W0):表明当前申请中断的优先级最高的中断源。

图11 查询字的格式

读取查询字的方法是:CPU 首先关中断,然后送OCW3,使P=1,发出查询命令,最

后读取查询字。若I=1,则根据W2~W0判断出最高优先级的中断请求。

若使OCW3的P=1,RR=1,既发查询命令又发读命令,则首先读出的是查询字,再次

读出的是ISR 或IRR 。

4 8259A 初始化编程

8259A 正常工作之前,CPU 必须对每片8259A 进行初始化编程。初始化编程指通过指令按顺序依次将ICW1 ~ICW4命令字写入8259A 。其初始化流程图如图12所示。通常必须要写入ICW1和ICW2;ICW3在多片级联时写入(主片和从片都需设置);ICW4在8086/8088系统、特殊全嵌套方式、缓冲方式、自动结束中断方式(AEOI)下才需写入。

A0=0

A0=1

A0=1

A0=1

图12 8259A初始化流程图

【例】编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断,8088计数中断区的数码管上。上下拨动单脉冲开关,拨动二次,产生一个“”

.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 ;8259A初始化

MOV DX,IO8259_0

MOV AL,13H ;写ICW1=0001 0011,边沿,单片

;ICW4

OUT DX,AL

MOV DX,IO8259_1

MOV AL,08H ;写ICW2=0000 1000,

OUT DX,AL

MOV AL,09H ;写ICW4=0000 1001,普通全嵌套

;缓冲,从片,EOI,8086/8088系统OUT DX,AL

MOV AL,0FEH ;写OCW1=1111 1110,允许IR0

OUT DX,AL

RET

Init8259 ENDP

WriIntver PROC NEAR ;写中断向量

PUSH ES ;将ES压栈保护

MOV AX,0

MOV ES,AX ;中断向量表段地址为0

MOV DI,20H ;中断类型号n=8,4n=20H

LEA AX,INT_0 ;取中断向量偏移地址

STOSW ;AX->ES:DI

MOV AX,CS ;取中断向量段地址

STOSW ;AX->ES:DI

POP ES

RET

WriIntver ENDP

LedDisplay PROC NEAR

MOV AL,Counter

MOV AH,AL

AND AL,0FH

MOV Buffer,AL

AND AH,0F0H

ROR AH,4

MOV Buffer + 1,AH

MOV Buffer + 2,10H ;高六位不需要显示

MOV Buffer + 3,10H

MOV Buffer + 4,10H

MOV Buffer + 5,10H

MOV Buffer + 6,10H

MOV Buffer + 7,10H

LEA SI,Buffer

CALL Display8

RET

LedDisplay ENDP

INT_0: PUSH DX

PUSH AX

MOV AL,Counter

ADD AL,1

DAA

MOV Counter,AL

MOV ReDisplayFlag,1

MOV DX,IO8259_0

MOV AL,20H ;发普通EOI命令OCW2=0010 0000

OUT DX,AL

POP AX

POP DX

IRET

END START

讲义中有任何问题可联系李老师: sora2008@https://www.360docs.net/doc/5513552056.html,

《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内部结构和引脚图

实验六 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按钮,应当红灯亮绿灯灭,表明在执行中断服务程序;过一会儿红灯熄灭了,绿灯又亮了起来,表明中断服务程序已返回了主程序。 六.实验报告 应包括画电路图、试验程序框图、编程(要有注释)、调试过程及心得体会等。

实验七-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

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用于设置优先级循环

实验二:8259 中断控制器实验

实验二 8259A中断控制器实验 1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断, 8088计数中断次数,显示于G5区的数码管上 2、运行程序 3、上下拨动单脉冲开关,拨动二次,产生一个“”,观察结果, 数码管上显示的次数与拨动开关次数是否对应。 .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 ;?a?D?? START1: CMP REDISPLAYFLAG,0 JZ START1 CALL LEDDISPLAY MOV REDISPLAYFLAG,0 JMP S TART1 INIT8259 PROC NEAR MOV DX,IO8259_0 MOV AL,13H OUT DX,AL MOV DX,IO8259_1 MOV AL,08H OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0FEH OUT DX,AL

RET INIT8259 ENDP WRIINTVER PROC NEAR PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,INT_0 STOSW MOV AX,CS STOSW POP E S RET WRIINTVER ENDP LEDDISPLAY PROC NEAR MOV AL,COUNTER MOV AH,AL AND AL,0FH MOV BUFFER,AL AND AH,0F0H ROR A H,4 MOV BUFFER + 1,AH MOV BUFFER + 2,10H ;??áù??2?Dèòa??ê? MOV BUFFER + 3,10H MOV BUFFER + 4,10H MOV BUFFER + 5,10H MOV BUFFER + 6,10H MOV BUFFER + 7,10H LEA SI,BUFFER CALL DISPLAY8 RET LEDDISPLAY ENDP INT_0: PUSH DX PUSH AX MOV AL,COUNTER ADD AL,1 DAA MOV COUNTER,AL MOV REDISPLAYFLAG,1 MOV DX,IO8259_0 MOV AL,20H

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中断控制器和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

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位选端口送入

中断控制器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、程序流程图 主程序

实验六 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中断控制器实现

一、实验目的与要求 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 的内部结构:

实验一 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

使用8259A的单级中断控制实验

实验五使用8259A的单级中断控制实验 一、实验目的 1、掌握中断控制器8259A与微机接口的原理和方法。 2、掌握中断控制器8259A的应用编程。 二、预备知识 1、8259A的内部结构 8259A是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。 如图5-19所示,它由中断请求寄存器(IRR)、优先级分析器、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。 图5-19 中断请求寄存器:寄存所有要求服务的请求IR0~IR7。 中断服务寄存器:寄存正在被服务的中断请求。 中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号,该位为1,屏蔽该号中断,否则开放该号中断。 数据总线缓冲器:是双向三态的,用以连接系统总线和8259A内部总线,通过它可以由CPU对8259A写入状态字和控制字。 读写控制电路:用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A的工作方式和控制方式。 级联缓冲器/比较器:用于多片8259A的连接,能构成多达64级的矢量中断系统。 2、8259A编程及初始化 (1) 写初始化命令字

优先级排队和确定系统用单片还是多片。 * 写初始化命令字ICW2,以定义中断向量的高五位类型码。 * 写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A从片。 第i位=0,表明IRi引脚上无从片 第i位=1,表明IRi引脚上有从片 * 写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中断

8259中断控制实验报告

8259中断控制实验 一.实验目的 1. 掌握8259 中断控制器的工作原理。 2. 掌握系统总线上IR1,IR2 中断请求的应用编程方法。 二.实验设备 IA-32 架构的微机系统及应用教学平台一套。 三.实验原理 3.1 中断控制器8259简介 中断控制器8259 是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。8259 的内部结构和引脚如图1 所示。 图 1 8259 内部结构和引脚图 8259 的命令共有7 个,一类是初始化命令字,另一类是操作命令。8259 的编程就是根据应用需要

将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4 各命令字格式如图2所示,OCW1-OCW3各命令字格式如图3 所示,其中OCW1 用于设置中断屏蔽操作字,OCW2 用于设置优先级循环方式和中断结束方式的操作命令字,OCW3 用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259 内部寄存器的读出命令。 图 2(a) ICW1格式 图 2(b) ICW2格式 图 2(c) ICW3格式 图 2(d) ICW4格式

实验五 8259A中断控制器实验

南昌大学实验报告 学生姓名:林海金学号:6100210178 专业班级:卓越通信101班 实验类型:验证□综合□设计□创新实验日期:2012-5-22 实验成绩: 一、实验项目名称 实验五8259A中断控制器实验 二、实验目的 (1)了解8259A中断控制器的工作原理。 (2)了解PC机中断的原理和过程。 (3)学会中断程序的编写。 三、实验要求 编写中断程序,在请求8259A1时,能够响应8259A的硬件中断,并在数码管上显示“IRQ0…”字样,中断结束时,显示“E…IRQ”。 四、实验仪器及连线方式 1)实验仪器:AEDK-T598D实验系统。 2)连线方式:INT0连接至+PULSE;8259A的片选接至试验箱的200H;8279的片选接至210H~217H。 五、实验说明 以中断0为例,先加载主中断程序,然后再加载中断程序IRQ0程序,然后打开对话窗口,输入“SW 0:0020,<回车>0000,””8200<回车>”,在执行“G8100:0<回车>Y”即可。

六、实验参考程序 INT00 EQU 200H INT01 EQU 201H Z8279 EQU 239H D8279 EQU 238H LEDMODE EQU 00H SCANFRQ EQU 38H DATA SEGMENT DATA ENDS STACK SEGMENT STA DW 50 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: CLI MOV AL,13H MOV DX,INT00 OUT DX,AL NOP NOP MOV AL,8 MOV DX,INT01 OUT DX,AL MOV CX,0FFFH L00: LOOP L00 MOV AL,3 MOV DX,INT01 OUT DX,AL MOV CX,0FFFH MOV CX,0FFFH L01: LOOP L01 NOP NOP MOV DX,Z8279 MOV AL,LEDMODE OUT DX,AL MOV AL,SCANFRQ OUT DX,AL MOV DX,INT01 MOV AL,00H OUT DX,AL MOV CX,0FFFH L02: LOOP L02 MOV DX,INT00 MOV AL,20H OUT DX,AL MOV CX,0FFFH L03: LOOP L03 MOV DX,Z8279 MOV AL,90H OUT DX,AL MOV AL,0D0H OUT DX,AL MOV CX,0FFFFH L2: LOOP L2

相关文档
最新文档