Professional Documents
Culture Documents
Interfaces
Interfaces para
para el
el Puerto
Puerto
Paralelo
Paralelo de
de la
la PC,
PC, en
en Modo
Modo
Bidireccional
M. en C. Juan Carlos Herrera Lozada, El motivo central de este artculo es discutir el modo
de operacin bidireccional. Para el anlisis mostrado se
M. en C. Juan Carlos Gonzlez Robles,
Ing. Agustn Cruz Contreras;
Profesores del CIDETEC IPN consideran dos vertientes: la programacin del puerto
bajo el modo MS DOS (Micrososft Disk Operating System
Sistema Operativo en Disco), y como segunda derivacin, la
ste es el primero de una serie de artculos enfoca-
programacin en Modo Windows. En ambos casos se
E dos al uso del puerto paralelo de la PC, para
propsitos especiales y con tendencias actuales.
revisan interfaces unidireccionales y bidireccionales.
En esta primera entrega se explica de manera concreta,
cmo manejar el puerto de impresin de la PC en modo
bidireccional, con la intencin de interactuar con un PROGRAMACIN DEL PUERTO PARALELO EN MODO
hardware externo. Se aportan soluciones mnimas en MS - DOS
software bajo Windows en todas sus versiones, inclu-
yendo Windows XP. La metodologa expuesta para
configurar el puerto se hace extensiva para aplicaciones El modo MS- DOS es vlido en Windows 98 y versio-
diversas con requerimientos similares. nes anteriores (95, 3.1, etc.). En esta condicin es posible
escribir directamente a los registros del puerto.
XV 1 31 polibits 9
Interfaces para el Puerto Paralelo de la PC, en Modo Bidireccional
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
void main(void)
{
int entrada;
int leds[9] = {0,1,2,4,8,16,32,64,128}; /*Datos de la secuencia, en
decimal*/
int i;
while(1)
{
entrada = inportb(0x379);
if (((entrada)&0x08)==0) /*Si el bit S3 est en 0, el botn est
Figura 1.b. Conexiones Internas del Conector presionado*/
DB25.
{
10 polibits 2005
Interfaces para el Puerto Paralelo de la PC, en Modo Bidireccional
IRQ Enable
tro de un estado natu-
Reserved
Reserved
Direction
{
Select In
Autofeed
_______
_______
ral bajo a un estado alto.
Strobe
outport(0x378,leds[i]);
_____
INIT
Cuando C5 est a 0 l-
/*Recorre uno a uno los bits de izquierda
a derecha*/
sleep(1); gico, las 8 lneas del
}
puerto de datos son sa-
lidas y cuando C5 est
}
a 1 lgico, se compor-
else
outportb(0x378,0x00);
/*Si el botn no es presionado, los LED tan como entradas. La
se apagan*/
Figura 3, muestra la
disposicin fsica de los
C7
C6
C5
C4
C3
C2
C1
C0
}
XV 1 31 polibits 11
Interfaces para el Puerto Paralelo de la PC, en Modo Bidireccional
clrscr();
/* muestra indica el nmero de lecturas que
deseas realizar*/
for (muestra=0; muestra<50; muestra++)
{
/* Comienza la conversin poniendo en bajo
write y manteniendo C5 en alto para la
bidireccionalidad.
Posteriormente pondremos en alto write para
deshabilitarlo; as se genera el pulso negativo
para accionar write*/
Figura 4. Diagrama del convertidor conectado al puerto paralelo. outportb(pcontrol, 0x20);
delay(10000);
outportb(pcontrol, 0x24);
Al principio del programa listado se solicita el nme- De igual forma que en el modo unidireccional, este
ro de muestras a convertir (cuntas veces se repetir el cdigo funciona correctamente slo en modo MS-DOS.
programa). Es una manera sencilla de terminar el pro-
grama despus de n lecturas. Tambin es posible
asignar una tecla para salir. Se recomiendan pocas PROGRAMACIN DEL PUERTO PARALELO EN
muestras cuando el retardo es de un valor alto. MODO WINDOWS
/* ADC0804 por el puerto paralelo, {jcrls, acruz, jgrobles}@ipn.mx
Windows NT, 2000 y XP no permiten manejar el
8-bits utilizando modo bidireccional (ECP).*/
#include <stdio.h> puerto paralelo en modo MS-DOS, como suceda con las
#include <dos.h> versiones anteriores de este mismo sistema operativo.
Para solucionar este inconveniente, y dar acceso al puer-
to en cualquier versin de Windows (en modo Windo-
main()
12 polibits 2005
Interfaces para el Puerto Paralelo de la PC, en Modo Bidireccional
XV 1 31 polibits 13
Interfaces para el Puerto Paralelo de la PC, en Modo Bidireccional
Do While Timer1.Enabled
En el editor de la forma (View Code) se copia el cdigo DoEvents
aplicacin.
End Sub
14 polibits 2005
Interfaces para el Puerto Paralelo de la PC, en Modo Bidireccional
si se desea que el registro de datos sea slo de salida. Private Sub Command2_Click() Botn Restaurar Puerto
PortOut &H37A, Temporal Regresa a la configuracin original pto. de
Retomando la interfaz para monitorear el ADC0804, control
PortOut &H378, 0 Limpia nuevamente el puerto de datos; detiene
algunos autores desestiman utilizar todas las seales
del ADC. Con una frecuencia sustentable, mucho menor
programa
End Sub
que los 8KHz naturales del dispositivo, es posible obte-
ner circuitos ms simples como el denominado Free Sub Comienza()
PortOut &H37A, &H20 Configura C5, bidireccional y genera flanco
Running que propone utilizar un inversor hacia RD de la
seal WR, obligando a que RD siempre sea el comple-
negativo
Espera 0.5 Rutina de espera (1/2 segundo)
mento de WR y viceversa (ver Figura 8). El inversor se PortOut &H37A, &H24 Mantiene bidireccionalidad y genera flanco
puede implementar dentro de cdigo, y dado que la positivo
frecuencia de trabajo para reportar lecturas se conside-
Espera 0.5
DatoPuerto = PortIn(&H378) Lee puerto de datos y escribe equivalen-
ra lenta, es posible omitir la espera de la respuesta de la te en Volts
seal INTR. Se recomienda reestablecer el puerto de Text1.Text = DatoPuerto * 0.0196 & Volts 255 binario = 5 Volts
control a su estado original, antes de salir de la aplica- analgicos
cin.
End Sub
XV 1 31 polibits 15
Interfaces para el Puerto Paralelo de la PC, en Modo Bidireccional
Figura 9a. Pantalla en modo de diseo para la conexin Free Running del
ADC0804.
Figura 9b. Aplicacin bajo Windows
XP.
Se present una metodologa sencilla para crear in- [1] Hans-Peter Messmer. The indispensable PC hardware
terfaces para el puerto paralelo de la PC, utilizando book. Ed. Addison-Wesley, 1999.
Lenguaje C para modo MS-DOS y Visual Basic 6.0 para
modo Windows. Las soluciones aportadas son adapta- [2] Dhananjay V. Gadre.Programming the Parallel Port:
bles sin cambios drsticos en el cdigo a cualquier apli- Interfacing the PC for Data Acquisition & Process Con-
cacin similar o ms sofisticada, que requiera intercam- trol. Ed. CMP Books, 1999.
bio de datos en una o dos direcciones.
[3] David I. Schneider. An Introduction to Programming
Todos los ejercicios mostrados se implementaron with Visual Basic 6.0. Ed. Prentice Hall, 2000.
fsicamente en dos PC con distinto sistema operativo.
Las aplicaciones creadas en Lenguaje C se ejecutaron en [4] Francisco J. Ceballos. Visual Basic 6, Curso de Progra-
modo MS-DOS bajo Windows 98 y las de Visual Basic macin. Ed. AlfaOmega-Rama, 2002.
bajo Windows XP. En ambos casos, para la bidireccio-
nalidad de los datos, se configur el modo ECP en el [5] http://www.geekhideout.com.
SETUP.
[6] Datasheet, National Semiconductor.
Cabe mencionar que es posible encontrar en Internet http:// www.national.com/pf/AD/ADC0804.html.
bibliotecas de enlace dinmico para diferentes lengua-
jes, como se puede advertir en el mismo sitio de donde se [7] http://www.doc.ic.ac.uk/~ih/doc/par/ : Interfacing to
descarg io.dll (www.geekhideout.com) y en otros como the IBM-PC Parallel Printer Port.
www.zealsoftstudio.com, por mencionar algunos.
[8] http://www.lvr.com/parport. htm : Parallel Port Cen-
Se present el caso particular de un ADC0804 en un tral
esquema bidireccional. La solucin disminuye la canti-
dad de hardware y aumenta la velocidad de la respues- [9] http://www.beyondlogic.org/ecp/ecp.htm
ta, tomando en consideracin que para plataformas
superiores a Windows 98 existen dos modos de veloci- [10] http://www.epanorama.net/links/pc_inter face.html
dad para acceso a puertos: Normal y Fast.
[11] http://www.logix4u.net/para llelport1.htm
En un prximo artculo se detallar cmo utilizar el
puerto paralelo como una alternativa al extinto bus ISA [12] http://www.zealsoftstudio. com
de la PC.
16 polibits 2005