EXPANSION A 32 SALIDAS DIGITALES POR EL PUERTO PARALELO
Puerto Paralelo

Expansión a 32 salidas digitales para el puerto paralelo

Home

El puerto paralelo estándar sólo tiene 12 salidas digitales (8 del registro de estado y 4 del registro de control). Algunas aplicaciones pueden necesitar más de las 12 salidas. En este caso es posible expandir el número de salidas (32)mediante un sencillo circuito basado en 4 componentes electrónicos como el buffer (compensador) 74LS244. Se envían los datos (1 byte mediante el registro de datos) a los 4buffers y se selecciona por cual deben salir. Para esto se usan los cuatro bits del registro de control para seleccionar el buffer que se desee.

Descripción del buffer 74LS244

Fig. El buffer 74LS244

 

Referencias

Entradas Salidas

1A1 Entrada 1 1V1 Salida 1

1A2 Entrada 2 1V2 Salida 2

1A3 Entrada 3 1V3 Salida 3

1A4 Entrada 4 1V4 Salida 4

2A1 Entrada 5 2V1 Salida 5

2A2 Entrada 6 2V2 Salida 6

2A3 Entrada 7 2V3 Salida 7

2A4 Entrada 8 2V4 Salida 8

 

Alimentación y operación

1 Selección de nibble 1A. (seleccionar con nivel bajo)

2 Selección de nibble 2A. (seleccionar con nivel bajo)

Vcc 5 voltios

Gnd Tierra

La fuente de 5 voltios para alimentar este circuito se puede obtenerdirectamente de la fuente de poder del PC, o del puerto de juegos (ver fuente dealimentación).

Modo de operación

El 74LS244 está formado por dos grupos de 4 bits. Cuando se seleccionaun grupo, los bits que estén en la entrada serán transferidos a la salida. La seleccióndel componente se realiza a través del registro de control. El pin del registro decontrol debe ser conectado a los dos bits de habilitación para que la transferencia seade 8 en 8 bits. En la figura que está a continuación se muestran las conexiones delcircuito completo.

Fig. Conexión sugerida del 74LS244

 

 

 

Programación

El siguiente algoritmo permite colocar en 1 cualquiera de las 32salidas del circuito, sin modificar el resto.

 

 

/* Definimos las variables */

Buffer es un arreglo[1..4] de tipo byte

i de tipo entero

dir_base,dir_control de tipo word

procedimiento inicializar

inicio

obtener dir_base del puerto paralelo

calcular: dir_control=dir_base+2

para i=1 hasta 4 hacer buffer[i]=0

fin

función dos_a_la(i de tipo entero) retorna un dato de tipo byte

definimos las variables:

r,ctd de tipo entero

inicio

r=1

para ctd=1 hasta i hacer r=r*2

dos_a_la=r

fin

procedimiento enviar(dir_salida,dato de tipo byte)

dir_salida puede estar entre 0 y 31

dato puede ser 0 o 1

inicio

Si (dir_salida>=0) Y (dir_salida<=7) entonces

inicio

Si dato=1 entonces buffer[1]=buffer[1] Odos_a_la(dir_salida)

sino buffer[1]=buffer[1] Y NO dos_a_la(dir_salida)

/*activar el buffer 1*/

port[dir_control]=7 XOR 11 /* 7=0000 0111 recuerde que el74LS244 se activa

con un valor bajo (bit en 0).

utilizamos la operacion OR con 11

para invertir los bits del registro

de control*/

/*enviar los datos*/

port[dir_base]=buffer[1]

Fin

Si (dir_salida>=8) Y (dir_salida<=15) entonces

inicio

Si dato=1 entonces buffer[2]=buffer[2] Odos_a_la(dir_salida-8)

sino buffer[2]=buffer[2] Y NO dos_a_la(dir_salida-8)

/*activar buffer 2*/

port[dir_control]=11 XOR 11 /* 11= 0000 1011*/

/*enviar los datos*/

port[dir_base]=buffer[2]

Fin

Si (dir_salida>=16) Y (dir_salida<=23) entonces

inicio

Si dato=1 entonces buffer[3]=buffer[3] Odos_a_la(dir_salida-8*2)

Sino buffer[3]=buffer[3] Y NO dos_a_la(dir_salida-8*2)

/*activar buffer 3*/

port[dir_control]=13 XOR 11 /* 13= 0000 1101*/

/*enviar los datos*/

port[dir_base]=buffer[3]

Fin

Si (dir_salida>=24) Y (dir_salida<=31) entonces

inicio

Si dato=1 entonces buffer[4]=buffer[4] Odos_a_la(dir_salida-8*3)

sino buffer[4]=buffer[4] Y NO dos_a_la(dir_salida-8*3)

/*activar buffer 4*/

port[dir_control]:=14 XOR 11 /*14=0000 1110*/

/*enviar los datos*/

port[dir_base]=buffer[4]

Fin

Fin

/*Utilización*/

primero se debe llamar al procedimiento inicializar

Luego llamar el procedimiento enviar

Ejemplos:

Si se quiere enviar un 1 a la salida 24 la llamada será:

Enviar(24,1)

Si se quiere enviar un 0 a la salida 14 la llamada será:

Enviar(14,0)

Si se quiere enviar un 1 a las salidas 3, 15 y 27 las llamadas serán:

Enviar(3,1)

Enviar(15,1)

Enviar(27,1)

Si se quiere enviar un 0 a las salidas 2, 24 y 16 y enviar un 1 a la salida 25, las llamadas serán:

Enviar(2,0)

Enviar(24,0)

Enviar(16,0)

Enviar(25,1)

/* Fin */

 

Esta información es parte del Libro: "El Puerto Paralelo como interface de Entrada/Salida"
Contenido del Libro:

 

 

Novedades en nuestro Blog: Blog Puertos Paralelos
Comentarios, aportes, consultas, visite nuestro Foro: Foro Puerto Paralelo
Puertos paralelos PCI

Sitios recomendados:
Secado de Madera utilizando el Puerto Paralelo
Hidroponia - Hidropónico
Un poco de Seguridad Ciudadana
 

IR A LA PAGINA PRINCIPAL DEL PUERTO PARALELO

Conector Puerto Paralelo hembra DB25

 

Google
 

Home