DESCRIPCION Y USO DEL PUERTO PARALELO

Texto completo

(1)

DESCRIPCION Y USO DEL PUERTO PARALELO

Descripción general

Inicialmente se colocó al puerto paralelo en la tarjeta del "Adaptador de impresora de IBM", o también con la tarjeta del "monitor monocromático y adaptador de impresora de IBM".

Con la llegada de clones al mercado, se crea un controlador de múltiples entradas y salidas (Multi I/O) donde se instalan controladores de discos, puertos serie, puerto de juegos y el puerto paralelo.

En la actualidad (1999) el puerto paralelo se incluye comúnmente incluido en la placa madre de la computadora (MotherBoard). No obstante, la conexión del puerto con el mundo externo no ha sufrido modificaciones. Este puerto utiliza un conector hembra DB25 en la computadora y un conector especial macho llamado Centronic que tiene 36 pines. Es posible conectar el DB25 de 25 pines al Centronic de 36 pines ya que cerca de la mitad de los pines del Centronic van a tierra y no se conectan con el DB25.

Descripción del conector DB25 del PC y el conector DB25 del Centronic

El puerto paralelo está formado por 17 líneas de señales y 8 líneas de tierra.Las líneas de señales están formadas por tres grupos:

4 Líneas de control 5 Líneas de estado 8 Líneas de datos

En el diseño original las líneas de control son usadas para la interface, control e intercambio de mensajes desde el PC a la impresora.

Las líneas de estado son usadas para intercambio de mensajes, indicadores de estado desde la impresora al PC (falta papel, impresora ocupada, error en la impresora).

(2)

Las líneas de datos suministran los datos de impresión del PC hacia la impresora y solamente en esa dirección. Las nuevas implementaciones del puerto permiten una comunicación bidireccional mediante estas líneas.

Cada una de estas líneas (control, estado, datos) puede ser referenciada de modo independiente mediante un registro.

Los registros del puerto paralelo

Cada registro del puerto paralelo es accesado mediante una dirección. El puerto paralelo tiene tres registros:

• Registro de datos

• Registro de estado

• Registro de control

En la tabla que se muestra a continuación se muestra la relación que existe entre las líneas físicas del conector del PC y los registros.

Tabla general del puerto paralelo

DB25 Señal Registro Tipo Activo Sentido

1 Control 0 C0- Salida Bajo Invertido

2 Dato 0 D0 Salida Alto directo

3 Dato 1 D1 Salida Alto directo

4 Dato 2 D2 Salida Alto directo

5 Dato 3 D3 Salida Alto directo

6 Dato 4 D4 Salida Alto directo

7 Dato 5 D5 Salida Alto directo

8 Dato 6 D6 Salida Alto directo

9 Dato 7 D7 Salida Alto directo

10 Estado 6 S6+ Entrada Alto directo

11 Estado 7 S7- Entrada Bajo Invertido

12 Estado 5 S5+ Entrada Alto directo

13 Estado 4 S4+ Entrada Alto directo

14 Control 1 C1- Salida Bajo Invertido

15 Estado 3 S3+ Entrada Alto directo

16 Control 2 C2+ Salida Alto directo

17 Control 3 C3- Salida Bajo Invertido

(3)

Notas:

Un dato en alto es un 1, un dato en bajo es un 0 La entrada y salida son desde el punto de vista del PC

Esquema

El puerto paralelo esquemáticamente, se describe a continuación. Nótese la conexión al bus ISA en la parte izquierda y los registros en la parte derecha.

(4)

Descripción de los componentes

El puerto paralelo originalmente estaba formado por los siguientes componentes:

o 1 Latch para manejar el registro de datos

o 1 Buffer para controlar la retroalimentación del registro de datos

(5)

o 1 Latch para manejar el registro de control

o 1 Buffer para controlar la retroalimentación del registro de control o 1 Multiplexor para direccionar los puertos en el bus ISA

o 1 Driver bidireccional para conectar con el bus ISA

Funcionamiento

Explicación del funcionamiento mediante el BIOS y el MS-DOS

IBM especificó direcciones base para el puerto paralelo estándar (dentro del espacio de direccionamiento de Entrada/Salida del 80x86). El adaptador de impresora podría usar la dirección base 3BCh, o más tarde 378h o 278h.

El BIOS (Basic Input Output System) de IBM crea en el momento de arranque o POST (Power On Seft Test) una tabla en el espacio de la memoria principal (RAM) para 4 direcciones base de puerto paralelo de impresora, estos se almacenan como 4 bytes empezando con la dirección de memoria 408h. Durante el arranque, el BIOS comprueba si hay puertos paralelos en las direcciones base 3BCh, 378h, y 278h, en ese orden, y almacena la dirección base de cualesquiera que hayan sido encontrados en posiciones consecutivas de la tabla. Las posiciones que no son usadas pueden estar en 0, o como algunos BIOS lo hacen, le colocan la dirección del primer puerto encontrado.

Algunos programas pueden ignorar esta tabla, pero esta es usada por lo menos por el propio BIOS (mediante la INT 17 de E/S de impresora) y por el MS-DOS.

El BIOS detecta estos puertos escribiendo AAh al registro de datos (en la dirección de E/S Base + 0), y luego si en el registro de datos se lee AAh. Significa que hay un puerto.

Normalmente la asignación de direcciones es como sigue:

Dirección Nombre Ubicación

3BCh LPT1 Adaptador de impresión primario 378h LPT2 Adaptador de impresión secundario

Las referencias a cada registro del puerto se realizan de la siguiente forma:

o Base (datos) = base+0 o Estado = base+1 o Control = base+2

(6)

Por ejemplo, si encontramos que la dirección base es 378h, entonces las direcciones del registro de datos, estado y control serán:

o Base (datos) = 378h o Estado = 379h o Control = 37Ah

Cada una de ellas permite accesar a los siguientes bits (descritos en la tabla general):

o Base (datos) = D0, D1, D2, D3, D4, D5, D6, D7 o Estado = S3, S4, S5, S6, S7

o Control = C0, C1, C2, C3

PROGRAMACION Y ACCESO A PUERTOS

Detección de la dirección base del puerto paralelo

Primeramente se debe tener algún procedimiento para poder determinar cuál es la dirección base del puerto.

Como se dijo anteriormente, el puerto paralelo tiene su dirección base en dos direcciones consecutivas de memoria. Entonces se debe leer el contenido de estas direcciones de memoria, a fin de determinar si existe un puerto y cuál es su dirección.

MS-DOS

Bajo MS-DOS se puede usar el comando externo debug.exe del siguiente modo: Ejecutar el comando: debug.exe, luego aparece el símbolo –

(7)

Dependiendo del equipo aparece un volcado de la memoria de la siguiente forma: (los datos pueden variar)

0040:0000 ______________________78 03 00 00 00 00 00 00

La dirección del puerto se encuentra en forma invertida (78 03), entonces la dirección es: 0378 en hexadecimal.

Cabe hacer notar que esta dirección puede ser diferente en otros PC. (Se escribe q y luego enter para salir de debug.exe)

En Turbo Pascal con ensamblador

Program buscar_base; uses crt;

Var base : word; Begin

asm

mov ax, 0040h {Colocar 0040h en el reg. Ax}

mov es, ax {Direccionar el segmento es con el valor de ax}

mov ax, es:[si] {Colocar en ax el contenido de la dirección de memoria [0040:0008]} mov base, ax; {Actualizar la variable base con el valor de ax}

end;

writeln (' La dirección base en decimal es : ',base); end.

(8)

En Turbo Pascal Program buscar_base; uses crt; Var base:word; Begin base:=memW[$0040:$0008];

writeln('La dirección base en decimal es : ',base); end.

Envio y lectura de datos del puerto

Envío de datos al puerto ( OUT )

El puerto paralelo puede ser usado como una comunicación directa con el PC, de este modo es posible desarrollar aplicaciones en tiempo-real que necesiten un rápido tiempo de respuesta.

El acceso se realiza escribiendo un byte (8 bits) en registro determinado. Este byte debe referirse a cada uno de los bits del registro. Esto significa que se debe definir el byte a escribir en sistema binario.

Por ejemplo si queremos escribir en el registro de datos el bit D0 y el bit D2 entonces el byte es:

0 0 0 0 0 1 0 1 = 5 En decimal

D7 D6 D5 D4 D3 D2 D1 D0 Registro de datos

Luego, se debe escribir 5 en el registro de datos (dirección base): Notas:

dir_base y dir_estado es de tipo word, y dato es de tipo byte.

En Turbo Pascal

(9)

En C

Outportb(dir_base, 5);

En ensamblador

mov dx, dir_base {Direccionar en dx la dirección base} mov al, 5 {Colocar en ² al ² el número 5}

out dx, al {Enviar al puerto}

Lectura de datos del puerto ( IN )

La lectura de datos se realiza accesando un byte del registro determinado. Al hacer la lectura se debe convertir el byte a binario para determinar él o los bits que interesen. Note que sólo se debe leer el registro de estado, o sea, la dirección base+1.

En Turbo Pascal

Var dato: byte; dato:=Port[dir_estado];

En C

unsigned int dato; dato=inportb(dir_estado);

En ensamblador

mov dx, dir_estado {Direccionar dx con el registro de estado del puerto} in al, dx {Leer del puerto. En el registro ² al ² está el dato leído}

Por ejemplo, si el dato leído es igual a 96, significa que los bits S5 y S6 están activos(tienen un nivel alto, un 1).

0 1 1 0 0 0 0 0 = 96 En decimal

(10)

Enmascaramiento

Tanto en el envío como recepción de datos binarios, se realizan operaciones a nivel de bits. Estas operaciones permiten aislar uno más bits. Este proceso se denomina

enmascaramiento.

Por ejemplo, para saber si determinado bit que se ha leído del registro de estado está en un nivel alto (1 lógico) se puede hacer la operación "Y" lógica (AND) de la lectura con un valor que resulta de elevar 2 a la posición que ocupa ese bit en el byte, y luego realizar la comparación.

Si el bit que se desea conocer es el bit 5, entonces la operación es: Masc:=2^5=32

(Byte_leido AND masc)

En el caso que el bit 5 esté en un nivel alto: Byte_leido 0 1 1 0 0 0 0 0 96 S7 S6 S5 S4 S3 S2 S1 S0 Posición AND 0 0 1 0 0 0 0 0 Máscara = 32 Resulta 0 0 1 0 0 0 0 0 32= máscara

En el caso que el bit 5 no esté en un nivel alto: Byte_leido 0 1 0 1 0 0 0 0 80 S7 S6 S5 S4 S3 S2 S1 S0 Posición AND 0 0 1 0 0 0 0 0 Máscara = 32 Resulta

(11)

0 0 0 0 0 0 0 0 0 <> máscara

Si el bit 5 es 1, entonces el resultado es 16, o igual a masc. Haciendo la comparación:

Si (Byte_leido AND masc) = masc entonces Inicio

/* las acciones a realizar cuando el 4to bit es 1 */ Fin

Si el bit 5 es 0, entonces el resultado siempre es 0, lo cual es diferente a masc.

En caso que se desee realizar el enmascaramiento de más de un bit, se realiza la suma los valores.

Ejemplo; Máscara para el bit 5 y el 7 Masc = 2^5 + 2^7 =160

• 8 pins de salida, se accesan via el DATA Port

• 5 pins de entrada (una negada ), se accesan via el STATUS Port

• 4 pins de salida (tres negadas) se accean via el CONTROL Port

• Las 8 sobrantes son tierras en común.

Figure

Actualización...

Referencias

Actualización...

Related subjects :