Anche se i più recenti computer spesso non ne sono dotati, la porta parallela costituisce il metodo più semplice per interfacciare un dispositivo elettronico col PC. Ciò è dovuto al fatto che i suoi ingressi e le sue uscite sono compatibili con i circuiti TTL e CMOS più diffusi in commercio (nei quali il livello logico 1 è rappresentato da 5 V e lo 0 da 0 V). Rispetto al primo modello, la porta parallela si è evoluta e supporta diverse modalità di funzionamento. Tuttavia faremo riferimento alla modalità originaria, la SPP (Standard Parallel Port). In questa modalità la porta presenta in totale 12 bit di uscita e 5 bit di ingresso. Per scrivere o leggere questi bit, basta scrivere o leggere nei relativi indirizzi di memoria associati alla porta parallela. Nella modalità SPP, alla porta parallela sono associati 3 registri in memoria, a partire dall'indirizzo base che solitamente è 0x378 (378 esadecimale). In alcuni computer l'indirizzo può essere 0x278 oppure 0x3BC, spesso può essere cambiato dal BIOS. Il modo in cui questi registri sono organizzati riflette il fatto che la porta parallela è stata originariamente concepita per pilotare la stampante.
Il registro 0x378 costituisce il registro dati, ad esso sono associati gli 8 bit di dati evidenziati in verde nella figura (il bit meno significativo corrisponde al pin 2 della porta, quello più significativo al pin 9). Il registro 0x379 costituisce il registro di stato. Leggendo questo registro è possibile conoscere lo stato logico dei bit di ingresso, quelli in blu nella figura. Il valore di alcuni di questi bit è invertito nel registro.
Il registro 0x37A costituisce il registro di controllo. Quattro dei suoi bit sono associati agli altri quattro bit di uscita della porta parallela, quelli in rosso nella figura.
I pin da 18 a 25 (in grigio nella figura) sono tutti posti a massa. Per scrivere e leggere nei registri in memoria, diversi linguaggi hanno istruzioni dedicate. Tuttavia, in Windows 2000 e XP è impedito l'accesso diretto dei programmi alle periferiche, ma è necessario utilizzare un driver. Per fortuna sono disponibili diverse librerie che permettono di aggirare questo ostacolo, fra cui inpout32.dll, che potete scaricare qui: Utilizzando questa libreria, si hanno a disposizione le due seguenti istruzioni: Out32(address,data) scrive il valore data sull'indirizzo address; Inp32(address) restituisce il valore contenuto nell'indirizzo address. Ogni programma che utilizza la libreria avrà bisogno del file inpout32.dll (si trova nel file zip in binaries\dll) presente nella cartella del programma oppure nella cartella sistema di Windows (C:\Windows\System in Windows 9x, C:\Windows\System32 in Windows 2000/XP). Vediamo ora come importare la libreria in alcuni linguaggi: Visual C++ Visual Basic Visual C#
La più semplice applicazione è pilotare una batteria di 8 led collegata agli 8 bit di dati. Eseguendo l'istruzione Out32(0x378,data), leggeremo sui led la rappresentazione binaria del numero data. Un'altra semplice applicazione è il pilotaggio di un relè. In figura è mostrato un relè pilotato dal bit 0 del registro dati: E' possibile inoltre pilotare display a 7 segmenti o LCD, porte logiche TTL, etc.... Un'interessante applicazione è il collegamento di un convertitore analogico-digitale per l'acquisizione di dati analogici, ad esempio provenienti da sensori. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|