并口在标准打印机口操作模式的工作原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

并口在标准打印机口操作模式的工作原理(转载整理)

原作者:程方

原出处:重庆邮电学报

打印机并行接口逻辑具有3个设备端口:数据端口、控制端口和状态端口,均可用IN 或(和)OUT指令对其进行读出或(和)写入。共有5种操作:读数据、写数据、读控制、写控制和读状态。它们都是对相应的端口寄存器进行的操作。

1. 数据寄存器

对数据寄存器的写入操作是CPU将打印数据传送到打印机的数据线上。

对数据寄存器的读出操作是CPU取出送到打印机的打印数据,主要用于验证数据口数据的发送是否正确。

2. 控制寄存器

控制寄存器的各位定义如图1所示。

对控制寄存器写入操作是CPU将控制命令送到打印机。

对控制寄存器的读出操作是CPU取出送到打印机的控制命令,主要用于验证控制口数

据的发送是否正确

在Windows系统启动过程中,要对打印机进行初始化,为系统随后进行的打印操作予以准备。对打印机初始化要输出的控制字节为“8=00001000B”,并持续一定时间(4 ms 左右),随后规定操作系统支持的打印机操作方式:禁止中断、打印机联机及不自动换行。也就是说,在Windows操作系统下,对打印机的操作不能采用中断方式、操作打印机时打印机必须处于联机状态、打印机不能执行自动换行功能。

3. 状态寄存器

在标准模式下,状态寄存器是唯一的只读寄存器。通过对状态寄存器的读出操作,CPU 可获得打印机送来的5位状态信息。状态寄存器各位定义如图2所示。

注意:状态忙碌位(D7=0)意味着打印机正在处理上一接收的打印数据。一旦处理完毕,立即发出应答信号,置应答位为0(D6=0);同时置忙碌位为1,即准备就绪。在中断允许条件下(控制寄存器D4=1),此应答信号即可作为打印机的中断请求IRQ。状态口主

要是为了使主机判断打印机的工作状态,保证打印数据的可靠发送。

对一台并行口打印机发送打印数据,主要是计算机软件通过对以上端口执行指令操作,发送和接收各个端口的数据,并使相关的端口信号满足打印机要求的数据传输时序。不论计算机使用的是哪种型号的打印机,它们的数据传输时序都是一致的。

打印机以每次接收一个8位数据作为数据传输时序的基本周期。但每个周期的间隔是不定时的,完全取决于外界的同步信号,即打印机接口控制寄存器的最低位――数据选通位“STROBE”。打印机数据传输时序如图3。

图3中的各信号含义如下:

(1)BUSY打印机忙碌信号。若为“高”,表示打印机不能接收数据。该信号在数据输入期间、打印操作期间、打印机脱机状态、打印机出错状态的4种情况下变为“高”。

注意:该信号送到打印机接口状态寄存器最高位后,CPU读取时刚好反相,即BUSY =1,D7=0。

(2)打印机应答信号。当打印机准备好接收下一数据时,输出宽约5μs的负脉冲。利用其后沿使忙碌信号BUSY由“高”变为“低”,即打印机不忙。与此同时,打印机接口卡利用该信号的后沿,在中断允许置1条件下,向系统输出中断请求信号IRQ。

(3)DATA打印机接收数据信号。总共有8位,其数据为逻辑1时,处于高电位,逻辑0时处于低电位。系统向打印机输出8位打印数据的起始时间,只要在数据选通信号之前不少于0.5μs即可。而数据的消失时间要确保在信号撤消后不少于0.5μs。

(4)打印机数据选通信号。当系统检测到打印机准备就绪(BUSY无效,或有效)时,通过对控制寄存器最低位瞬时置1,经反相输出负脉冲。该脉冲至少保持0.5μs(在打印机一侧)。在此期间,打印机将数据线DATA的8位信息取入到内部缓冲器中。与此同时,打印机的BUSY线置为高电平,表示处于数据输入状态。

通过以上的分析,我们可以得到以下结论:

微机在操作打印机时,控制口寄存器只有3种状态:xxx01100B(联机,不自动换行)、

xxx01000B(联机,不自动换行,正在进行初始化)及xxx01101B(联机,不自动换行,数据选通)。xxx01100B(联机,不自动换行)是当主机对打印机无有效操作时采用的一种

缺省状态,主要是使打印机的联机控制线处于低电平的有效状态,维持主机与打印机之间的连接状态。

附录:并口彩图及标准打印机口操作模式下引脚功能

表中名称前有斜杠的表示低电平有效,寄存器位代表该引脚在8位寄存器中对应的位

置。打印口有3个端口:数据端口、状态端口和控制端口,对应的3个寄存器地址分别为(LPT1):378H、379H和37AH。其中378H可以写,部分电脑通过配置控制寄存器的第5位为1时可以读,部分电脑则不能读,只能写。37AH可读可写,而379H为只读端口。对于打印口2(LPT2):数据寄存器地址0x278,状态寄存器地址0x279,控制寄存器地址0x27A。

在DOS、Windows9X下,你可以使用_outp和_inp对并行口进行直接读写。当然,要包含头文件conio.h。以LPT1为例:

BYTE nRead,nWrite;

nRead=_inp(0x379);//读状态寄存器

nWrite=0x80;

_outp(0x37A,nWrite);//向控制寄存器写0x80

_outp(0x378,nWrite);//向数据寄存器写0x80

创建人:beauty

文档创建时间: 2010-09-26 12:31:39

上次修改时间:2010-10-11 12:20:06

相关文档
最新文档