1.方式0的功能及接口方法
这是一种基本输入、输出工作方式,通常不用应答信号,或不使用固定的应答线,不使用中断。在这种工作方式下,3个接口都可以由程序选定作为输入或输出。
(1)简单的输入、输出操作 这种操作适合于外部设备始终有数据可以给微处理器,以及始终能接受微处理器送来的数据。这种情况下可以进行无条件传送。典型的例子是以开关作为输入,以指示灯显示作为输出,如图7-23所示。微处理器通过8255的B口从外部开关取得数据,进行处理后,再通过8255的A口用发光二极管显示处理结果。此时的8255方式控制字为10000010(82H)。实现此功能的无条件数据传送的流程如图7-24所示。
图7-22 8255 C按位置位/复位控制字格式
图7-23 开关输入和显示输出接口
图7-24 无条件数据传送的流程图
方式0输入输出的工作特点是:只要RD(通过输入指令产生)或WR(通过输出指令产生)信号变低,就进行数据传送,不考虑此时数据是否稳定。
在方式0中,可利用C口的按位置位/复位功能来产生脉冲,用作门控、选通和复位等。
(2)方式0的应答式工作 在方式0工作时,也可以用应答查询的方式来同外部设备交换信息。一般用A口和B口作为输入或输出的数据通道,而C口作为应答的控制和状态信息通道,如C口的PC4~PC7之一作为选通线输出,C口的PC0~PC3之一作为外部设备准备就绪RDY线输入。这与方式1中的固定应答线不同,可以由程序任意设定。
2.方式1的功能及接口方法
方式0的应答要占用微处理器的时间,方式1可以用硬件中断方式来进行数据传送,其效率要比方式0的软件应答方式高得多。
(1)方式1的输入 在输入时,A口和B口都有3条控制线、IBF和INTR,芯片内还有1条内部控制线INTE,如图7-25所示。
是由外部设备给8255的选通信号,表示外部设备的数据已准备好,当变为低时,数据锁存入A口或B口。
IBF是8255给外部设备的回答信号,表示输入缓冲器满,即数据已锁存好。它在变低后约300ns变为高电平。
INTR是中断请求。数据锁存后,若此时INTE=1即允许中断,则8255向微处理器发出中断请求。
INTE是8255中断允许,它的置位由PC4(对A口)或PC2(对B口)的位操作来实现。在方式1中,PC4或PC2的位操作只影响内部INTE状态,而不影响PC4或PC2的输出端状态。
图7-25 8255的方式1输入
方式1的数据输入从变低开始,它将外设数据锁存入8255,并使IBF变为高送给外部设备,使外部设备开始下一数据的准备。此时数据已存入8255,但尚未被微处理器读入,若INTE=1,则可向微处理器发INTR中断请求。微处理器接受中断请求后,转到相应的中断服务程序。在中断服务程序中,执行到输入指令时,产生信号将8255锁存的数据读入微处理器,同时的下降沿使INTR复位,上升沿使IBF复位。至此,方式1的一字节数据输入操作完成。
(2)方式1的输出 在输出时,A口和B口也都有3条控制线OBF、ACK和INTR,芯片内仍有1条中断允许控制线INTE,如图7-26所示。
是输出缓冲器满。8255发出的数据选通信号,其低电平表示微处理器已将数据送至8255,并锁存在相应的端口上。
是响应输入。这是外部设备对8255发出的的响应信号,为低电平,表明外部设备已从8255的接口接收到微处理器输出的数据。INTR是中断请求,当外设接收到数据后,若该端口允许中断,即、、均为高电平时,发出中断请求信号。
图7-26 8255的方式1输出
INTE是8255的允许中断,它由PC6(对A口)或PC2(对B口)的位操作来控制。PC6和PC2的位操作对PC6和PC2引脚状态不产生影响,只影响INTEA和INTB的状态。
方式1的输出过程是由微处理器响应中断开始的。在中断服务中,当执行到输出指令时,产生信号,的下降沿将微处理器数据送到输出数据锁存器,上升沿将INTR置为“0”,即撤销中断请求。然后产生OBF信号给外部设备,作为输出数据的选通信号。当外设接收到数据后,便发出响应信号给8255。当和A都为无效时,即和均为高电平时,若此时INTE=1,则产生INTR中断请求信号,通过中断进行新的数据输出。
(3)方式1的状态字 8255不能直接提供矢量式中断,因此当8255申请中断时,微处理器可以读C口状态字来确定是哪个端口发出的中断,如图7-27所示。D3和D0位分别表示A口和B口中断请求INTRA、INTRB的状态,可以查询该位的状态来确定中断源。但要注意,C口的状态字与C口各位引脚上的状态不一样。如在输入时,PC4和PC2反映的是INTEA和INTEB的状态,而不是的状态;输出时,PC6和PC2反映的也是和的状态,而不是ACK的状态。
图7-27 方式1的状态字
(4)方式1的接口方法 首先根据应用的具体要求确定A口和B口是输入还是输出,然后把C口的应答线与外设的控制状态线相连。
方式1的中断处理,可把两个中断请求直接输入,如图7-28所示。图中,INTRA接IORQi,INTRB接IRQj,所以A口的输入在IRQi中断服务程序中完成,B口的输出在IRQj中断服务程序中完成。(www.xing528.com)
若把A口和B口的中断请求通过或门接到同一中断输入INT,那么可以通过在中断服务程序中查询C口的状态字来确定产生中断的中断源是A口还是B口,如图7-29所示。
方式1的工作方式也可以不用中断处理方式,而用软件查询应答来进行。需注意,此时C口可供查询的应答信号是输入方式的IBF和输出方式的、和不能从C口读取(如图6-30所示的C口状态字)。图7-30所示是8255与控制台打字机的接口图和查询式程序流程图。
图7-28 8255方式1中断
图7-29 8255方式1中断查询流程图
3.方式2的功能及接口方法
(1)方式2的功能 图7-31所示是8255采用工作方式2时A口和C口的功能。在方式2中,A口为双向输入输出口,C口的5条线(PC3~PC7)作为应答控制线,B口可采用方式0或方式1工作。
1)方式2输入时的步骤如下:
①外设发信号将数据锁存入A口。
②数据锁存后,8255发IBFA信号给外设。
③若INTEA=1,则8255发出INTRA中断请求信号给CPU。
④CPU通过中断来读取数据。
2)方式2输出时的步骤如下:
①CPU把数据送至8255 A口锁存后,发信号给外设。
②外设发ACKA答信号给8255,并将A口数据读入外设。
③当和A变为无效时,若INTEA=1,则8255向CPU发INTRA中断请求。
④CPU通过中断再向8255输出数据。
因此方式2的双向工作方式实际上是方式1的输入与输出的组合。在输入和输出时都可以产生中断:
INTRA=IBF·INTE2··+·INTE1··
(2)方式2的状态字 在方式2工作时,仍可像方式1那样采用中断驱动式同步工作方式,通过读取状态字来确定是输入产生中断还是输出产生中断。当然,也可以通过查询A和,采用查询式工作方式来实现同步。8255方式2的状态字如图7-32所示。
(3)方式2的接口方法 图7-33所示是8255方式2实现的一种实用主—从机接口方案。8255在主、从机之间起着数据缓冲器的作用。从机也可以看做是主机的一个智能外部设备。
图7-30 8255与控制台打字机的接口图和查询式程序流程图
图7-31 8255采用工作方式2时A口和C口的功能
从机通过对20H口进行输出操作和对40H口进行输入操作来产生和A信号,通过对80H口的输入操作将IBFA和状态读至自己的数据总线位D7和D0上。就是说,从机是通过查询的方式来实现与8255之间数据同步传送的。其数据读写流程如图7-34所示。
主机通过中断方式同8255交换数据。在中断服务程序中,读取C口状态字,通过查询IBF和的状态来决定执行输入操作还是输出操作。为了控制主、从机间数据交换的字节数和待传送字节的地址,可事先在主机存储空间设置1个由若干字节组成的控制区,分别存放这2个参数,如图7-35所示。图中设置的控制块为IOBLOK开始的连续3字节地址单元,其中待传送字节数占1个字节,待传送字节的地址占2个字节;DATADD为待传送数据块的首地址。
主机读/写数据的程序流程如图7-36所示,它包括主程序和中断服务程序两部分。主程序主要完成8255初始化和控制块设置,并在此基础上开中断;中断服务程序则是在查询、识别具体中断源的基础上完成数据读入或写出的任务。按图中的流程,读入比写出的优先权高,当然也可反过来,使写出比读入的优先权高。
图7-32 8255方式2状态字
图7-33 8255方式2实现的主-从机接口方案
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。