![]() |
| |
| ||
Espansione a 32 uscite digitali per la porta parallela
Il porto parallelo standard ha solo 12 uscite digitali, 8 del registro di stato e 4 del registro di controllo. Alcuni applicazioni possono necesitar más delle 12 uscite. In questo caso è possibile espandere il numero di uscite, 32)mediante un semplice circuito basato in 4 componenti elettronici come il buffer(compensador, 74LS244. Si inviano i dati, 1 byte mediante il registro di dati, ai 4buffers e si seleziona per quale devono uscire. Per questo si usano i quattro bits delregistro di controllo per selezionare il buffer che si desideri.
Descrizione del buffer 74LS244

Fig. Il buffer 74LS244
Riferimenti
Avanzate Uscite
1A1 Entrata 1 1V1 Uscita 1
1A2 Entrata 2 1V2 Uscita 2
1A3 Entrata 3 1V3 Uscita 3
1A4 Entrata 4 1V4 Uscita 4
2A1 Entrata 5 2V1 Uscita 5
2A2 Entrata 6 2V2 Uscita 6
2A3 Entrata 7 2V3 Uscita 7
2A4 Entrata 8 2V4 Uscita 8
Alimentazione ed operazione
1
selezione di nibble 1A. (selezionare con livello basso)
2
selezione di nibble 2A. (selezionare con livello basso)
Vcc 5 volt
Gnd Tierra
La fonte di 5 volt per alimentare questo circuito si può obtenerdirectamente della fonte di potere del PC, o del porto di giochi (vedere fonte dealimentación).
Modo di operazione
Il 74LS244 sta formato per due gruppi di 4 bits. Quando Lei seleccionaun gruppo, i bits che stiano nell'entrata sarà trasferito all'uscita. La seleccióndel componente si realizza attraverso il registro di controllo. Il pin del registro decontrol deve essere connesso ai due bits di abilitazione affinché il bonifico seade 8 in 8 bits. Nella figura che sta di seguito si mostrano le connessioni delcircuito completo.

Fig. Connessione suggerita del 74LS244
Programmazione
Il seguente algoritmo permette di collocare in 1 chiunque delle 32salidas del circuito, senza modificare il resto.
/* Definiamo le variabili */
Buffer è un arreglo[1 ..4] di tipo byte
i di tipo intero
dir_base,dir_control di tipo word
procedimento inizializzare
inizio
ottenere dir_base del porto parallelo
calcolare: dir_control=dir_base+2
per i=1 fino a 4 fare buffer[i]=0
fine
funzione dos_a_la(i di tipo intero, ritorna un dato di tipo byte
definiamo le variabili:
r,ctd di tipo intero
inizio
r=1
per ctd=1 fino ai fare r=r*2
dos_a_la=r
fine
procedimento enviar(dir_salida,dato di tipo byte,
dir_salida può stare tra 0 e 31
dato può essere 0 o 1
inizio
Se (dir_salida>=0) E (dir_salida <=7) allora
inizio
Se dato=1 allora buffer[1]=buffer[1] Odos_a_la(dir_salida,
bensì buffer[1]=buffer[1] E Non dos_a_la(dir_salida,
/*attivare il buffer 1*/
port[dir_control]=7 XOR 11 / * 7=0000 0111 ricordi che el74LS244 si attiva
con un valore basso, bit in 0.
utilizziamo l'operazione OR con 11
per investire i bits del registro
di controllo*/
/*inviare i dati*/
port[dir_base]=buffer[1]
Fine
Se (dir_salida>=8) E (dir_salida <=15) allora
inizio
Se dato=1 allora buffer[2]=buffer[2] Odos_a_la(dir_salida-8,
bensì buffer[2]=buffer[2] E Non dos_a_la(dir_salida-8,
/*attivare buffer 2*/
port[dir_control]=11 XOR 11 / * 11 = 0000 1011*/
/*inviare i dati*/
port[dir_base]=buffer[2]
Fine
Se (dir_salida>=16) E (dir_salida <=23) allora
inizio
Se dato=1 allora buffer[3]=buffer[3] Odos_a_la(dir_salida-8*2,
Bensì buffer[3]=buffer[3] E Non dos_a_la(dir_salida-8*2,
/*attivare buffer 3*/
port[dir_control]=13 XOR 11 / * 13 = 0000 1101*/
/*inviare i dati*/
port[dir_base]=buffer[3]
Fine
Se (dir_salida>=24) E (dir_salida <=31) allora
inizio
Se dato=1 allora buffer[4]=buffer[4] Odos_a_la(dir_salida-8*3,
bensì buffer[4]=buffer[4] E Non dos_a_la(dir_salida-8*3,
/*attivare buffer 4*/
port[dir_control]:=14 XOR 11 / *14=0000 1110*/
/*inviare i dati*/
port[dir_base]=buffer[4]
Fine
Fine
/*Utilizzo*/
primo deve richiamare al procedimento inizializzare
Quindi chiamare il procedimento inviare
Esempi:
Se si vuole inviare un 1 all'uscita 24 la chiamata sarà:
Enviar(24,1,
Se si vuole inviare un 0 all'uscita 14 la chiamata sarà:
Enviar(14,0,
Se si vuole inviare un 1 alle uscite 3, 15 e 27 le chiamate saranno:
Enviar(3,1,
Enviar(15,1,
Enviar(27,1,
Se si vuole inviare un 0 alle uscite 2, 24 e 16 ed inviare un 1 all'uscita 25, le chiamate saranno:
Enviar(2,0,
Enviar(24,0,
Enviar(16,0,
Enviar(25,1,
/* Fine */
Se desidera ma informazione di la Porta Parallela, non dubiti di comunicarsi con pparalelo@hotmail.com