Per poter realizzare dei sistemi con un certo numero di ingressi/uscite, ma senza dover collegare un numero esagerato di componenti, sono stati prodotti degli integrati che racchiudono in un unico contenitore più porte configurabili via software, l'8255 è uno di questi e mette a disposizione 3 porte configurabili come ingressi o come uscite.
Integrato 8255Rosso: BUS dati a 8 bitVerde: BUS indirizzi a 2 bit (per selezionare 4 indirizzi interni) Blu: Alimentazioni e reset Giallo: I segnali di controllo, abilitazione dell'integrato, lettura e scrittura. Gli altri 24 pin sono i fili di ingresso/uscita delle tre porte PA PB e PC, la porta PC è suddivisa in PCL e PCH. |
|
Schema interno semplificato dell'8255
|
L'8255 dispone
di tutta la circuiteria per indirizzare 4 porte sia in ingresso sia in
uscita, una di queste è una porta interna, detta registro, che serve
per configurare via software il funzionamento delle altre tre.
La selezione della porta a cui si deve accedere si effettua inviando l'indirizzo binario sui fili A0 e A1, se si realizza un sistema semplice con un solo 8255 e si collegano A0 con A0 del BUS dello Z80 e A1 con A1 allora le porte di I/O risulteranno così mappate:
|
Sostituire le X con: 0=uscita 1=ingresso
La seguente tabella riporta le 16 combinazioni di ingressi/uscite e il relativo codice di configurazione espresso in esadecimale:
PA | PB | PCH | PCL | CONTROLLO |
OUT | OUT | OUT | OUT | 80H |
OUT | OUT | OUT | IN | 81H |
OUT | IN | OUT | OUT | 82H |
OUT | IN | OUT | IN | 83H |
OUT | OUT | IN | OUT | 88H |
OUT | OUT | IN | IN | 89H |
OUT | IN | IN | OUT | 8AH |
OUT | IN | IN | IN | 8BH |
IN | OUT | OUT | OUT | 90H |
IN | OUT | OUT | IN | 91H |
IN | IN | OUT | OUT | 92H |
IN | IN | OUT | IN | 93H |
IN | OUT | IN | OUT | 98H |
IN | OUT | IN | IN | 99H |
IN | IN | IN | OUT | 9AH |
IN | IN | IN | IN | 9BH |
Collegamento allo Z80
L'accesso ad un 8255 può essere considerato simile all'accesso a una memoria da 4 byte, l'integrato ha un pin di abilitazione e due pin per i segnali di lettura e scrittura, ha due bit di indirizzamento per selezionare uno dei quattro indirizzi interni e un BUS dati bidirezionale.Su un sistema minimo che ha come circuito di I/O un solo 8255, potrebbe in teoria bastare collegare IORQ al pin E dell'8255, RD e WR del processore ad RD e WR dell'8255, i primi due bit del BUS indirizzi e il BUS dati. In pratica anche l'8255, come accade per alcune memorie, ha bisogno della persistenza a livello 0 del segnale E per un certo tempo dopo il ritorno a 1 di WR durante una scrittura, questo significa che anche per questo chip sono necessarie le due porte OR come per la RAM.
Inoltre dispone di un pin di RESET non negato, si resetta cioè con un livello 1, il contrario dello Z80, e non basta, l'uscita dallo stato di reset è un po' più lenta che per il processore, e se questo iniziasse subito la programmazione dell'8255 l'operazione potrebbe non andare a buon fine, per questo motivo si deve ulteriormente ritardare il RESET del processore con un circuito RC, di seguito si può vedere il circuito di reset usato nelle altre pagine modificato per far funzionare un 8255:
NOTA: Se all'accensione non è importante il valore che assumono temporaneamente i pin di I/O, allora il pin reset dell'8255 può anche essere collegato stabilmente a massa.All'arrivo di un reset, e quindi anche all'accensione, tutte le porte dell'8255 si predispongono automaticamente come ingressi, è pertanto bene collegare su tutti i pin di I/O delle reti resistive di pull up da 10Kohm di tipo SIL (8 resistenze con un capo in comune), in modo da stabilizzare il livello logico ed evitare gli eventuali e distruttivi accumuli di cariche elettriche che possono verificarsi sugli ingressi CMOS scollegati.
Nella figura seguente si vede il corretto collegamento di un singolo 8255 al BUS dello Z80, e le resistenze sugli ingressi/uscite.