Anda di halaman 1dari 11

DESCRIPCION Y USO DEL PUERTO PARALELO

Descripcin general

Inicialmente se coloc al puerto paralelo en la tarjeta del "Adaptador de impresora de


IBM", o tambin con la tarjeta del "monitor monocromtico y adaptador de impresora de
IBM".
Con la llegada de clones al mercado, se crea un controlador de mltiples 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 comnmente incluido en la placa
madre de la computadora (MotherBoard). No obstante, la conexin 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.
Descripcin del conector DB25 del PC y el conector DB25 del Centronic

El puerto paralelo est formado por 17 lneas de seales y 8 lneas de tierra.Las lneas de
seales estn formadas por tres grupos:
4
5

Lneas de control
Lneas de estado

Lneas de datos

En el diseo original las lneas de control son usadas para la interface, control e
intercambio de mensajes desde el PC a la impresora.
Las lneas de estado son usadas para intercambio de mensajes, indicadores de estado
desde la impresora al PC (falta papel, impresora ocupada, error en la impresora).

Las lneas de datos suministran los datos de impresin del PC hacia la impresora y
solamente en esa direccin. Las nuevas implementaciones del puerto permiten una
comunicacin bidireccional mediante estas lneas.
Cada una de estas lneas (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 direccin. El puerto paralelo
tiene tres registros:

Registro de datos
Registro de estado
Registro de control

En la tabla que se muestra a continuacin se muestra la relacin que existe entre las lneas
fsicas del conector del PC y los registros.
Tabla general del puerto paralelo
DB25

Seal

Registro

Tipo

Activo

Sentido

Control 0

C0-

Salida

Bajo

Invertido

Dato 0

D0

Salida

Alto

directo

Dato 1

D1

Salida

Alto

directo

Dato 2

D2

Salida

Alto

directo

Dato 3

D3

Salida

Alto

directo

Dato 4

D4

Salida

Alto

directo

Dato 5

D5

Salida

Alto

directo

Dato 6

D6

Salida

Alto

directo

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

18-25

Tierra

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 esquemticamente, se describe a continuacin. Ntese la conexin al bus
ISA en la parte izquierda y los registros en la parte derecha.

Descripcin de los componentes


El puerto paralelo originalmente estaba formado por los siguientes
componentes:
o
o
o

1 Latch para manejar el registro de datos


1 Buffer para controlar la retroalimentacin del registro de datos
1 Buffer para manejar el registro de estado

o
o
o
o

1 Latch para manejar el registro de control


1 Buffer para controlar la retroalimentacin del registro de control
1 Multiplexor para direccionar los puertos en el bus ISA
1 Driver bidireccional para conectar con el bus ISA

Funcionamiento
Explicacin del funcionamiento mediante el BIOS y el MS-DOS

IBM especific direcciones base para el puerto paralelo estndar (dentro del espacio de
direccionamiento de Entrada/Salida del 80x86). El adaptador de impresora podra usar la
direccin base 3BCh, o ms 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 direccin 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 direccin 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 direccin 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 direccin de E/S
Base + 0), y luego si en el registro de datos se lee AAh. Significa que hay un puerto.
Normalmente la asignacin de direcciones es como sigue:
Direccin

Nombre

Ubicacin

3BCh

LPT1

Adaptador de impresin primario

378h

LPT2

Adaptador de impresin 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

Por ejemplo, si encontramos que la direccin base es 378h, entonces


las direcciones del registro de datos, estado y control sern:
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


Deteccin de la direccin base del puerto paralelo
Primeramente se debe tener algn procedimiento para poder determinar cul es la direccin
base del puerto.
Como se dijo anteriormente, el puerto paralelo tiene su direccin 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 cul es su direccin.

MS-DOS
Bajo MS-DOS se puede usar el comando externo debug.exe del siguiente modo:
Ejecutar el comando: debug.exe, luego aparece el smbolo
Escribir despus de este signo d 40:0008

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 direccin del puerto se encuentra en forma invertida (78 03), entonces la direccin es:
0378 en hexadecimal.
Cabe hacer notar que esta direccin 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 direccin de memoria [0040:0008]}
mov base, ax; {Actualizar la variable base con el valor de ax}
end;
writeln (' La direccin base en decimal es : ',base);
end.

En Turbo Pascal
Program buscar_base;
uses crt;
Var base:word;
Begin
base:=memW[$0040:$0008];
writeln('La direccin base en decimal es : ',base);
end.

Envio y lectura de datos del puerto


Envo de datos al puerto ( OUT )
El puerto paralelo puede ser usado como una comunicacin directa con el PC, de este modo es posible
desarrollar aplicaciones en tiempo-real que necesiten un rpido 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:

= 5 En decimal

D7

D6

D5

D4

D3

D2

D1

D0

Registro de datos

Luego, se debe escribir 5 en el registro de datos (direccin base):


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

En Turbo Pascal
Port[dir_base]:=5;

En C
Outportb(dir_base, 5);
En ensamblador
mov dx, dir_base {Direccionar en dx la direccin base}
mov al, 5 {Colocar en al el nmero 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 slo se debe leer el registro de estado, o sea, la direccin 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 ledo}

Por ejemplo, si el dato ledo es igual a 96, significa que los bits S5 y S6 estn activos(tienen
un nivel alto, un 1).

= 96 En decimal

S7

S6

S5

S4

S3

S2

S1

S0

Registro de estado

Enmascaramiento
Tanto en el envo como recepcin de datos binarios, se realizan operaciones a nivel de bits.
Estas operaciones permiten aislar uno ms bits. Este proceso se denomina
enmascaramiento.
Por ejemplo, para saber si determinado bit que se ha ledo del registro de estado est en un
nivel alto (1 lgico) se puede hacer la operacin "Y" lgica (AND) de la lectura con un
valor que resulta de elevar 2 a la posicin que ocupa ese bit en el byte, y luego realizar la
comparacin.
Si el bit que se desea conocer es el bit 5, entonces la operacin es:
Masc:=2^5=32
(Byte_leido AND masc)
En el caso que el bit 5 est en un nivel alto:
Byte_leido

96

S7

S6

S5

S4

S3

S2

S1

S0

Posicin

Mscara = 32

32= mscara

AND

0
Resulta

En el caso que el bit 5 no est en un nivel alto:


Byte_leido

80

S7

S6

S5

S4

S3

S2

S1

S0

Posicin

Mscara = 32

AND

0
Resulta

0 <> mscara

Si el bit 5 es 1, entonces el resultado es 16, o igual a masc.


Haciendo la comparacin:
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 ms de un bit, se realiza la suma los
valores.
Ejemplo; Mscara 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 comn.

Conector tipo DB 25 Hembra

Anda mungkin juga menyukai