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)

 

 

 

Interfaccia Centronics