PC并行端口作为数字I/O口的应用
一、PC并行端口介绍
目前,计算机中的并行接口主要作为打印机端口,接口使用的不再是36针接头而是25针D形接头。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高。
现在常见的并口有五种:SPP型、PS/2型、EPP型、ECP型和多模式接口,大多数PC机配有SPP并口:
SPP标准并行口有4位、8位、半8位:4位口一次只能输入4位数据,但可以输出8位数据;8位口可以一次输入和输出8位数据;半8位也可以。
PS/2简单双向并行口:它引入双向数据端口,这种双向数据端口容许外设每次向PC机发送8位信息。PS/2型并口是指所有具有双向数据端口,但不支持后面介绍的EPP或ECP模式的并行接口。
EPP增强并行口:允许8位双向数据传送,它可以在大约1ms的时间内完成包括握手联络在内的一个字节的数据传送;而SPP或SP/2接口则需要大约4ms才能完成同样的工作。因此可以连接各种非打印机设备,如扫描仪、LAN适配器、磁盘驱动器和CDROM 驱动器等。
ECP口扩展并行口:是双向数据端口,并能以ISA总线速度传送数据。ECP有缓冲区,支持命令周期、数据周期和多个逻辑设备寻址,在多任务环境下可以使用DMA(直接存储器访问)。
多模式接口:许多新型接口支持多种模式,可以工作在以上提到的部分或全部模式下,用户可以使用配置选择,使用上述各种接口形式,或只使用其中一些而禁止其它。
二、PC标准配备并行口介绍
本文主要介绍计算机的标准配备并行端口即25针的母接头端口的应用,在此基础上可以运用相同的原理使用其它模式的并行端口。并行端口共有25支脚,但不是每支脚均被使用到。这些脚被区分为3种主要的功能,分别是用于数据的传送、检查打印机的状态及控制打印机,其接口如下所示:
在PC机中,标准并行口使用3个8位的端口寄存器,PC就是通过对这些寄存器,也就是所说的数据、状态、控制寄存器的读写访问并口的信号的。本文中使用一些通用的叫法,8个数据位分别为D0~D7,5个状态位为S3~S7,4个控制为C0~C3。其中字母表示了端口寄存器,数字则表示该信号在寄存器中的位。
数据寄存器
数据端口或称数据寄存器(D0~D7)保存了写入数据输出端口的一字节信息。数据端口可以写入数据,也可以读出数据(即可擦写);写进去的当然是我们希望从数据端口引脚输出的数据,不过读进来的也只是我们上次写进去的数据,或是原来保留在里面的数据,并不是从端口引脚输入PC的数据。数据端口引脚是PIN2~PIN9,其定义如下:
数据寄存器(即数据输出端口) 可擦写、基地址
bit引脚:D-sub信号名信号源是否在连接器处倒相
0Pin2D0PC否
1Pin3D1PC否
2Pin4D2PC否
3Pin5D3PC否
4Pin6D4PC否
5Pin7D5PC否
6Pin8D6PC否
7Pin9D7PC否
如果我们把这8支脚当成一般的数字输出的脚位看待,上述8支脚就相当于是8个数字输出的位置一般,我们就可以把它们当成是8个可以自由控制的输出点。当我们通过数据端口传送数据时,就是改变这8支脚的电平状态;而接受方也按照相同的编码原则解释,就可以获得传送的数据。
状态寄存器
状态端口或称状态寄存器保存的是5个输入(S3~S7)的逻辑状态。S0~S2位不出现在并口连接器中。除了S0以外,状态寄存器是只读的,读出数据信息是状态端口引脚上的逻辑状态。S0是支持EPP传输并口的超时标志信息,可以用软件方法清零。在许多并口中,状态输入接有上拉电阻。状态端口引脚是Pin10~Pin13、Pin15,其定义如下:
状态寄存器(即状态输入端口) 基地址+1
bit引脚:D-sub信号名信号源是否在连接器处倒相
0 Time-Out
1 未使用
2 未使用
3Pin15nError(nFault)外设否
4Pin13Select外设否
5Pin12PaperEnd外设否
6Pin10nAck外设否
7Pin11Busy外设是
上表中所谓的(基地址+1)指的是:如果我们的LPT地址是378H,在加上1就是379H;这个地址是专门用来传递打印机的状态的。和数据地址比较起来不一样的是,这里地址并非在连接器的脚位上均有对应点。在这个状态的显示上只有5个脚位有对应,位S0~S2是没有的--最起码是无法让计算机有对应的值可读取。
如果打印机接到并口上,那么打印机的状态将会通过这几支脚传送到PC,程序只要去基地址+1的位置读取数值即可知道现在打印机所处的状态。由于这几支脚可以让打印机传送状态给PC,那么我们可以把这几支脚位拿来当作数字输入的通道;我们可以让这几支脚位的状态发生电位的改变,而利用程序去读取这些脚位的数值,即可实现数据的输入。
控制寄存器
控制端口或称控制寄存器保存了C0~C3的4位的控制信息。C4~C7不出现在并口连接器中。一般来说,这些位被用来输出,然而大多数SPP中,控制位为集电极开路/漏极开路模式,也就是说,它们同样可以用作输入。要从控制位上读取外部逻辑信号,首先将向相应的输出写入“1”,然后读取控制寄存器的值即可。但是,为了提高交换速度,大多数支持EPP和ECP接口中,控制位工作在不能用作输入的推拉模式下。在一些多模式接口中,控制位采用的是改进型的推拉模式,可以用作输入。控制端口引脚是Pin1、Pin14、Pin16和Pin17,其定义如下:
控制寄存器(即控制输出端口) 基地址+2
bit引脚:D-sub信号名信号源是否在连接器处倒相
0Pin1nStrobePC是
1Pin14nAutoLFPC是
2Pin16nInitPC否
3Pin17nSelectInPC是
4 IRQ
5 未使用
6 未使用
7 未使用
上表中所谓的(基地址+2)指的是:如果我们的LPT地址是378H,在加上1就是37AH;这个地址是专门用来控制打印机动作的。
如同数据的送出,我们的程序只要将我们的信息送往(基地址+2)的地址去,就可以实现数据输出,接受端在相应引脚就可以接受到相应的逻辑电位状态。当控制端口的信号源为高电平时,这些引脚可以作为输入引脚,如同状态端口引脚一样。
在上述定义表格中,所谓“是否在连接器处倒相”是指并口硬件将连接器与相应寄存器位之间的4个信号进行了倒相处理。具体说来,S7、C0、C1、C3信号的逻辑状态在连接器处是与相应寄存器位反相的。当你对这些位进行写操作时,必须牢记写入的值应该与你想在连接器处设置的值相反;当要对这些位进行读操作时,也必须记住所读取的值与连接器处的值相反。
计算机的标准配备并行端口除以上介绍的数据端口引脚Pin2~Pin9、状态端口引脚Pin15、Pin10~Pin13、控制端口引脚Pin1、Pin14、pin16、Pin17外,连接器上的 其它引脚Pin18~Pin25是归地引脚GND。
评论