微机原理 第7章_第1页
微机原理 第7章_第2页
微机原理 第7章_第3页
微机原理 第7章_第4页
微机原理 第7章_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 使用中小规模集成电路构成接口电路,电路结构复杂,实现烦琐,可靠性差。随着半导体技术的发展,出现了专用的接口芯片。它将接口电路及其附属电路集成到一个芯片中,并设有与CPU总线相匹配的电路,使接口芯片可以方便地连接到总线上。另外这类芯片一般多是的,可通过软件控制芯片的工作方式,使用灵活方便。 8255A是是INTEL系列的并行接口芯片,它是可系列的并行接口芯片,它是可编程的,可以通过软件控制芯片的工作方式和工作编程的,可以通过软件控制芯片的工作方式和工作过程,使用灵活方便。过程,使用灵活方便。 8255A与外设相连接的有 个口,即,3个口均为,每个端口都可由程序设定为各种不同的工作方式和数据传输

2、方向。 有一个8位数据输入锁存器和一个8位数据输出锁存/缓冲器,所以,用端口A作为输入或输出时,数据均具备锁存能力; 有一个8位数据输入缓冲器和一个8位数据输出锁存/缓冲器; 有一个8位数据输入缓冲器和一个8位数据输出锁存/缓冲器,可以分成两组独立4位端口,并具备位控功能。 8255A将这三个口分为两组:A组(A口的8位和C口的高4位)、B组(B口的8位和C口的低4位),分别由组和组控制电路控制 。 这两组控制电路根据CPU发出的方式控制字来确定8255A的工作方式,每个控制组都接受来自读/写控制逻辑的命令,接受来自内部数据线的控制字,然后向各有关端口发出相应的控制命令。 用来控制数据传送过程

3、,包括地址线A1、A0,片选信号CS和读、写控制信号RD、WR,复位信号RESET等,完成内部端口的选择和读写和复位操作。 数据总线缓冲器是8位双向三态缓冲器, 8255A与系统总线之间的命令、数据、控制字等信息都是通过它来传送的,它是系统总线与8255A之间交换信息的必经之路。VCC和和GND,接接5V电源。电源。PA0-7,PB0-7,PC0-7,端口端口A、B、C的外部引出的外部引出信号。可以设置不同数据信号。可以设置不同数据传输方向。传输方向。 复位信号,高电平有效。复位使内部端口输出寄存器,A、B、C端口设置为。 双向数据信号线,用于8255A与系统数据线相连,传送CPU与8255A

4、之间的数据、控制信息、状态信息。 8255A读信号,低电平有效。当有效时,CPU从8255A的指定端口读取数据或状态信息。通常接系统总线的读选通信号。 8255A写信号,低电平有效。当有效时,CPU向8255A指定端口写入控制字或数据。通常接系统总线的写选通信号。 片选信号,当它为低电平(有效)时,8255A才能参与总线操作。内部端口选择信号。当片选有效选中8255A时,由A1A0的编码来决定是选中A口、B口、C口,还是选中控制字寄存器。A1A0端口00A01B10C11控制 8255A是可编程的并行接口,可以利用软件编程来指定8255A的工作方式。只要将不同的控制字装入芯片中的控制寄存器,即

5、可确定8255A的工作方式。 8255A共有两个控制字:。这两个控制字均需写入控制端口,在控制字中用来区分。 若控制字的 ,则为控制字; 若控制字的,则是C口的控制字。 8255A的方式选择控制字主要用于设置A组和B组的工作方式,以及A、B、C端口的数据传输方向。 设置A组为方式0输出,B组为方式0输入,端口C全部用于输出。写出方式选择控制字。方式选择控制字 8255A的端口C作为输出口使用时,可以通过置1/置0控制字对端口的各位 进行控制。 通过置1/置0控制字设置PC7为1,PC3为0。设8255A的端口号为8000H8003H。控制字PC7置1: 0000 1111B = 0FHPC3置

6、0: 0000 0110B = 06H非位控方式 8255A有三种基本的工作方式,这些工作方式可用软有三种基本的工作方式,这些工作方式可用软件编程来指定。件编程来指定。l 其中其中A组可以工作在组可以工作在3种方式,而种方式,而B组只有前组只有前2种工作种工作方式。方式。 在方式0下,8255A与外设相连的A、B、C三个端口均可被定义为输入或输出传送方式,没有固定用于应答的联络信号。方式0适合无条件传输。 两个8位端口和两个4位端口,输入输出有种不同的组合。 输出是锁存的,输入是不锁存的。 在这种方式下CPU可以通过简单的输入/输出指令对各端口进行读写操作。功能上类似于前面介绍的使用锁存器和三

7、态门构成的简单接口电路。 8255A的总线接口的时序与8088/8086总线时序一致,可以直接连接到CPU总线上,使用方便。输入/输出过程与前面介绍的使用锁存器和三态门构成的简单接口电路基本相同。使用8255A的C口扩展8位独立式按键,由A口直接驱动一位共阳极LED数码管,当某键按下时显示该键的序号,优先级由K0至K7依次降低。7段码字模表存放在内存TABLE开始的单元,8255A口地址为300H303H。 使用8255A设计数码转换器。B口输入的数据经CPU转换后由A口输出。输入/输出的对应关系存放在内存TABLE开始的256字节数码转换表中。设8255A的端口地址为80H,81H,82H,

8、83H。方式选择控制字 在方式1下,A口和B口作为数据的输入和输出口,同时利用C口的某些位固定作为控制和状态信号,这种方式常用于中断和程序查询传送。 可提供一个或两个选通端口,每个包括一个位数据口和三条控制线,并能提供中断逻辑。 端口可设置为输入或输出。组数据的输入/输出均有锁存功能,组数据的输出均有锁存功能而输入不具备锁存功能。 C口剩余位可作为一般输入/输出口使用。 当A口和B口设定为输入时,各指定了C口的3根线作为8255A与外设及CPU之间的联络信号,如图所示。B口8位STBBIBFBINTRBD7D0RDINTEBPC0PC2PC1PB7PB08位STBAIBFAINTRAI/OD7

9、D0RDA口INTEAPC3PC4PC5PA7PA0PC7、PC6输入选通信号,低电平有效。它有效时,表示外设的数据已准备好,同时将外设送来的数据锁存到8255A端口的输入数据缓冲器中,等待CPU读取。输入缓冲器满信号,高电平有效。当它有效时,说明输入缓冲器中锁存有信息,且尚未被CPU取走,通知外设不能再传送新数据;只有当它为低电平时,即表示CPU已读取了数据,输入缓冲器变空,此时才允许外设传送新的数据。中断请求信号,高电平有效。它有效时,请求CPU从8255A读取外设已送入的数据。中断允许信号,它是一个内部控制位。通过对(端口A)或者(端口B)置1/置0来开放/禁止端口输入中断请求。通用输入

10、输出信号,如果A组和B组没有全部工作在方式1,C口的其它剩余位可作为通用输入输出信号使用。 当外设准备好数据,在向数据端口送出数据后,送一个选通信号,将数据置入输入缓冲器并使8255A的IBF为高电平,告诉外设当前输入缓冲器已满,暂时不要送入数据;CPU也可以通过对C口对应位的读操作了解是否有数据输入。如果INTE为1,STB后沿将使INTR有效,向CPU发出中断请求信号,待CPU响应这一中断请求时,可以在中断服务程序中安排IN指令对数据端口(A或B)实施读操作,此操作将IBF置“0”,可以进行下一个数据的传输。 当A口与B口设定为方式1输出时,也各指定了C口的3根线为信号线,其引脚定义和端口

11、结构如图所示。 输出缓冲器满信号,低电平有效。它有效时,表示CPU已将数据写到8255A的输出端口,通知外设来取数。外设送来的响应信号,低电平有效。当它为低电平时,表示外设已经接收到了CPU送来的数据。中断请求信号输出,高电平有效。当它有效时,请求CPU向8255A端口写入数据。中断允许控制位,它是一个内部控制位。通过对(端口A)或者(端口B)置1/置0来开放/禁止端口输出中断请求。通用输入输出信号,如果A组和B组没有全部工作在方式1,C口的其它剩余位可作为通用输入输出信号使用。 当外设接受了由CPU送给8255A的数据后,对8255A发送一个响应信号ACK,此信号将OBF复位为高电平,如果I

12、NTE置成1,ACK将相应端口的INTR置高向CPU发出中断请求,请求CPU再输出后面的数据。可以在中断服务程序中安排OUT指令对数据端口(A或B)写入后续字节。8255A口地址D0HD3H。方式选择控制字 81H初始化:方式选择控制字 A0H初始化: 在方式2下,即能发送数据又能接收数据,CPU可以通过8位数据线与外设进行双向通信。方式2只限于端口A使用,它用A口作为双向数据端口,使用C口的5根线(PC3PC7)配合进行信息传送。当A口工作在方式2时,B口仍可以工作在方式0或方式1。 方式2只适用于端口A。 端口A工作于方式2时,端口C用5个数位自动配合端口A提供控制信号和状态信号。 A口对

13、输入和输出的数据都是锁存的。 在方式2下,C口提供的联络信号实际上就是A口在方式1输入和输出时两组信号线的组合。因此,各个引脚的定义也与方式1的相同,只不过中断请求信号INTR既可在输入时向CPU请求中断,也可在输出时向CPU请求中断。其引脚定义和端口结构如图所示。 输入选通信号,低电平有效。它有效时,外设送来的数据锁存到8255A端口的输入数据缓冲器中。输入缓冲器满信号,高电平有效。当它有效时,说明输入缓冲器中已锁存有信息。输出缓冲器满信号,低电平有效。它有效时,表示CPU已将数据写到8255A的输出端口,通知外设来取数。外设送来的响应信号,低电平有效。输出中断允许信号,由PC6置1/置0设

14、置。输入中断允许信号,由PC4置1/置0设置。中断请求信号,高电平有效。它有效时向CPU申请中断。如果输入和输出中断均允许,CPU需根据和判断中断的来源。 工作在方式2的A口,可以认为是前面方式1的输入和输出相结合而分时工作的。其工作过程和方式1的输入输出过程一样。在PA7PA0上,可能出现8255A口输出数据到外设,也可能出现外设通过PA7PA0的数据送给8255A。这就要防止PA7PA0上的数据线竞争问题,在方式2输出时只有在ACK为低电平时才会输出数据,其余状态均为高阻态 。 方式2是一种双向工作方式,如果一个并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进

15、行,那么,将这个外设和8255A的端口A相连,并使它工作于方式2,就会非常合适。比如,磁盘驱动器就是这样一个外设,主机即可以往磁盘输出数据,也可以从磁盘输入数据,但数据输出过程和数据输入过程总是不重合的,所以,可以将磁盘驱动器的数据线与8255A的PA7PA0相连,再使PC7PC3和磁盘驱动器的控制线和状态线相连即可。 在CPU执行程序的过程中,由于某种突发事件的发生,使CPU暂时停止正在执行的程序,转向对该突发事件进行处理,对这个事件处理结束后又能回到原中止的程序,接着中止前的状态继续执行原来的程序,这一个过程就称为。把引起中断的原因或触发中断请求的来源称为。 8086可以处理不同的中断,每

16、个中断对应一个(0255),CPU根据中断类型码区分不同中断。从中断的来源来分这256个中断可分为硬件中断和软件中断两大类。 是通过外部硬件产生的,因此硬件中断又称外部中断。硬件中断可分为非屏蔽中断和可屏蔽中断两类。 通过CPU的 引脚输入,不受中断允许标志 的控制,总能被响应,非屏蔽中断一般只有一个。 通过 引脚进入,只有在中断允许标志 时,可屏蔽中断才能被响应。IF=0时,可屏蔽中断受到禁止。在一个系统中通过中断控制器(8259A)的配合工作可屏蔽中断可有多个。 CPU根据某条指令或者软件对标志寄存器中的某个标志的设置而产生,从软件中断的产生过程来说,完全和硬件电路无关,象除数为0、单步中

17、断、由中断指令引起的中断都是软件中断。 中中 断断优优 先先 级级内中断(除法错,内中断(除法错,INTOINTO,INTINT)最最 高高 最最 低低非屏蔽中断非屏蔽中断 NMINMI可屏蔽中断可屏蔽中断 INTRINTR单步中断单步中断 位于存储空间的,它是8086中断系统的基础。这个表可以容纳256个中断服务程序的入口地址,每个地址包括段地址和偏移量共4个字节,按照中断类型码顺序由内存0段0单元开始依次顺序存放。 各中断处理子程序入口地址在地址表中的存放位置(地址偏移量)称为,实际上中断向量就是指各中断处理程序入口地址在地址表中的存放地址。 中断类型码为20H的中断,它的中断向量为80H

18、,中断服务程序入口地址存放在0000:0080H处的连续4个内存单元中。 256个中断中的前5个为,它们有固定的定义和处理功能。其中非屏蔽中断为类型2,其余4个中断均为软件中断,类型0的中断是除数为零中断,当除法溢出时也会引起这个中断。类型1为单步中断,类型3为断点中断,这两个中断都是用于调试程序的。类型4为溢出中断 。 从类型5到类型31共27个中断为,为了保持系统间的兼容性以及当前系统与未来系统的兼容性,一般不要对这些中断自行定义。 其余类型中断可由用户自行定义和使用。 如果系统中使用的中断比较少,剩余的地址表空间可以用于其它用途(存放代码和数据)。 硬件中断是由外部设备通过,引脚送入的。

19、 从引脚进入的中断是,它不受中断允许标志IF的影响,非屏蔽中断类型号为2,中断向量为8,非屏蔽中断处理程序入口地址存放在0008H00BH这4个单元中。 当NMI引脚上出现中断请求时,不管CPU当前正在执行什么程序都会响应中断,进入对应中断处理程序执行。可见NMI优先级非常高,即使在可屏蔽中断处理过程中,非屏蔽中断也会被响应。 一般设备发出的中断都是从CPU的引脚送入的。当CPU接收到一个可屏蔽中断请求,如果IF=1,那么CPU会在执行完当前指令后响应中断,执行中断服务程序;如果IF=0,中断不被响应。 IF标志的设置和清除可以通过STI和CLI指令来设置和清除。 在一个系统中可屏蔽中断可以有

20、很多个,这些中断往往有主次之分,因而要用到中断优先级管理,当有几个可屏蔽中断同时到来时,CPU首先响应和处理优先级别最高的中断,当CPU正在处理某个中断时,如果外部又到来一个优先级更高的中断请求,那么CPU又会转向处理更高级中断,实现中断嵌套。在8086/8088系统中,多使用8259A中断控制器实现对多个中断源的管理。 当CPU接收到外部中断请求信号后,如果允许中断,就会响应这个请求,转入中断处理子程序。这个过程就是过程。 当CPU在引脚上接收到一个中断请求信号并且当前IF=1(允许中断),CPU就会在当前指令执行完后,开始响应外部中断请求。 首先CPU在INTA引脚上发出两个负脉冲,外部器

21、件接收到第二个负脉冲后,立即往数据总线上输送中断类型码供CPU读取,CPU在响应中断过程中要依次做以下几件事。 从数据总线上读取中断类型码,将其存入内部暂存器。 将标志寄存器值推入堆栈。 将中断允许标志IF和单步标志TF清零。清IF可以在中断响应过程中暂时屏蔽外部其它中断,以免中断响应过程被另一个中断请求打断。清TF是为了避免CPU以单步方式执行中断处理子程序。 将断点保护到堆栈中。断点是指在响应中断时,主程序中将要执行的下一条指令的地址,包括代码段寄存器CS的值和指令指针IP的值。只有保护了断点,才能在中断子程序执行完后正确返回主程序继续执行。 根据暂存器中存入的中断类型码获得中断向量,再由

22、中断向量从中断入口地址表中取得中断子程序入口地址,并转入相应的中断处理子程序。 如类型码20H,中断向量80H,将内存中0080H0083H这4个字节内容作为中断子程序入口地址,前2个字节装入IP,后两个装入CS,这样CPU要执行的下一条指令(由CS的IP指出)就是中断处理子程序的第一条指令。 CPU响应非屏蔽中断()的过程与响应的过程基本相同,但它不需理会中断允许标志IF。另外在响应非屏蔽中断时,并不从设备中读取中断类型码,因为由NMI进入的中断请求只能有一个,它,中断向量为8,直接从地址表08H0BH这4个单元获得中断处理子程序入口地址,转入相应中断处理程序执行。 ,在上升沿后要求保持至少

23、2个时钟周期高电平。 当一个中断被响应并进入中断处理程序后,如果发生非屏蔽中断,CPU仍会响应,中断当前执行的中断服务程序,转向执行非屏蔽中断服务程序。 如果在可屏蔽中断处理程序中,将,那么在可屏蔽中断程序执行过程中还可以响应INTR引脚上进入的可屏蔽中断,实现。 中断处理程序结束时中断返回指令会按照与中断响应相反的过程返回断点,先弹出IP和CS,再弹出标志,这些由硬件自动完成,不需人为干预。 有些情况下,即使中断允许标志IF为1,CPU也不能马上响应中断(可屏蔽),而是要等待下一条指令执行完后才能响应中断,主要有以下几种情况: ,CPU是将它与其后一条指令作为一体执行,必须等其后一条指令执行

24、完才能响应中断。 ,也必须等下一条指令执行完后才能响应中断。 这主要是为了保证堆栈指针的正确指示,所以如果要修改堆栈地址,这样做才能保证两个动作之间不被中断,从而确保堆栈区的正确指示。 当遇到时,允许在指令执行过程中进入中断,但必须在一个基本动作完成后才能响应中断。中断执行完返回后会继续执行原来的等待或串操作指令。 因此,在设计中断子程序时,要为等待指令和串操作指令的执行中途可能被中断而保护好有关寄存器,象CX,AX,SI,DI等。否则中断返回后,无法保证串操作正常执行,象串操作中经常使用CX作为执行次数的计数器(循环计数器)。如果在中断子程序中用到CX又没对其实施保护,中断返回后CX内容会发

25、生变化,不能正确表示串操作的执行次数,不能正常控制串操作的执行。 单步中断标志TF。单步中断是一个专用中断,当TF为1时,在执行完一条指令后,能够自动产生中断类型码为1的单步中断,在这个中断处理程序中可以显示各寄存器的内容,单步中断主要用于调试程序中。使用单步中断的目的是单步执行主程序,因此进入中断处理程序后,已由硬件自动将TF清0,保证CPU连续执行中断处理程序。 中断请求信号INTR至少维持两个时钟周期高电平,中断才可能被响应。 只有在最小模式才从INTA引脚发中断响应脉冲,在最大模式通过S2 ,S1 ,S0发出中断响应,通过总线控制器送给外设。 如果同时出现中断请求及总线保持请求,CPU

26、会首先响应总线保持请求,在中断子程序执行过程中也能响应总线保持,但,此时会将LOCK引脚置为低电平阻止其它部件的总线请求。在此期间通过HOLD或RQ/GT线引入的总线保持请求不被响应。 外设在第一个中断响应负脉冲到来时,准备中断类型码,在第二个负脉冲到来时,发出类型码,CPU接收后,由类型码获得中断向量进而取得中断子程序入口地址。 ,能够提供中断类型码的接口必须连在低8位数据线上。 在中断响应期间,AD0AD15,BHE/S1,A19/S6A16/S3浮空,M/IO低电平,ALE仍在每个总线周期T1状态输出高电平。 8086系统中在两个中断响应总线周期间插入个空闲状态(有时也可是2个),在80

27、88系统中不插入空闲状态。 非屏蔽中断不需取得中断类型码,软件中断通过中断调用指令完成,也不需上述响应时序。中断处理子程序一般有相同的结构模式。 进入中断子程序后,保护现场,把可能受影响的寄存器的值推入堆栈。 置位IF开放中断,允许级别较高的中断请求进入。 中断处理的具体内容,是中断子程序的主要部分。 恢复现场,弹出被保护的寄存器的值。 中断返回IRET,弹出标志及断点值,返回主程序继续执行。 IRET一般是中断子程序的最后一条指令,在8086/8088系统中,中断子程序不同于其它程序可以浮动装配,它必须是固定装配的,起始地址由中断入口地址表给出。 在8086/8088系统中提供了直接调用中断

28、处理子程序的软件手段,这就是中断指令,通过中断指令或其它软件方式使CPU执行中断处理子程序的方法叫。 通过软件中断的方法,可以调用中断类型码为0255的任何一个中断子程序,软件中断有如下特点。 用一条指令进入中断处理子程序,并且中断类型码由指令提供,INT n ,其中n为中断类型码。 进入中断时,不需要执行中断响应总线周期,也不从数据总线读取中断类型码,其余过程同中断响应过程。 不受中断允许标志IF的影响,不论IF是0是1,任何一个中断均可执行。 正在执行软件中断时,可以响应非屏蔽中断请求,如果在软件调用的中断子程序中,开放中断(IF置1)还可以响应外部硬件可屏蔽中断请求。软件中断中也可调用其

29、它软件中断。 软件中断没有随机性。硬件中断是由外部设备发出中断请求引起的,它的发生是不可预料的,具有随机性,外部设备何时发出中断请求CPU是不知道的,发生中断时CPU内部进行什么工作也是不确定的,通常主程序和中断处理子程序之间不会有什么参数或结果要传递。而软件中断则不同,它何时产生完全由CPU决定。软件中断总是主程序执行到某种条件时产生的,它非常类似子程序调用,这样,它可以采用各种向子程序传递参数的方法进行参数传递。一般情况下,通过寄存器传递参数的方法是最常用的。 一般软件中断是指一般的通用中断,实际是对应于中断类型5255的中断。 对于这类中断可以使用 INT n 指令直接调用。这类指令都是

30、指令,由指令直接提供中断类型码。例如要调用类型码为55H的中断子程序,可以使用指令 来完成 。 特殊中断指对应中断类型码为04的中断,它们是专用中断,分别对应除数为0中断,单步中断,硬件中断,断点中断,溢出中断。其中除数为0中断、单步中断不用INT类指令调用,其它几种都可以通过中断指令调用。 在遇到除数为0的情况或除法过程中产生溢出时,CPU会自动产生类型为0的中断,它不是通过中断指令来调用的。 CPU进入单步中断的依据是标志寄存器中单步标志为1,单步中断也不通过中断指令来调用。 当TF=1时,CPU每执行一条指令后会产生一次单步中断,这个中断进入过程和其它一般软件中断进入过程是完全相同的。进

31、入后,TF标志会自动清除,保证CPU连续执行中断处理子程序,这个中断主要供调试使用,在中断处理子程序中可以显示各寄存器内容。中断返回时,由于弹出了标志寄存器的内容,所以TF又恢复1,可以继续单步执行下一条指令,要停止单步执行,可以在主程序中清除TF标志或在中断子程序中改变堆栈中的标志寄存器中的TF位。 如果遇到串操作指令,则在单步状态下,而不是在整个串操作指令结束后产生中断。 断点中断与单步中断类似,也是用于调试程序中,断点中断可以通过指令 调用,它是一个指令。 在调试一个程序时,经常需要知道程序执行到某处时结果是否正确。这时就可以在这个位置设置一个断点,使CPU运行到断点位置时暂停执行程序,

32、显示出各寄存器状态,并转入一个调试程序,程序员可以通过它了解计算机内部的各种情况。 设置断点的过程实际上就是在用户程序的指定点用断点中断指令INT 3 (CCH)来代替用户程序的原有指令,同时把用户程序的原有指令妥善保存起来。这样程序运行到断点位置时就会执行INT 3 产生断点中断。 进入中断处理程序后可以执行一些显示寄存器内容等调试程序。此外,断点中断处理程序还负责恢复在设置断点时被INT 3所替换掉的那条指令。在中断返回前还必须修改堆栈中的返回地址,以便中断返回后能够执行那条曾被替换掉的指令。否则就会少执行一条指令,甚至可能把多字节指令的下一字节作为另一个指令的首字节,从而造成混乱。 溢出

33、中断通过中断指令调用,INTO指令为一个单字节指令,它总是跟在带符号数的加法或减法运算过程后面。当运算后OF为1则表示发生溢出错误,此时执行INTO就会进入类型为4的溢出中断,当OF为0时,INTO指令也会引起类型4中断,此时检测完OF标志后会立即自动返回主程序。 8086系统中可以处理多个可屏蔽中断,但中断请求输入端只有一个,这样就需要使用外接的中断控制器对外部多个中断请求进行管理。8259A就是配合8086/8088工作的中断控制器。 单片8259A能管理8级中断,通过多片扩展能构成64级主从式中断系统。 8259A可编程,通过编程可使它工作在不同的方式,使用灵活方便。 NMOS工艺,单5

34、V供电。电源和地,接 +5V电源和系统地。 8位双向数据线,与系统数据总线相连,由于要传输中断类型码,因此必须接在8086系统低8位数据总路线上。8259A的读写选通信号,与系统控制总线中的RD和WR相连,控制8259A的读写操作。 芯片选通信号,通过地址译码逻辑电路与系统地址总线相连。用来指出8259A内部哪个端口被访问。8259A内部对应两个端口,它们通过A0来区分: A0=0对应端口称为, A0=1对应端口称为。 在8088系统中,A0直接与地址总线的A0相连,对应8088的两个相邻地址;在 8086系统中,8259A与低8位数据总线相连,A0必须与地址总线A1相连,对应系统中的两相邻偶

35、地址。与CPU的INTR相连,用来向CPU发中断请求。 用来接收来自CPU的中断应答信号,与CPU的INTA引脚相连,在CPU中断响应过程中,在第二个INTA负脉冲到来时,8259A向数据总线发出中断类型码。CPU在第二个负脉冲结束时,读取总线上的中断类型码。 外部中断请求输入端,在单片8259A系统中用于接收其它部件的中断请求,在多片系统中与各从片的INT相连,接收从片的中断请求。 从片选通信号,用来指出具体的从片,用于8259A的级联方式。 双向,当8259A工作于缓冲方式时,SP/EN作为输出,用于控制系统数据总线驱动器,在8259A与CPU进行数据传输时,启动驱动器。当8259A工作于

36、非缓冲方式时,SP/EN作为输入,如果SP/EN为1,则为主片,否则为从片。 8259A的编程结构可以分为上下两个部分,上半部分为它的处理部件,下半部分为8259A的控制部分。 在8259A的控制部分中,有7个寄存器,它们都是8位的,这些寄存器都是可编程的,CPU可以对它们的内容进行设置。 这7个寄存器可分为两组,第一组寄存器为4个,用来容纳,分别称为。第二组寄存器为3个,用来容纳,分别称。初始化命令字一般在计算机启动时由初始化程序设置,一旦设定在系统工作过程中一般不再改变;操作命令字由应用程序设定,用于对中断处理过程作动态控制,在系统运行过程中,操作命令字可多次设置。 8259A的处理部件由

37、、和组成。用于接收和处理从引脚IR0IR7进入的中断请求。 中断请求寄存器用于接收外部中断请求,它有8位,分别和引脚IR0IR7相对应,当某一引脚上有中断请求后IRR寄存器中对应位置1,也就是对这一中断进行了锁存,锁存之后逻辑电路根据中断屏蔽寄存器中的对应位决定是否让此请求通过。 如果IMR中对应位为0,则表示此中断未加屏蔽,可以让它通过而进入中断优先级裁决器作裁决,如果IMR中对应位为1表明中断是受屏蔽的,不让其进入中断优先级裁决器。中断优先级裁决器把新进入的中断请求和当前正在处理的中断进行比较。当前正在处理的中断存放在当前中断服务寄存器中,如果确认新进入的中断请求具有足够高的优先级,中断裁

38、决器会通过相应的逻辑电路使8259A的输出为1,从而向CPU发出中断请求。 CPU接收到中断请求后,如果允许中断就会执行中断响应过程,从INTA引脚向8259A回送两个负脉冲作为响应信号。在到来时,8259A完成以下3个动作: 使IRR锁存功能失效,从而对IR0IR7线上的中断请求不予理采,直到第二个负脉冲到达时恢复IRR锁存功能,防止在中断响应期间进入新的中断。 使当前中断服务寄存器中相应位置位,为中断优先级裁决器以后的工作提供判断依据。 清除IRR中的相应位(刚才设置的位)在到来时,8259A完成以下动作: 将存放在中断类型寄存器ICW2中的中断类型码送到数据总线D7D0供CPU读取。 如

39、果8259A工作在中断自动结束方式,在第二个INTA负脉冲结束时,会将在第一个负脉冲到来时设置的当前中断服务寄存器ISR中的相应位清0,表示中断已结束。 按照优先级设置方法来分有以下几种工作方式 8259A最常用的工作方式,对8259A初始化后没有设置其它优先级方式,8259A默认按全嵌套方式工作。 当一个中断被响应时,中断类型码被放到数据总线上,当前中断服务寄存器ISR中的对应位ISn置1,然后进入中断服务程序。一般情况下(除中断自动结束方式外)在CPU向8259A发出中断结束命令(EOI)前,此位一直保持1,为中断优先级裁决提供依据。 中断优先级裁决器总是将新收到的中断请求和当前中断服务寄

40、存器中的IS位进行比较,判断新收到的中断请求的优先级是否比当前正在处理的中断优先级高,如果高则实行中断嵌套,如果新收到的中断请求和当前处理的中断相同或更低,在全嵌套方式下不会响应。 特殊全嵌套方式和全嵌套方式只有一点不同,就是在特殊全嵌套方式下当处理某一中断时,如果有同级中断请求也会响应,而在全嵌套方式中,只有更高级的中断请求来到时才会进行嵌套,而同级中断到来时不会给予响应。 特殊全嵌套方式一般用在8259A级联系统中,在这样的系统中各从片的中断请求输出端INT与主片的中断输入端IRn相连。这样由某一从片引入的各路中断对于主片来说是同级中断,在这种情况下对主片编程时让它工作在特殊全嵌套方式,但

41、从片采用全嵌套方式。这样当来自某一从片的中断请求正在处理时,一方面和普通全嵌套方式一样,对来自优先级较高的主片其它引脚上的中断请求是开放的,另一方面对来自同一从片的较高的优先级中断请求也会开放,优先级由从片内部的优先级裁决电路裁决。 可见,在8259A级连系统中,在主片看来一个从片作为一级,尽管从片内部可以判断连在从片上各中断请求的优先级,但是要真正让从片内部的优先级得到系统的确认则必须让主片工作在特殊全嵌套方式。 优先级自动循环方式一般用在系统中多个中断源的场合,在这种方式下,优先级队列是在变化的,一个设备接受中断服务后其优先级自动降为最低。 在优先级自动循环方式中,初始优先级为IR0,IR

42、1, IR7,如果IR4有中断请求则处理IR4,处理完IR4后,IR5成为最高优先级,然后依次为IR6,IR7,IR0 IR4。 优先级特殊循环方式和优先级自动循环方式相比,只有一点不同,就是在优先级特殊循环方式中,从而最高优先级也同时确定。比如设置IR5为最低优先级,那么IR6为最高优先级,而在优先级自动循环方式中初始最高优先级为IR0。 按照对中断源的屏蔽方式来分,8259A有以下几种工作方式: 在普通屏蔽方式中,8259A的每个中断请求输入都可以通过对应屏蔽位的设置被屏蔽,从而使这个请求不能从8259A送到CPU。 8259A内部有一个屏蔽寄存器,它的每一位对应一个中断请求输入,程序设计

43、时可以通过设置操作命令字OCW1使屏蔽寄存器中任一位置1或清0。当某一位为1时,对应的中断就会受到屏蔽;清0时,对应的中断就被开放。 在有些场合,希望一个中断服务程序能够动态改变系统优先级结构,这时就可以通过中断屏蔽寄存器来根据要求屏蔽较高级中断或开较低级中断。但仅改变中断屏蔽寄存器的状态是不够的,即使开放了较低级中断,这个中断能否被响应还取决于当前中断服务寄存器中ISn位,只要对应ISn不被清除,低级中断仍不能被响应。特殊屏蔽方式就提供了解决这一问题的方法。 设置了特殊屏蔽方式后,。这样就不只屏蔽了当前正在处理的中断,而且真正开放了其它级别较低的中断。 在8259A的应用中,不管用哪种优先级

44、方式工作,中断结束处理都是必要的也是必须的。当一个中断请求得到响应时,8259A都会在当前中断服务寄存器中设置相应位ISn,为此后中断裁决器的工作提供了依据。当中断处理结束时必须使ISn位清0,否则其后的中断有可能不能得到正确响应,使得8259A的中断控制功能不正常,这个。 这种方式只能用在系统中只有一片8259A且多个中断不会嵌套的情况。 在中断自动结束方式中,。这样尽管系统正在为某个设备进行中断服务,但对8259A来说,当前中断服务寄存器中却没有对应位作指示,它可以接受同级或更低级中断请求。这是最简单的中断结束方式,在这种方式下对ISn的清除是发生在第二个中断响应脉冲INTA送到8259A

45、后。 这种方式主要是为了防止没有经验的程序员忘记在中断服务程序中给出中断结束命令而设立的。 这种方式一般用在全嵌套方式下,通过中断结束命令字结束中断。 在这种方式下,当CPU用输出指令向8259A发出一般中断结束命令时,8259A会。在全嵌套方式中,最高级非零IS位对应了最后一次被响应和被处理的中断,也就是当前正在处理的中断,所以最高级非零IS位的复位对8259A来说相当于结束了当前正在处理的中断。 在非全嵌套方式下,无法通过当前中断服务寄存器确定哪一级中断为最后响应和处理的中断,也就是说,无法确定当前正在处理的是哪级中断。这时就要采用特殊中断结束方式,由CPU来确定究竟结束哪一中断。 采用特

46、殊中断结束方式反映在程序中就是向8259A发一条特殊中断结束命令,这个。 在有关中断结束方式的问题中还要说明一点,在级联方式下,一般不用中断自动结束方式,而用非自动结束方式,即一般中断结束方式或特殊中断结束方式,不管用哪种方式, 按照8259A和系统总线的连接来分,有下列两种方式。 在8259A的应用系统中,如果8259A通过总线驱动器和数据总线相连,这就是缓冲方式。 在缓冲方式下,有一个对总线驱动器的启动问题,为此将8259A的SP/EN端和总线驱动器允许端相连。因为在缓冲方式下会在8259A输出状态字或中断类型码的同时,在SP/EN端发出低电平,此低电平可作为总线驱动器的启动信号开启总线驱

47、动器。 在规模较小的系统中可以不使用总线驱动器,此时8259A直接与CPU总线相连,8259A可以工作在非缓冲方式下,此时SP/EN引脚作为输入端,当系统中只有一片8259A时,SP/EN必须接高电平,当系统中有多片8259A时,主片的SP/EN接高电平,从片的SP/EN接低电平。 按照中断请求的引入方法来分,8259A有如下工作方式。 在此方式下,8259A将中断请求输入端出现的作为中断请求信号,中断请求输入端出现上升沿触发信号以后,可以一直保持高电平。 在这种方式下,8259A把中断请求输入端出现的作为中断请求信号,在电平触发方式下,要注意的一点是当中断输入端出现一个中断并得到响应后,输入

48、端必须及时撤消高电平,如果在CPU进入中断处理过程并开放中断前未去掉高电平信号,则可能引起不应有的第二次中断。外部设备仍然通过往8259A发中断请求信号要求CPU服务,但8259A不使用INT信号向CPU发中断请求信号。8259A输入端的中断请求信号可以是上升沿也可以是高电平,取决于前面介绍的两种工作方式。 CPU内部的中断触发器IF复位,禁止了对CPU的中断请求。 CPU要用来确认中断源,从而实现对设备的服务。 中断查询方式既有中断的特点,又有查询的特点。从外设来看,仍然是靠中断方式来请求服务,并且可以使用边沿触发或电平触发。而对CPU来讲是靠查询方式来确定是否有设备要求服务,同时靠查询来确

49、定为哪个设备服务。 在查询方式中,CPU向8259A发出查询命令字,然后从8259A中读出查询字,从而确定为哪个外部设备服务,具体操作将在命令字一节中介绍。 采用查询方式可以引入无数个服务请求,而中断方式一般不超过64个(两级)。初始化命令字通常是在系统开机时由初始化程序写入,在系统工作过程中一般保持不变。初始化命令字有严格的写入规则和格式。 ,必须写入偶地址端口(A00)中。 在8086/8088系统中不起作用,可设为1或0,不会对8259A在8086/8088系统中的应用产生影响。 固定为1 1,用于区分写入偶端口的是ICW1还是OCW2,OCW3,所以D4是ICW4的标识位,D41时作为

50、指示ICW1的标志。 LTIM用于设定中断请求信号的形式。 LTIM0 表示中断请求为触发方式。 LTIM1 表示中断请求为触发方式。 ADI,在8086/8088系统中不起作用。 SNGL 用来指出本片8259A是否与其它8259A处于级联状态,当系统中只有一片8259A时D1为1,当系统中有多片8259A工作于联级方式,D1应设为0。 IC4 此位用来指出后面是否设置ICW4,如果需要设置ICW4应将IC4置1。由于ICW4中D0位用于确定应用系统为8086/8088,所以在8086/8088系统中ICW4需设置,IC4应为1。 ,必须写到8259A的奇地址端口(A01) 实际上,中断类型

51、码的具体值不但和ICW2有关,也与引入中断的引脚IR0IR7有关, ICW2一旦确定,8259A 8个中断请求输入引脚IR0IR7对应8个中断类型码也随之确定。 ICW2低3位并不影响中断类型码的具体数值,中断类型码的低3位由引入中断请求的引脚IR0IR7决定。 如果ICW2设为40H则8个中断类型码为40H47H,如果ICW2为45H,8个中断类型码仍为40H47H。 ,必须写到8259A的奇地址端口中(A01),只有8259A工作于多片级联方式时才需设置ICW3,而8259A的单片或多片级联工作方式取决于ICW1的SNGL位,在SNGL1时不需设ICW3。ICW3的格式对于主片和从片是不同

52、的。 对应IR0IR7各引脚的连接情况,如果某一引脚上连有从片则对应位为1,未连从片则对应位为0,这就使得8259A主片在使用某些引脚连接从片的同时,可以使用其它输入引脚直接接受外部设备的中断请求。 对从片是无关位,一般置0。 的值必须与从片INT输出端与主片IRn输入端的连接关系一致,如果从片与主片IR5相连,则这3位的编码值应为5即101。在级联系统中,除各从片的INT输出端与主片IRn输入端相连外,主片的CAS0CAS2应与各从片CAS0CAS2互相连在一起。主片CAS0CAS2为输出,各从片CAS0CAS2为输入。主片与各从片的INTA输入端应都与CPU的INTA信号输出端相连。这样,

53、在CPU发出第一个中断响应负脉冲时,主片除完成前面所介绍的三个例行动作外,还会从CAS0CAS2发出一个编码信号,此编码值指出了发出中断请求的从片,从片接收到编码后与自身ICW3中的D2D0比较,若相等这个从片则在第二个INTA负脉冲到来时将自己的中断类型码送到数据总线。,也要求写入奇地址端口(A01),。 总要求置0 SFNM,如为1,则为特殊全嵌套方式,一般在使用多片8259A的系统中采用特殊全嵌套方式。 BUF,如为1,则为缓冲方式。 M/S,此位在缓冲方式下用来表示本片为主片还是从片。 当BUF1时,M/S1则表示本片为主片, M/S0则表示本片为从片。 AEOI,如果AEOI为1,则

54、设置中断自动结束方式。在此方式下,第二个中断响应负脉冲结束时,自动清除当前中断服务寄存器ISR中相应位,从而允许其它任何级别中断进入。 PM,用于确定应用系统CPU类型,如果PM为1则表示8259A当前所在系统为8086/8088,如果为0则表示系统为8080/8085。 初始化命令字对端口地址的规定,ICW1必须写入偶地址端口,ICW2ICW4必须写入奇地址端口。 ICW1ICW4设置次序是固定的,不可颠倒。 ICW1和ICW2对任何系统必须设置,只有在级联方式下才需设ICW3(对主片、从片都要设),只有在8086/8088系统或特殊全嵌套方式、缓冲模式、中断自动结束方式这些情况下才需设置I

55、CW4,是否设置ICW3、ICW4在ICW1中的指定位(SNGL,IC4)中作出了说明。 在8088系统中扩展一片8259A,端口地址为80H、81H,中断请求边沿触发方式,采用全嵌套方式,系统中使用非缓冲方式连接,中断类型码为18H1FH。ICW1 采用边沿触发方式,单片方式工作,需要设置ICW4。0001 0011BICW2 中断类型码,高5位00011B,低3位决定于引入中断的引脚。 0001 1000BICW3 不需设置ICW4 不用特殊全嵌套方式,非缓冲方式,8086/8088系统。 0000 0001B 8259A有3个操作命令字OCW1OCW3,对操作命令字的设置没有顺序要求,但

56、对端口地址有严格要求,。 ,写入奇地址端口(A01) M0M7分别与中断请求输入端IR0IR7对应,若某位为1,对应于这一位的中断请求被,若为0表示对应中断得到。 OCW106H,则IR2,IR1引脚上中断请求被屏蔽,其它引脚上的中断请求被开放。 用来设置优先级循环方式和中断结束方式,写入偶地址端口(A00) R1。采用优先级循环方式,0为非循环方式。 EOI为中断结束命令位,当EOI为1时,使当前中断服务寄存器中对应ISn位清0。在一般中断结束方式下清除当前最高级中断对应ISn位,在特殊中断结束方式下清除由L2L0指出的特定ISn位。SL 决定L2L0 是否有效,SL1有效,SL0无效。 L

57、2L0 ,有两种作用,当OCW2给出特殊中断结束命令时,L2L0指出要清除当前中断服务寄存器中哪一个位,当OCW2给出特殊优先级循环方式命令字时,L2L0指出起始最低优先级。EOI1 R0 SL0,用于全嵌套方式下结束当前中断,这个命令使当前中断服务寄存器中优先级最高的ISn位清除(常用,20H)。EOI1 R0 SL1,L2L0设置一定的值,清除ISR中由L2L0编码指出的位,用于非全嵌套方式下。一般中断结束命令字是最常用的,对于R1的情况,主要用于设置优先级循环方式。 它有三方面功能,设置和撤消特殊屏蔽方式、设置中断查询方式、设置对8259A内部寄存器的读写命令,写入偶地址(A00)。 E

58、SMM 特殊屏蔽模式允许位。 SMM 特殊屏蔽模式位。 ESMM1 SMM1 时设置为特殊屏蔽模式 ESMM1 SMM0 时取消特殊屏蔽模式 特殊屏蔽方式下,在设置屏蔽位时会同时清除ISR中的相应位。 P 查询方式位,P1时构成对8259A的中断查询命令。在查询方式下,CPU不靠8259A的中断请求信号INT申请中断,而是靠读取中断查询字获得外设中断请求信息。 RR 用于对寄存器的查询。 RIS 用于指定查询的寄存器。查询命令是通过使OCW3的来构成的,CPU发出查询命令后再执行一条输入指令就可以从中读出中断查询字,并将当前中断服务寄存器ISR中相应位置1,这个查询字的低3位编码指出了当前级别

59、最高的中断请求。A00 I1,有中断请求,0无中断请求 W2W0 编码指出当前级别最高的中断请求。使用中断查询方式可以在系统中扩展更多的8259A,使中断输入超过64级。通过查询等待外部设备的服务请求(8259端口号:60H,61H)RIS0 构成读IRR命令RIS1 构成读ISR命令 读命令送出后,可以从8259A读取相应寄存器的值。 在8088非缓冲系统中扩展一片8259A,采用全嵌套方式工作,中断请求为边沿触发方式。中断类型码 50H57H,只开放IR0和IR7。8259A端口地址80H,81H。 INTAINTRD0-D7A1-A7A0M/IORDWR+5VIR0IR7INTAINTD

60、0-D7CSA0RDWRSP/EN地址地址译码器译码器 1ADIIC4T7T6T5T4T3 IR7IR6IR5IR4IR3IR2IR1IR000000ID2ID1ID0000SFNMBUFM/SAEOIuPMM7M6M5M4M3M2M1M0RSLEOI00L2L1L00SMM01PRRRIS 在微型计算机系统中经常要用到周期性的或非周期性的定时信号。定时信号可以用软件和硬件两种方法获得。 用软件方法定时,一般是根据所需时间常数来设计一个延迟子程序。延迟子程序需要作精密的计算和精确地测试,并且难以获得很高的精度,一般用于对延迟精度要求低的场合。另外在延迟期间CPU一直被占用,降低了CPU的效率。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论