Espansione A 32 Uscite Digitali Per PortA ParallelA

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 */

 

 

Ritornare

 

Se desidera ma informazione di la  Porta Parallela, non dubiti di comunicarsi con  pparalelo@hotmail.com

 

 

 

Google