8255三种工作方式: 方式0(基本输入/输出方式) 这种方式不需要任何选通信号。A口、B口及C口的两个4位口中的任何一个端口都可以被设定为输入或输出。输出锁存,输入不锁存。 方式1(选通输入/输出方式) 这种方式下,A口、B口、C口分为两组。A组包括A口和C口的高4位,A口可由编程设定为输入口或输出口,C口的高四位则用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低4位,B口可由编程设定为输入口或输出口,C口的低四位则用来作为输入/输出操作的控制和同步信号。A口和B口的输入输出数据都被锁存。 方式2(双向总线方式) 这种方式下,A口为8位双向总线口,C口的PC3~PC7用来作为输入/输出操作的控制和同步信号;B口和C口的PC0~PC2则可编程为方式0或方式1工作。
当事情变得困难了,你开始寻找你要责怪的东西……而关键是你承受多大的重击!
8255引脚功能 ---------------- RESET:复位控制端,RESET=1时,控制寄存器被清除,所有I/O口均被置成输入方式。 CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态字。 WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255。 D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。 PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。 PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出 或状态信号输入端口。 PA3-- 1 40 --PA4 PA2-- 2 39 --PA5 PA1-- 3 38 --PA6 PA0-- 4 37 --PA7 RD-- 5 36 --WR CS-- 6 35 --RESET GND-- 7 34 --D0 A1-- 8 33 --D1 A0-- 9 32 --D2 PC7-- 10 31 --D3 PC6-- 11 30 --D4 PC5-- 12 29 --D5 PC4-- 13 28 --D6 PC0-- 14 27 --D7 PC1-- 15 26 --VCC PC2-- 16 25 --PB7 PC-- 17 24 --PB6 PB0-- 18 23 --PB5 PB1-- 19 22 --PB4 PB2-- 20 21 --PB3 A1、A0:端口地址选择,8255中有端口A、B、C和一个内部控制字寄存器,共4个端 口,由A0、A1输入地址信号来寻址。0-A口/1-B口/2-C口/3-控制口
8255A三种工作方式的功能说明 1.方式O的功能 1)方式0的基本功能 方式0是基本输入/输出方式。其功能如下: ①进行数据传送时不需要联络信号。 ②任一设置成方式0的端口均可设置成输入或输出。 ③输出具有锁存功能。 ④输入没有锁存功能。 ⑤每一个8位口和4位口均可设置成方式0。如果所有的8位口和4位口都设置成方 式0,则可以有16种不同的输入/输出组合: 端口是否具有锁存功能是需要注意的。如果具有锁存功能,则8255A可作为CPtJ与外设之间数据传送的中转站。这时,CPU与外设之间数据传送是异步的。如果没有锁存功能,则8255A作为数据通道,仅起单向三态门的作用。这时,CPU与外设之间数据传送是同步的。方式0的输出具有锁存功能,而输入没有锁存功能。 2)方式0的时序 ①输入时序 当外设准备好一个数据时,CPU执行一条输入指令,便可从8255A指定端口读人数据。 如图6.4所示是方式0的输入时序,表6.3是方式0输入时序参数表。从中可看出: ·读信号RD(上划线)的宽度TRR的最小值为300 ns。 ·片选信号CS(上划线)、端口寻址信号Al、A0应领先于RD(上划线),该参数用TAR表示,其最小值为0,即可以不领先。 ·输入数据也应领先于RD(上划线),该参数用TIR表示,其最小值也为0,即也可不领先。 ·RD(上划线)有效后,经过TRD时间数据可稳定出现在数据总线上,CPU可以读取。TRD的最大值为250 ns.这一点体现了方式0的输入没有锁存功能,此时8255A仅起一个单向三态门的作用。 类似存储器芯片和CPU连接时存在时序配合问题,在8255A和CPU相连时,也存在时序配合问题。对于方式0的输入,两个参数需要重点考虑,这就是RD(上划线)信号的宽度和从读信号有效到数据稳定的时间TRD。如果CPU的速度较快,则在I/O读总线周期中需要插入等待时钟周期。对于方式0的输出以及其他工作方式,在和CPU相连时也有一些参数需要考虑。这方面涉及较多细节,本教材就不讨论了。读者如有需要可查阅相关技术资料。 ②输出时序 当需要给外设发送数据时,用输出指令将数据送到指定端口的输出缓冲器。图6.5所示是方式0的输出时序,表6.4是方式O输出时序参数表。 从中可看出: ·写脉冲WR(上划线)的宽度TWW的最小值为400 ns. ·片选信号CS(上划线)、端口寻址信号Al、A0应领先于WR(上划线),该参数用TAW表示,其最小值为0。 ·数据有效应领先于结束TDW时间,TDW的最小值为100 ns。 ·WR(上划线)结束后经过TWB时间的时间延迟,写入的数据稳定地出现在端口的外围引线上。TWB的最大值为350 ns。 3)方式0的基本应用 方式0有两种基本应用:一是作无条件传送方式的接口;二是作查询方式的接口。在作 查询方式接口时,需指定某端口为输入口,以便输入外设的状态信息。 2.方式1的功能 1)方式1的基本功能 方式1是选通输入/输出方式,即进行数据传送时需要联络信号。其基本功能如下: ①A组和B组都可以设置为该方式,并且可以同时设置。 ②每一个设置成方式1的端口(组)包含8位数据线和3条联络线,并提供中断逻辑。 ③任一端口均可作输入或输出,输入和输出均有锁存功能。 2)方式1输入的逻辑功能结构及时序 当8255A的A组和(或)B组被设置成方式l的输入时,其逻辑功能结构变成如图6.6 所示。这时,PC5~PC3和(或)PC2~PC0被指定成相应的联络控制信号。这些联络控制信号的含义在前面已经介绍。INTEA和INTEB分别是A组和B组的中断允许逻辑。前者由PC4的置位/复位控制,后者由PC2的置位/复位控制。从图6.6中可看到,PC4和PC2已被指定为选通信号STB(上划线),那么,为何又用PC4和PC2来控制中断允许呢?可这样理解,这是一种一位两用的设计,当PC4(PC2)有来自外部的输入时,8255A理解为选通信号STB(上划线);当通过CPU对PC4(PC2)进行写操作时,8255A理解为对中断允许进行控制。 当A组被设置成方式1输入时,PC3被指定为A组的中断请求信号INTRA。当B组被 设置成方式1输入时,PCO被指定为B组的中断请求信号INTRB。中断请求信号的产生可从下面的时序图看出。 图6.7是方式1输入时序图,表6.5是方式1输入时序参数表。用方式1进行数据输入的过程大致可分为以下3个阶段: (1)外设将数据送入8255A的输入缓冲器 当外设准备好一个字节数据,发出一个选通信号STB(上划线)(宽度至少为500 ns),该信号把数 据装入8255A的输入缓冲器。STB(上划线)有效后经过时间Tsm后,IBF变为有效(输入缓冲器满), 通知外设暂时不要送新的数据。 (2)8255A向CPU提出中断请求 在选通结束经过TSIT时间后,INTR由低变高(如果端口中断允许的话),向CPU提出中断请求,请求cPu取走输入缓冲器中的数据。 (3)CPU在中断服务程序中读取输入缓冲器中的数据 CPU在当前条件具备的情况下响应8255A的中断请求。在中断服务程序中通过一条输入指令来读取输入缓冲器中的数据。执行输入指令时产生的读信号RD(上划线)起3个作用:第一,读取数据,这是显然的;第二,RD(上划线)信号前沿过后经过TRIT时间INTR被清除,为下一次再提中断请求作准备;第三,RD(上划线)后沿过后经过TRIB后IBF变低,通知外设刚送的数据CPU已取走,从现在起可以送新的数据了。当外设准备好新的数据后又开始重复(1)~(3)的过程。 从上面的时序关系可看出,外设用多长时间准备数据对CPU来说没有关系,而CPU在什么时间将输入缓冲器中的数据取走对外设来说也没有关系。这就是说,借助于STB(上划线)、IBF等联络控制信号(当然也需要CPU的读信号),使得8255A能够很好地协调外设向CPU的数据传送,而不管外设与CPU之间存在的速度差异。 当8255A的A组被置成方式1输入时,只占用了c高4位口的两根线(PC5和PC4,另有一根是C低4位口的PC3)。此时,c高4位口还有两根线,即PC7和PC6,可单独设置为输入或输出,而不管B组设置成什么方式(因为B组的设置只用到C低4位口)。 图6.8给出了单独将A组设置成方式1输入和单独将B组设置成方式1输入的控制字形式。其中“×”表示该位的取值任意,一般取0。当然,两组都要使用时,对两组的设置应使用同一个控制字。 . 3)方式1输出的逻辑功能结构及时序 当8255A的A组和(或)B组被设置成方式1的输出时,其逻辑功能结构变成如图6.9所示。这时,PC7、PC6、PC3和(或)PC2~PC0被指定成相应的联络控制信号。这些联络控制信号的含义在前面也已经介绍。DBF(上划线)有效表示输出缓冲器满,ACK(上划线)是来自外设的应答信号。 和方式1输入不同的还有两点。一是A组的中断允许,由对PC6的置位/复位控制,而不是方式l输入时对PC4的控制(至于B组的中断允许,方式1输出和输入一样,都通过对PC2的置位/复位进行控制)。另一点是,当8255A的A组被设置成方式l输出(不管B组如何设置)时,c高4位口中未被利用的两根线是PC5和PC4,而不是设置成方式1输入时的PC7和PC6。这两根线也可单独设置为输入或输出。 图6.10所示是方式1输出时序图,表6.6是方式l输出时序参数表。图6.10清楚地表明了用中断方式传送数据的过程。输出过程是由CPU响应8255A的中断请求开始的。该过程大致可分为以下三个阶段: (1)CPU在中断服务程序中输出一个字节数据 在中断服务程序中,CPU执行一条输出指令,将输出数据送上数据总线并发出写信号WR(上划线)。WR(上划线)起三个作用:第一,将数据写入输出缓冲器;第二,WR(上划线)前沿过后经过TWIT时间延迟后清除INTR,为下一次提中断请求做准备;第三,从WR(上划线)后沿算起,经过TWOB时间延迟后OBF(上划线)变为有效,通知外设可以使用外围线上的数据了。实际上,外设可利用OBF(上划线)作接收数据的选通脉冲。 (2)外设利用输出的数据 在OBF(上划线)有效后,外设就可以利用8255A外围线上的数据进行具体的输出(如打印)。 (3)外设发出回答信号后8255A再次向CPU提出中断请求 在外设利用完数据后会发出一个回答信号ACK(上划线)。ACK(上划线)的前沿过后经过TAOB时间使OBF变为无效,通知外设输出缓冲器中还没有出现新的数据;ACK(上划线)的后沿经过TAIT时间使INTR再次变为有效,向CPU提出新的中断请求。在条件具备的情况下CPU再次进入中断服务程序,于是又开始重复(1)~(3)的过程。 上面的时序关系表明,CPU输出到输出缓冲器中的数据,外设什么时间利用都可以,只要求它用完之后回送一个ACK(上划线)信号,以便8255A向CPU提出新的中断请求;而cPu何时予以响应以输出新的数据也没有时间要求。由此可见,借助于OBF(上划线)、ACK(上划线)等联络控制信号(当然也需要CPU的写信号),使得8255A能够很好地协调CPU向外设的数据输出,而不管外设与CPU之间存在的速度差异。 4)方式1的基本应用 方式1最主要的应用是作中断传送方式的输入端口或输出端口。这样可充分利用该方式提供的功能。当然也可用作查询方式的接口。这时,不利用:INTR信号,而是读端口c的状态。如果作输人口,则读IBF的状态。若发现IBF为高,表示外设已将数据装入输入缓冲器,这时可用输入指令读取端口数据。如果作输出口,则读OBF(上划线)的状态。若OBF(上划线)为低,则表示外设尚未利用完输出缓冲器中的数据;等到OBF(上划线)变为高电平,CPU才可输出新的数据。 3.方式2的功能 1)方式2的基本功能 方式2为双向传送方式。其基本功能如下: ①只限于A组使用。 ②一个8位的双向数据端口(A口)和5条联络线(c口)。 ③输入/输出均能锁存,输出缓冲器是三态的。 ④输入/输出均可用中断方式。 2)方式2的逻辑功能结构及时序 当8255A的A组设置成方式2时,其逻辑功能结构变成如图6.11所示。前面介绍的5种联络控制信号在这里都用上了,含义和前面基本相同。因为是双向传送,所以INTRA在输入或输出时都可以产生。图中INTEl是与输出相关的中断允许,由对PC6的置位/复位控制;INTF2是与输入相关的中断允许,由对PC4的置位/复位控制。 当A组设置成方式2时,C口还有3根线(PA2~PA0)没有使用,而B组方式1输入或输出使用的就是这3根线。所以,当A组设置成方式2时,B组还可以设置成方式1,当然也可设置成方式0。 方式2的时序可认为是方式l的输入方式时序和方式1的输出方式时序的组合。为节省篇幅,这里不准备给出具体的时序图。但有两点需要说明。一是中断请求信号的产生。 在输人中断允许的情况下(INTE2=1),当数据已送入到输入缓冲器,并且IBF变为有效,此时产生中断请求。或者在输出中断允许的情况下(INTEl=1),数据已输出至端口,并且外设发来了ACK(上划线)信号,这时也产生中断请求。第二点是ACK(上划线)还有一个重要的作用,该信号有效时打开A口的三态输出缓冲器,使数据出现在PA7~PA0上。 , 3)方式2的基本应用 从方式2的基本功能就可看出,它可作为中断传送方式的双向端口。