Descripcin general
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.
o
o
o
o
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
378h
LPT2
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
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.
= 5 En decimal
D7
D6
D5
D4
D3
D2
D1
D0
Registro de datos
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}
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
80
S7
S6
S5
S4
S3
S2
S1
S0
Posicin
Mscara = 32
AND
0
Resulta
0 <> mscara