Existen
tres puertos de E/S del ordenador, mediante los cuales controlamos el puerto
paralelo.
Estos puertos tienen ocho bits (un byte) de longitud, y cada uno de sus bits,
representa un pin determinado del puerto.
No
controlamos 25, si no 17. Los pins que van desde el pin 18 al pin 25 (ambos
inclusive), son para masa, y sirven para conectar las descargas de los
circuitos.
El
primero de los tres puertos, corresponde al puerto de datos, y es de solo
escritura, o sea que solo se puede variar mediante la programacion, pero ningun
dispositivo lo podra hacer electronicamente.
El segundo puerto, representara el puerto de estado. Este puerto es de solo
entrada, o sea, que en este caso solo un dispositivo electronico lo puede
variar, pero mediante software es imposible. Este puerto es el que utiliza la
impresora para darnos informacion interesante sobre su estado.
El tercer y ultimo registro es el registro de control, y este se puede modificar
tanto por el dispositivo electronico conectado, como por medio de software.
Registro
de datos.
Para mandar una señal por un pin, lo que tenemos que hacer es activar su bit
correspondiente (o lo que es lo mismo, poner dicho bit a uno). Con esto se
consigue que el ordenador mande una señal de 5 voltios por el pin deseado. Pero
debe quedar claro que el ordenador estara mandando señales, hasta que pongamos
ese bit a 0. Por ello se entiende que si queremos que no se envien mas señales
deberemos volver a ponerlo a 0.
Para activar los bits de este puerto, podemos hacerlo enviando un numero al
puerto. Para ello debemos tener claro que el numero que enviemos, codificado en
binario, debe contener los bits que queremos activar, puestos a uno, y los que
no, a cero. Un problema que se nos puede presentar es si queremos activar un bit
determinado, pero sin desactivar los que ya lo estan. Esto se consigue
utilizando una estructura de bits, de forma que podamos manipular por separado
cada uno de los bits que forman el byte que queremos enviar. Otra forma es
aplicando la logica de bits.
A
continuación se muestra un breve esquema de este registro con su debida
distribución de pines y datos, además de la dirección de dicho registro.
Puerto
278, 378, 3BC printer [D]ata output
-7-6-5-4-3-2-1-0-
ports 278, 378, 3BC
-- data bit 0, hardware pin 2
-- data bit 1, hardware pin 3
-- data bit 2, hardware pin 4
-- data bit 3, hardware pin 5
-- data bit 4, hardware pin 6
-- data bit 5, hardware pin 7
-- data
bit 6, hardware pin 8
-- data bit 7, hardware
pin 9
Como se puede observar en este registro se utilizan los ocho bits.
Registro
de estado.
Ademas
de mandar datos, tambien podemos recibirlos por el puerto. En este caso se
utiliza otro I/O port. En este caso es el segundo I/O port, cuya direccion es la
del primer puerto, sumandole uno. Este puerto es el que recibe el nombre de
"puerto de estado".
Originariamente, este puerto es el que utiliza la impresora para darnos
informacion interesante acerca de su estado, si tiene o no papel, si esta
ocupada, etc, etc.
Este
registro es de solo entrada, por lo que no podremos modificarlo mecdiante
software, siendo la unica forma posible de modificacion, la que se realize por
medio de un dispositivo conectado al puerto paralelo.
Al igual que el anterior I/O port (el de datos), este tiene una longitud de ocho
bits, y cada uno representa tambien un pin determinado. En este caso se
controlan los pins 11, 10, 12, 13, y 15. Pero en este caso solo son utiles los
bit que van desde el 3 al 7, siendo el bit 2, el utilizado para IRQ, y los bits
1 y 2 reservados.
Puerto
279, 379, 3BD printer [S]tatus register
-7-6-5-4-3-2-1-0- ports 279, 379, 3BD
-- 1 = time-out
----- unused
-- 1 = error, pin 15
-- 1 = on-line, pin 13
-- 1 = out of paper, pin 12
-- 0 =
Acknowledge, pin 10
-- 0 = busy, pin 11
Registro de control.
Ademas
de los puertos ya explicados, existe otro, que es el denominado puerto de
control. Es el unico de los dos que es bidirecional. Esto quiere decir, que se
pueden modificar sus bits tanto por software, como por un dispositivo conectado
al puerto paralelo. En casi toda la documentación que se ha encontrado se
refiere al puerto de control como bidirecional, pero en la creación de la ap,¡licación
no he usado este registro como tal.
Este puerto controla 4 pins, medianto sus bits 3, 2, 1 y 0. El resto de los
bits, no controlan ningun pin. La tabla de este puerto es la siguiente:
Puerto 27A,
37A, 3BE printer [C]ontrol register
-7-6-5-4-3-2-1-0- ports 27A, 37A, 3BE
-- 1 = output data to printer, (pin 1)
-- 1 = auto line feed, (pin 14)
-- 0 = initialize printer, (pin 16)
-- 1 = printer reads output, (pin 17)
-------- unused
A continuación se adjunta un esquema con la dostribución de los pines en un conector hemba. Además se puede apreciar cuales trabaja en lógica negativa y cuales no.
Figura 2. Diagrama de Conexionado del
Puerto Paralelo DB-25Fdel PC.
Para terminar con esta introducción teórica vamos a resumir en una tabla cada uno de los pines:
Nº DE PIN NOMBRE DE PIN DESCRIPCION 1 STROBE SINCRONIA 2 DATA 0 BIT DE DATOS 0 3 DATA 1 BIT DE DATOS 1 4 DATA 2 BIT DE DATOS 2 5 DATA 3 BIT DE DATOS 3 6 DATA 4 BIT DE DATOS 4 7 DATA 5 BIT DE DATOS 5 8 DATA 6 BIT DE DATOS 6 9 DATA 7 BIT DE DATOS 7 10 ACK RECONOCIMIENTO DE CARACTER ACEPTADO 11 BUSY OCUPADO 12 PE SIN PAPEL 13 SLCT IMPRESORA ONLINE 14 AUTOFD AVANCE DE PAPEL AUTOMATICO 15 ERROR ERROR 16 INIT RESET DE IMPRESORA 17 SLCT IN SELEC. IMPRESORA 18 MASA MASA 1 19 MASA MASA 2 20 MASA MASA 3 21 MASA MASA 4 22 MASA MASA 5 23 MASA MASA 6 24 MASA MASA 7 25 MASA MASA 8