¿Cómo programar el
Puerto Paralelo de la PC?
Salvador Macías Hernández
Última actualización
Monday, 24 de September de 2007
Pines del Puerto Paralelo
El adaptador del puerto paralelo
de la PC es un conector DB25 hembra, como el que se muestra en la
imágen de la izquierda. Generalmente está en la parte posterior de la
PC. Tiene una forma como de trapezoide, lo que hace que sea imposible
conectarlo incorrectamente, sin la ayuda de un martillo. La asignación
de Pines es como se muestra en la imagen que se muestra a continuación.
Hay que recordar que la mayoría de las aplicaciones que se le da a este
puerto paralelo es para comunicar la PC con una impresora.
Pin |
Descripción |
Pin |
Descripción |
1 |
Strobe |
11 |
Busy |
2 |
Data 0 |
12 |
Paper Empty |
3 |
Data 1 |
13 |
Select |
4 |
Data 2 |
14 |
Auto Feed |
5 |
Data 3 |
15 |
Error |
6 |
Data 4 |
16 |
Initialize Printer |
7 |
Data 5 |
17 |
Select Input |
8 |
Data 6 |
18 al 25 |
|
9 |
Data 7 |
Ground |
10 |
ACK |
|
Puertos del Adaptador de la Impresora
Para que el microprocesador de la computadora pueda comunicarse
satisfactoriamente con la impresora, hace uso de tres registros y/o
puertos. Con los cuales podemos acceder a 8 bits bidireccionales
(dependiendo de la tecnología del puerto paralelo de la
computadora), 5 bits de entrada, y 4bits de salida.
*
Si Direction =1 => Recibe Dato
* Si Direction =0 => Saca Dato
Programación
El puerto paralelo se puede programar en varias
plataformas como: Basic, C++, C&, Visual Basic, etc. Pero
nosotros en este pequeño tutorial, vamos a programarlo utilizando
lenguaje ensamblador. Que es el lenguaje propio de las máquinas. Puesto
que vamos directamente a los nemónicos, lo que se conoce como lenguaje
de bajo nivel. Con los lenguajes de bajo nivel tenemos muchisimas
menos restricciones, de lo que tendríamos con un lenguaje de alto
nivel. Claro que como dice la segunda ley del control: "Nada es
gratis en esta vida", y así como obtenemos muchas más posibilidades
utilizando un lenguaje de bajo nivel, también se hace más complicada la
programación.
Antes de programar, vamos a hablar un poco sobre los sistemas
operativos. Desde hace ya varias décadas, Microsoft ha tenido el
monopolio de los sistemas operativos para PC. Los primeros sistemas
operativos de microsoft eran en base texto (MS DOS), después el mismo
Microsoft que vendía el MS DOS, creo un programa que era como un
sistemita operativo en ambiente gráfico, que para poder funcionar
utilizaba el MS DOS. A este programa se le llamó Windows. En lo
personal, mi primer sistema operativo fue el MS DOS 3.3 y mi
primer Windows
fue la versión 2.0. En julio de 1993, Microsoft lanzó su primer
Windows para trabajo en grupo. El Windows NT 3.1, el primer intento de
llevar la cultura del trabajo en grupo a las pequeñas empresas. Y cabe
mencionar que ese windows no tuvo mucho auge, por que en ese mismo año
se lanzó el Windows 3.11 para trabajo en grupo. El cual tenía más
funciones de red. El primer Windows que fue independiente del MS DOS
fue el Windows 95. Este windows rompió de forma tajante la forma de
trabajar en las computadoras. Puesto que todos los programas de la
competencia estaban hechos para el MS DOS y Microsoft no liberó su
código para que los demás desarrolladores de software pudieran adaptar
a la perfección sus programas. Además en ese entonces, todas las
computadoras de marca, venían con Windows y Office integrado. Y no
había de otra opción. Hasta un año después que Lotus sacó su Smart
Suite. Pero para ese entonces la gente se había acostumbrado al Office.
En 1996 se empezó a popularizar el Windows NT. Que ya era un sistema
operativo totalmente diseñado para usarse en redes corporativas.
En donde la seguridad de la información se volvió crítica. Y por tanto
se enfocó la atención en controlar el acceso a cada puerto de la
máquina. En ese entonces, teníamos dos tipos de sistemas operativos,
los diseañados para grandes empresas con redes corporativas (Sistemas
Operativos NT) y el sistema operativo diseñado para los usuarios
domésticos o de pequeñas empresas, donde no existía riesgo de fuga de
información. Por tanto no se cuidaba de la seguridad de los puertos. Y
así tuvimos dos tipos de sistemas operativos en las máquinas de los
usuarios hasta que salió Windows XP puesto que para este entonces, el
internet ya es cosa de todos los días y está accesible en casi todos
los hogares. Por tanto, tenemos dos tipos de sistemas operativos, los
de Windows 95 y los NT.
Sistemas Operativos Win95 |
Sistemas Operativos NT |
Windows 95 |
Windows NT Workstation 3.5 |
Windows 98 |
Windows NT Workstation 4.0 |
Windows 98 Second Edition |
Windows 2000 Professional |
Windows Millennium Edition
(Windows Me) |
Windows XP |
|
Windows XP Professional |
|
Windows XP Home Edition |
|
Windows XP 64-bit Edition |
|
Windows XP Media Center Edition |
Bueno y ahora que ya sabemos que existen dos clases de Sitemas
Operativos vamos a decirles que para que puedan utilizar el puerto
paralelo a su antojo, y por los métodos que vamos a describir aquí,
necesitan tener un sistema operativo tipo Win95, o bien van a tener que
bajar el driver UserPort,
para poder acceder a los puertos.
Lo primero que vamos a hacer es, entrar a Debug, para ello hay que
entrar al MS DOS o simbolo del sistema: Inicio \ Programas \ Accesorios
\ MSDOS
Y aparecerá una ventana
con el prompt del DOS:
Ahora hay que ejecutar
Debug. El prompt de debug es un guion, lo que quiere decir que
necesitamos darle un comando a ejecutar. El comando para leer un puerto
es "i" y a continuación se escribe la dirección del puerto. Por
ejemplo: para saber el valor del puerto paralelo hay que escribir "i
378" y a continuación, Debug nos devolverá el valor del puerto. El
comando para sacar un dato por un puerto es el comado "o" y
requiere de la dirección del puerto y del valor a mandar. Por ejemplo:
para poner en el puerto paralelo un 0Ah habría que escribir "o 378 0A".
Para salir de debug hay que poner el comando "q" de Quit. Y para
regresar a windows hay que teclear en el prompt del DOS "Exit".
RESULTADO OBTENIDO
Data
7 |
Data
6 |
Data
5 |
Data
4 |
Data
3 |
Data
2 |
Data
1 |
Data
0 |
Pin
9 |
Pin
8 |
Pin
7 |
Pin
6 |
Pin
5 |
Pin
4 |
Pin
3 |
Pin
2 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
Entonces para el ejemplo de la
pantalla anterior, la primera instrucción (i 378) fue leer el puerto
paralelo. Y el valor que tenía en ese entonces fue FF (11111111),
enseguida se le instruyó para que mandase el valor de 0A al mismo
puerto (o 378 0A), y finalmente verificamos que sí lo haya mandado,
leyendo el valor del puerto (i 378) y ahora el valor que tienen es el
de 0A. Para salir al MS DOS le pusimos una Q y para regresar a windows
le pusimos Exit. Y entonces si medimos el voltaje de los pines del 2 al
9 del puerto paralelo vamos a ver que tendrémos un byte con el valor 0A
así como se muestra en la tabla anterior.
Primer Experimento
Vamos a conectar unos LED's a la salida del puerto paralelo, para
aprender de una manera más sencilla, las ventajas del puerto paralelo.
Lo primero que vamos a hacer, es comprar o elaborar una extensión de
dicho puerto. Para así poder programar y observar los cambios al mismo
tiempo. Y también vamos a comprar un conector
DB25 Macho, con
agujas para soldar y sin cubierta. Así como se muestra en la figura.
Van a cortar 18 cablecitos de aproximadamente 10 cm de largo. Se va a
soldar del pin 18 al 25 entre sí y van a sacar un cablecito, a este
cablecito, deben de pintarlo de color negro. Puesto que nos va a
indicar que es la tierra de la interfase. Después van a soldar los 17
cablecitos restantes. Verifiquen que ningún cablecito está haciendo
contacto con otro. Verifiquen que no exista ningún corto circuito. Y
por último hay que recubrir la zona de soldadura con silicón. Para que
en un futuro, los alambres no se muevan y se vayan a quebrar.
Luego
hay que conectarle un BUFFER para no exigirle mucha corriente a la
computadora, recomiendo que se use el 74LS245. Tengan mucho cuidado en
como conecectarlo y en especificar bien la dirección (de A B; o de A B). Y a ese mismo vamos a conectarle las
entradas de un display de siete segmentos. Recuerda conectarle una
bateria de 5 volts o bien tres pilas AA de 1.5v en serie (4.5 en total)
para alimentar el integrado. Procura no usar un eliminador de baterías,
puesto que tendrá ruido y algunos dan más voltaje del que deberían (sin
carga), y no vayas a quemar tu circuito, o peor aún, tu puerto paralelo.
Si
conectas el display de siete segmentos de la siguente manera:
Buffer |
A8 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
Display 7
Seg. |
a |
b |
c |
d |
e |
f |
g |
p |
Podrías
desplegar tus iniciales en el display como en el ejemplo siguiente:
Letra |
a |
b |
c |
d |
e |
f |
g |
p |
Hex |
Comando |
S |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
B6 |
Out 378 B6 |
M |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
CC |
Out 378 CC |
M |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
E4 |
Out 378 E4 |
H |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
6E |
Out 378 6E |
El
resultado esperado sería el siguiente:
Bibliografía
|