L’interfaccia Centronics è un’interfaccia parallela ad 8 bit di tipo asincrona usata soprattutto per collegare un computer ad una stampante parallela. Il flusso di dati è tipicamente monodirezionale e va, naturalmente, dal computer alla stampante ma è possibile anche inviare sulle stesse linee dati che vanno dal dispositivo periferico al computer e ciò consente l’utilizzo di tale interfaccia anche per il collegamento di dispositivi di input come, ad esempio, lo scanner o la webcam. Il connettore sul retro del computer è di tipo D a 25 poli femmina. Su un PC possono prendere posto fino a 3 interfacce parallele denominate LPT1, LPT2 e LPT3 (Line Printer Terminal). Ciascuna delle 3 LPT presenta 3 indirizzi contigui destinate alle periferiche di I/O. L’indirizzo base della LPT1 è 888 (in esadecimale: 378), gli altri due indirizzi sono 889 e 890. L’indirizzo base della LPT2 è 632 (in esadecimale: 278), gli altri due indirizzi sono 633 e 634. L’indirizzo base della LPT3 è 956 (in esadecimale: 3BC), gli altri due indirizzi sono 957 e 958. Si riassume la situazione nella seguente tabella.
|
|
Ind. base |
Ind.base+1 |
Ind.base+2 |
|
LTP1 |
888 |
889 |
890 |
|
LPT2 |
632 |
633 |
634 |
|
LPT3 |
956 |
957 |
958 |
Tabella degli indirizzi delle varie porte centronics
Alla LPT1 viene riservato l’interrupt IRQ7. Il registro base di indirizzo 888, denominato registro dati, contiene 8 bit di uscita dal PC.
Il registro di indirizzo successivo 889, noto come registro di stato, è accessibile solo dall’esterno e solamente per 5 dei suoi 8 bit. È detto registro di stato perché ciascuna delle 5 linee individua un particolare stato in cui si trova la stampante (occupata, carta esaurita, errore, ecc.). Il registro di indirizzo 890, noto come registro di controllo, rende disponibili solo 4 bit di uscita.
In fig. 16 si mostra il connettore a 25 poli posto sul retro del computer.

fig. 16 – Interfaccia Centronics. Connettore D a 25 poli femmina posto sul retro del PC.
In tabella si riporta la piedinatura, la denominazione, la direzione, l’indirizzo e l’uso delle linee che l’interfaccia Centronics mette a disposizione sul connettore D a 25 poli agli indirizzi 888, 889 e 890 della LPT1.
Tabella dei pin con le varie funzioni
|
PIN |
NOME |
DIREZIONE |
INDIRIZZO ED USO |
|
1 |
_______ STROBE |
USCITA |
890 OUT 890,1 0V 890 OUT 890,0 5V |
|
2 |
DATA1 |
USCITA |
|
|
3 |
DATA2 |
USCITA |
|
|
4 |
DATA3 |
USCITA |
|
|
5 |
DATA4 |
USCITA |
OUT 888,N |
|
6 |
DATA5 |
USCITA |
Per |
|
7 |
DATA6 |
USCITA |
0 £ N £ 255 |
|
8 |
DATA7 |
USCITA |
|
|
9 |
DATA8 |
USCITA |
|
|
10 |
ACK |
INGRESSO |
B3 (64) SE ALTO |
|
11 |
_____ BUSY |
INGRESSO |
B4 (128) SE BASSO |
|
12 |
PAPER OUT |
INGRESSO |
B2 (32) SE ALTO |
|
13 |
SELECTED |
INGRESSO |
B1 (16) SE ALTO |
|
14 |
__________ AUTOFEED |
USCITA |
890 OUT 890,2 0V |
|
15 |
ERROR |
INGRESSO |
B0 ( 8 ) SE ALTO |
|
16 |
INIZIALIZE PRINTER |
USCITA |
890 OUT 890,4 5V |
|
17 |
_____________ SELECT INPUT |
USCITA |
890 OUT 890,8 0V |
|
18…25 |
GND |
|
|
Registro dati (indirizzo 888) :
Le linee di uscita DATA8...DATA1, di indirizzo 888 (378 esadecimale), situate tra i pin 9....2, sono memorizzate, cioè rappresentano i bit di uscita di altrettanti flip-flop.
|
LINEE
|
DATA8 |
DATA7 |
DATA6 |
DATA5 |
DATA4 |
DATA3 |
DATA2 |
DATA1 |
|
PIN |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
Registro di stato (indirizzo 889):
L’interfaccia Centronics possiede 5 linee di ingresso all’indirizzo 889 (379 esadecimale) con i seguenti valori e logiche di funzionamento:
_____
BUSY (pin 11) vale 128 se è al livello basso (logica negativa).
ACK (pin 10) vale 64 se è al livello alto (logica positiva).
PAPER OUT (pin 12) vale 32 se è al livello alto (logica positiva).
SELECTED (pin 13) vale 16 se è al livello alto (logica positiva).
ERROR (pin 15) vale 8 se è al livello alto (logica positiva).
|
LINEE
|
_____ BUSY |
ACK |
PAPER OUT |
SELECTED |
ERROR |
1 |
1 |
1 |
|
PIN |
11 |
10 |
12 |
13 |
15 |
|
|
|
I rimanenti 3 bit meno significativi del byte di ingresso non sono accessibili sul connettore e sono poste, internamente all’interfaccia, al livello alto (1112 = 710 ).
Avendo a disposizione 5 bit (32 combinazioni) è possibile acquisire, via software in una variabile A, un valore compreso tra 0 e 31.
Registro di controllo (indirizzo 890):
L’indirizzo Centronics 890 (37A esadecimale) rende disponibile in uscita altri 4 bit di cui tre attivi in logica negativa ed una in logica positiva :
___ _____
STB = STROBE (pin 1) vale 1 se è al livello basso (logica negativa).
__ __________
AF = AUTOFEED (pin 14) vale 2 se è al livello basso (logica negativa).
IP = INIZIALIZE PRINTER (pin 16) vale 4 se è al livello alto (logica positiva).
__ _____________
SI = SELECT INPUT (pin 17) vale 8 se è al livello basso (logica negativa).
IRQE = ABILITA INTERRUPT vale 16 se è al livello alto (logica positiva)
ma non è disponibile fisicamente.
|
indirizzo 890 |
bit 7 |
bit 6 |
bit 5 |
bit 4 |
bit 3 |
bit 2 |
bit 1 |
bit 0 |
|
LINEE |
|
|
|
IRQE |
__ SI |
IP |
__ AF |
___ STB |
|
PIN |
|
|
|
|
17 |
16 |
14 |
1 |
Il bit 5 dell’indirizzo 890, selezionabile solo via software, se posto a 0 imposta i bit da DATA1 fino a DATA8 come output (default), se posto a 1 come input.
Il linguaggio di programmazione Visual Basic consente di mettere a punto interfacce grafiche estremamente elaborate ed accattivanti con poca fatica ma purtroppo, in forma nativa, non supporta le istruzioni di input e di output direttamente da unità periferiche.
Per ovviare a tale limitazione è necessario istallare opportune librerie che consentono di disporre delle istruzioni di input e output su periferica. La libreria inpout32.dll disponibile sul sito www…………………..com consente di utilizzare le istruzioni input e output in ambiente Windows dalla versione 98 fino a XP. Il software in VB6 deve includere un modulo INPOUTV4.BAS di seguito riportata.
|
Public Declare Function Inp Lib "inpout32.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Integer Public Declare Sub Out Lib "inpout32.dll" _ Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
|