PC机标准并行接口的原理和应用(下篇)(引用)_条码知识大权--黄金时代 ...

 状态寄存器:
  状态寄存器占用的地址是基地址加一,与接口的10,11,12,13,15针相连,这个寄存器是只读寄存器,在用于打印机驱动时用来取得打印机的当前状态,如出错、选中、缺纸等等。该寄存器中包含一个IRQ中断寄存器(由Ack相反后形成),当有中断发生这个数据位为"0"。在读入数据时要注意的是Bit7(引脚11)在输入+5VTTL电平时,数据值为"0",有反转的特性。

 控制寄存器
  控制寄存器占用的地址是基地址加二,与接口的1,14,16,17针相连,寄存器可读写。其中Bit0,Bit1,Bit3有反转的特性。通常用于打印机控制时,这个端口只用发送控制数据,如初始化机印机、自动换行等。这个端口还有高阻特性,在应用时可以根据要求加电阻,以使电平足够高或足够低。Bit4为IRQ应用,当向Bit4写入"1"时,将使ACK(引脚10)信号反相后成为中断请求IRQ信号,通常为IRQ5或IRQ7。在本文中的实例里,用到LPT16,17引脚去控制IC1和IC2的控制端,无论是使用那一个寄存器在程序的编写过程中一定要注意引脚电平和数据位的相互关系,否则就得不到想要的电平或数据。

握手信号:
  使用标准PC并行接口的打印机会用到Centronics标准的握手信号。时序图见图十。首先数据加到数据寄存器,然后检查Busy(引脚11)是否为高,为高打印机处在以下状态之一:正在输入数据、正在打印操作、打印机出错、处在脱机状态,这时打印机不接收数据,Busy为低时,nStrobe(引脚1)输出一最小宽度大于1us的负脉冲,打印机随后接收数据并使Busy变为高,打印机接收完一个字节后回送给并行接口nAck(引脚10)一个宽度大于5us的响应负脉冲,这个信号可以被并行接口硬件反相之后作为IRQ中断信号或做为查询的状态信号,由于该信号的负脉冲较短,一般不会查询它,而是查询Busy。打印机状态回复,准备接收下一个字节。在应用标准并行接口的外部设备中并不一定就会用到这种握手信号,通常它们都有自己相应的握手信号,在我们自己的制作中也可以制定相应的握手信号,在本文的实例中就没有必要用到握手信号。所谓的握手就是PC向设备查询设备的工作状态,PC再根据返回的信号做相应的操作。


  现在的板载的并行接口都会支持EPP和ECP模式,由于硬件上数据端口是支持双向传输的,所以在SPP模式下也可在数据端口中输入数据。如果你用的是旧式的并行接口功能卡或你不想用数据端口输入数据,而又要用并行接口采集8Bit的数据时,还可以用以下的两种方法。一种是用控制端口和状态端口的输入功能组成8Bit的数据输入,但要注意输入电平和所对应的数据位的相互关系,可以用软件进行调整控制。另一种方式只用到状态端口做输入,因一次只能读取4Bit也就是半个字节,故又称Nibble Mode。具体电路图请参看图十一。电路中用nStrobe控制74HC157(或74LS157)当前是读取前半个字节还是后半个字节,读取后只要把前后半个字节合并就可。


 软件实例
  关于并口的简单编程在上面已做了介绍,在这里笔者提供实例演示程序源码和笔者在二年多前写的一个应用标准并口的小软件源码(界面图12),Port1.0不但可以控制数据口和控制口电平状态,还可以以方波图直观显示状态口引脚的电平状态,它是用BC++5.0编写的,本文的实例电路也可以借助它来进行测试,用来控制数据寄存器和控制寄存器来显示数字,在随刊光盘中附带如何借助它进行对实例电路的测试。本文的演示程序是用delphi7.0编写,嵌入汇编,中用于win9x系统,编译后可以借助第三方软件运行在win2k或XP系统下,通过它在实例电路中显示输入的数字和PC机的日期时间。笔者提供了源代码程序(随刊光盘),在这不能一一讲解,大家可以看附带的说明或访问笔者的网站www.cdle.net以得到更多相关的文章和程序源码。


郑重声明:资讯 【PC机标准并行接口的原理和应用(下篇)(引用)_条码知识大权--黄金时代 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——