当前位置:文档之家› 8255作为打印机接口

8255作为打印机接口

5.4.78255A的编程和应用举例
【例】8255A作为连接打印机的接口,工作于方式0,如图5.23所示。

图18255A作为打印机接口的示意图
工作过程为:当主机要往打印机输出字符时,先查询打印机忙
(B U S Y)信号,如果打印机正在处理一个字符或正在打印一行字符,暂时不能接收数据,则忙信号为1,反之,则忙信号为0。

因此,
当查询到忙信号为0时,则可通过8255A往打印机输出一个字符。

此时,要将选通信号置成低电平,然后再使为高电平,即
在端输出一个负脉冲,此负脉冲将字符选通到打印机输入缓冲器。

现将8255A端口A作为传送字符的通道,工作于方式0输出方式;B端口未用,也设为方式0;作为B U S Y信号输入端,故为输入方式,作为S T B信号输出端,故为输出方式。

设8255A的端口地址为:
A端口:00D O H
B端口:00D2H
C端口:00D4H
控制口:00D6H
使用查询方式输出,待输出的字符在C L中,具体程序段如下:
P P:M O V A L,81H;控制字,使A组、B组均为方式0,A端口为输
出,
;P C7~P C4输出,P C3~P C0输入
O U T0D6H,A L;写入控制口
M O V A L,0D H;用C端口置1/置0方式使P C6为1,
;即S T B初始状态为高电平O U T0D6H,A L;写入控制口
L P S T:I N A L,0D4H;读端口C的值
T E S T A L,04H;测试P C2位
J N Z L P S T;如不为0,说明B U S Y信号为1,即
打;
;印机处于忙状态,故等待
M O V A L,C L;如不忙,则把C L中字符送端口A
M O V A L,0C H;用置1/置0方式使P C6为0
O U T0D6H,A L;即向S T B输出负脉冲
I N C A L
O U T0D6H,A L;再使S T B为1
·
·
·;后续程序段
注意:端口C置1/置0控制字输出到控制口,但是它作用的对象是端口C的某1位。

也可以直接把数据输出到端口C,但这种方法会改变端口C的8位而不是1位。

【例】8255A作中断方式工作的字符打印机的接口,如图 5.24所示。

图5.248255A作中断方式打印机接口
8255A的A端口作为数据通道,工作在方式1输出方式,此时,自动作为O B F信号输出端,则自动作为信号输入端,而自动作为I N T R信号输出端。

打印机接口需要一个数据选通信号,故由C P U控制来产生选通脉冲。

在此没有用,将它悬空就行了。

端连接打印机端。

连到中断控制器8259A(在第六章讲述)的中断请求信号输入端。

对应于中断类型号0B H,此中断对应的中断,向量放在00段2C H、2D H、2E H、2F H这4个单元中,8259A在系统程序中已完成初始化,这
部分连接图没有画出。

设8255A的端口地址为:
A端口:00C O H
B端口:00C2H
C端口:00C4H
控制口:00C6H
方式控制字为A O H,因为B口未用,故取位为0,其他各位的值使A组工作于方式1,A端口为输出,作为输出。

在这个例子中,由中断处理子程序完成字符输出;而初始化程序完成对8255A设置方式控制字、设置中断向量、开放中断。

主程序执行其它操作,并等待中断,这里没有写出主程序。

中断服务主程序入口标号为I N T P R。

所谓设置中断向量,就是把中断服务程序的入口地址(4字节的逻辑地址)写到中断向量表中由中断类型号指定的单元中。

要指出的是这里开放中断不仅是指用S T I使C P U的中断允许标志I F为1,还要使8255A的I N T E A为1,即允许8255A请求中断。

在中断处理子程序中,设字符已放在主机的字符输出缓冲区,往A端口输出字符后,C P U用对C端口的置1/置0命令使输出负脉冲,从而将数据送入打印机。

当打印机接收并打印字符后,发出回答信号A C K,由此清除了8255A的“输出缓冲器满”信号,并使8255A产生新的中断请求。

I N I T;M O V A L,0A O H;初始化程序
O U T0C6H,A L;设置8255A的控制字
M O V A L,01;使P C0为1,即让S T B初始状态为低电平
O U T0C6H,A L
X O R A X,A X
M O V D S,A X;D S指到0段,中断向量表在0段
L E A A X,I N T P R
M O V W O R D P T R[0B H*4],A X;中断类型号为0B H,写入的表地址为0B H×4
M O V A X,S E G I N T P R
M O V W O R D P T R[0B H*4+2],A X;把向量高字写入高地址
M O V A L,0D H;使I N T E为l,允许8255A请求中断
O U T0C6H,A L
S T I;使I F为1,开放中断
中断处理子程序的主要程序段如下:
I N T P R:M O V A L,D I;D I为打印字符缓冲区指针,字符送A端口
O U T0C O H,A L
O U T0C6H,A L;使P C0为0,产生选通信号负脉冲
I N C A L
O U T0C6H,A L;使P C0为1,撤消选通信号
·;后续处理
·
·
I R E T;中断返回。

相关主题