PC并行端口作為數(shù)字I/O口的應(yīng)用
一、PC并行端口介紹
目前,計(jì)算機(jī)中的并行接口主要作為打印機(jī)端口,接口使用的不再是36針接頭而是25針D形接頭。所謂“并行”,是指8位數(shù)據(jù)同時(shí)通過并行線進(jìn)行傳送,這樣數(shù)據(jù)傳送速度大大提高。
現(xiàn)在常見的并口有五種:SPP型、PS/2型、EPP型、ECP型和多模式接口,大多數(shù)PC機(jī)配有SPP并口:
SPP標(biāo)準(zhǔn)并行口有4位、8位、半8位:4位口一次只能輸入4位數(shù)據(jù),但可以輸出8位數(shù)據(jù);8位口可以一次輸入和輸出8位數(shù)據(jù);半8位也可以。
PS/2簡單雙向并行口:它引入雙向數(shù)據(jù)端口,這種雙向數(shù)據(jù)端口容許外設(shè)每次向PC機(jī)發(fā)送8位信息。PS/2型并口是指所有具有雙向數(shù)據(jù)端口,但不支持后面介紹的EPP或ECP模式的并行接口。
EPP增強(qiáng)并行口:允許8位雙向數(shù)據(jù)傳送,它可以在大約1ms的時(shí)間內(nèi)完成包括握手聯(lián)絡(luò)在內(nèi)的一個(gè)字節(jié)的數(shù)據(jù)傳送;而SPP或SP/2接口則需要大約4ms才能完成同樣的工作。因此可以連接各種非打印機(jī)設(shè)備,如掃描儀、LAN適配器、磁盤驅(qū)動(dòng)器和CDROM 驅(qū)動(dòng)器等。
ECP口擴(kuò)展并行口:是雙向數(shù)據(jù)端口,并能以ISA總線速度傳送數(shù)據(jù)。ECP有緩沖區(qū),支持命令周期、數(shù)據(jù)周期和多個(gè)邏輯設(shè)備尋址,在多任務(wù)環(huán)境下可以使用DMA(直接存儲器訪問)。
多模式接口:許多新型接口支持多種模式,可以工作在以上提到的部分或全部模式下,用戶可以使用配置選擇,使用上述各種接口形式,或只使用其中一些而禁止其它。
二、PC標(biāo)準(zhǔn)配備并行口介紹
本文主要介紹計(jì)算機(jī)的標(biāo)準(zhǔn)配備并行端口即25針的母接頭端口的應(yīng)用,在此基礎(chǔ)上可以運(yùn)用相同的原理使用其它模式的并行端口。并行端口共有25支腳,但不是每支腳均被使用到。這些腳被區(qū)分為3種主要的功能,分別是用于數(shù)據(jù)的傳送、檢查打印機(jī)的狀態(tài)及控制打印機(jī),其接口如下所示:
在PC機(jī)中,標(biāo)準(zhǔn)并行口使用3個(gè)8位的端口寄存器,PC就是通過對這些寄存器,也就是所說的數(shù)據(jù)、狀態(tài)、控制寄存器的讀寫訪問并口的信號的。本文中使用一些通用的叫法,8個(gè)數(shù)據(jù)位分別為D0~D7,5個(gè)狀態(tài)位為S3~S7,4個(gè)控制為C0~C3。其中字母表示了端口寄存器,數(shù)字則表示該信號在寄存器中的位。
數(shù)據(jù)寄存器
數(shù)據(jù)端口或稱數(shù)據(jù)寄存器(D0~D7)保存了寫入數(shù)據(jù)輸出端口的一字節(jié)信息。數(shù)據(jù)端口可以寫入數(shù)據(jù),也可以讀出數(shù)據(jù)(即可擦寫);寫進(jìn)去的當(dāng)然是我們希望從數(shù)據(jù)端口引腳輸出的數(shù)據(jù),不過讀進(jìn)來的也只是我們上次寫進(jìn)去的數(shù)據(jù),或是原來保留在里面的數(shù)據(jù),并不是從端口引腳輸入PC的數(shù)據(jù)。數(shù)據(jù)端口引腳是PIN2~PIN9,其定義如下:
數(shù)據(jù)寄存器(即數(shù)據(jù)輸出端口) 可擦寫、基地址
bit引腳:D-sub信號名信號源是否在連接器處倒相
0Pin2D0PC否
1Pin3D1PC否
2Pin4D2PC否
3Pin5D3PC否
4Pin6D4PC否
5Pin7D5PC否
6Pin8D6PC否
7Pin9D7PC否
如果我們把這8支腳當(dāng)成一般的數(shù)字輸出的腳位看待,上述8支腳就相當(dāng)于是8個(gè)數(shù)字輸出的位置一般,我們就可以把它們當(dāng)成是8個(gè)可以自由控制的輸出點(diǎn)。當(dāng)我們通過數(shù)據(jù)端口傳送數(shù)據(jù)時(shí),就是改變這8支腳的電平狀態(tài);而接受方也按照相同的編碼原則解釋,就可以獲得傳送的數(shù)據(jù)。
狀態(tài)寄存器
狀態(tài)端口或稱狀態(tài)寄存器保存的是5個(gè)輸入(S3~S7)的邏輯狀態(tài)。S0~S2位不出現(xiàn)在并口連接器中。除了S0以外,狀態(tài)寄存器是只讀的,讀出數(shù)據(jù)信息是狀態(tài)端口引腳上的邏輯狀態(tài)。S0是支持EPP傳輸并口的超時(shí)標(biāo)志信息,可以用軟件方法清零。在許多并口中,狀態(tài)輸入接有上拉電阻。狀態(tài)端口引腳是Pin10~Pin13、Pin15,其定義如下:
狀態(tài)寄存器(即狀態(tài)輸入端口) 基地址+1
bit引腳:D-sub信號名信號源是否在連接器處倒相
0 Time-Out
1 未使用
2 未使用
3Pin15nError(nFault)外設(shè)否
4Pin13Select外設(shè)否
5Pin12PaperEnd外設(shè)否
6Pin10nAck外設(shè)否
7Pin11Busy外設(shè)是
上表中所謂的(基地址+1)指的是:如果我們的LPT地址是378H,在加上1就是379H;這個(gè)地址是專門用來傳遞打印機(jī)的狀態(tài)的。和數(shù)據(jù)地址比較起來不一樣的是,這里地址并非在連接器的腳位上均有對應(yīng)點(diǎn)。在這個(gè)狀態(tài)的顯示上只有5個(gè)腳位有對應(yīng),位S0~S2是沒有的--最起碼是無法讓計(jì)算機(jī)有對應(yīng)的值可讀取。
如果打印機(jī)接到并口上,那么打印機(jī)的狀態(tài)將會(huì)通過這幾支腳傳送到PC,程序只要去基地址+1的位置讀取數(shù)值即可知道現(xiàn)在打印機(jī)所處的狀態(tài)。由于這幾支腳可以讓打印機(jī)傳送狀態(tài)給PC,那么我們可以把這幾支腳位拿來當(dāng)作數(shù)字輸入的通道;我們可以讓這幾支腳位的狀態(tài)發(fā)生電位的改變,而利用程序去讀取這些腳位的數(shù)值,即可實(shí)現(xiàn)數(shù)據(jù)的輸入。
控制寄存器
控制端口或稱控制寄存器保存了C0~C3的4位的控制信息。C4~C7不出現(xiàn)在并口連接器中。一般來說,這些位被用來輸出,然而大多數(shù)SPP中,控制位為集電極開路/漏極開路模式,也就是說,它們同樣可以用作輸入。要從控制位上讀取外部邏輯信號,首先將向相應(yīng)的輸出寫入“1”,然后讀取控制寄存器的值即可。但是,為了提高交換速度,大多數(shù)支持EPP和ECP接口中,控制位工作在不能用作輸入的推拉模式下。在一些多模式接口中,控制位采用的是改進(jìn)型的推拉模式,可以用作輸入。控制端口引腳是Pin1、Pin14、Pin16和Pin17,其定義如下:
控制寄存器(即控制輸出端口) 基地址+2
bit引腳:D-sub信號名信號源是否在連接器處倒相
0Pin1nStrobePC是
1Pin14nAutoLFPC是
2Pin16nInitPC否
3Pin17nSelectInPC是
4 IRQ
5 未使用
6 未使用
7 未使用
上表中所謂的(基地址+2)指的是:如果我們的LPT地址是378H,在加上1就是37AH;這個(gè)地址是專門用來控制打印機(jī)動(dòng)作的。
如同數(shù)據(jù)的送出,我們的程序只要將我們的信息送往(基地址+2)的地址去,就可以實(shí)現(xiàn)數(shù)據(jù)輸出,接受端在相應(yīng)引腳就可以接受到相應(yīng)的邏輯電位狀態(tài)。當(dāng)控制端口的信號源為高電平時(shí),這些引腳可以作為輸入引腳,如同狀態(tài)端口引腳一樣。
在上述定義表格中,所謂“是否在連接器處倒相”是指并口硬件將連接器與相應(yīng)寄存器位之間的4個(gè)信號進(jìn)行了倒相處理。具體說來,S7、C0、C1、C3信號的邏輯狀態(tài)在連接器處是與相應(yīng)寄存器位反相的。當(dāng)你對這些位進(jìn)行寫操作時(shí),必須牢記寫入的值應(yīng)該與你想在連接器處設(shè)置的值相反;當(dāng)要對這些位進(jìn)行讀操作時(shí),也必須記住所讀取的值與連接器處的值相反。
計(jì)算機(jī)的標(biāo)準(zhǔn)配備并行端口除以上介紹的數(shù)據(jù)端口引腳Pin2~Pin9、狀態(tài)端口引腳Pin15、Pin10~Pin13、控制端口引腳Pin1、Pin14、pin16、Pin17外,連接器上的 其它引腳Pin18~Pin25是歸地引腳GND。
評論