Sie sind auf Seite 1von 26

E

l ciudadano industrializado, “muy cambiante en en nuestros días, no surge como consecuencia de la


este último tiempo”, se ha visto en la necesidad tendencia o afición de reproducir a imagen y seme-
de asumir, en escasos 30 años, el significado de janza a los seres vivientes, sino de la necesidad. Fue
un buen número de nuevos conceptos marcados por la escasez la que dio origen a la agricultura, el pas-
su alto contenido tecnológico. De ellos, sin duda, el toreo, la caza, la pesca, etc. Luego, la necesidad pro-
más relevante ha sido la computadora. Ésta está intro- vocó la primera revolución industrial con el descubri-
ducida hoy en día, en su versión personal en multitud miento de la máquina de vapor de Watt y, actualmen-
de hogares, y el hombre medio va conociendo en cre- te, la necesidad ha cubierto de computadoras la faz
ciente proporción, además de su existencia, su modo de la Tierra. Inmersos en la era de la informatización,
de uso y buena parte de sus posibilidades. Pero de- la imperiosa necesidad de aumentar la productividad
jando de lado esta verdadera revolución social, exis- y mejorar la calidad de los productos, ha hecho insu-
ten otros conceptos procedentes del desarrollo tecno- ficiente la automatización industrial rígida, dominan-
lógico que han superado las barreras impuestas por te en las primeras décadas del siglo XX. En este capí-
las industrias y centros de investigación, incorporán- tulo veremos algunos conceptos de control y cómo
dose en cierta medida al lenguaje coloquial. Es llama- realizarlos mediante el uso de los puertos de una com-
tivo como entre éstas, se destaca el concepto de ro- putadora empleando ejemplos prácticos que podrá
bot. Pero el robot industrial, que se conoce y emplea utilizar para diferentes aplicaciones.

51
Introducción tomático es el servocontrol. Consiste en controlar, de
forma automática, las acciones de una máquina en fun-
Se llama mecanización a la incorporación de má- ción de unos parámetros definidos y sus variaciones.
quinas en la realización de determinadas tareas. Así, Por ejemplo, el servocontrol se puede utilizar para con-
se habla de la mecanización del campo, cuando a las trolar la velocidad de giro de un torno, de forma que
tareas agrícolas se han incorporado máquinas por to- se mantenga fija dentro de unos límites. Otro ejemplo
dos conocidas como el tractor, el arado o la cosecha- de servocontrol podría ser el del freno de algunos vehí-
dora. También se habla del mecanizado de piezas en culos en los que la fuerza transmitida a las ruedas es
un taller, cuando para su fabricación se utilizan máqui- proporcional a la fuerza aplicada por el conductor so-
nas como tornos o fresadoras, es decir, cuando se bre el pedal del freno; de esta función se encarga un
abandona la fabricación manual y se sustituye por pro- mecanismo servocontrolado que se llama servofreno.
cesos mecanizados que permiten mejores acabados y La robotización es también una automatización de
mayor rapidez en la confección de elementos. procesos sin la intervención humana, pero en este caso
Un paso más allá es la automatización, considera- se da un paso más; hay desplazamiento de cargas, ma-
da como la supresión parcial o total de la intervención nipulación de objetos y un fuerte componente de reali-
de las personas en la realización de tareas productivas, mentación. Es decir, este tipo de automatización permi-
como las tareas agrícolas, industriales o administrati- te la manipulación automática y programable de accio-
vas. Los autómatas son un caso muy conocido de con- nes y objetos. La realimentación es un proceso impres-
trol, ya tradicional, que se ha venido aplicando a aque- cindible en la robotización, ya que dota a un proceso
lla clase de máquinas en las que una fuente de energía de capacidad para captar información que, una vez
acciona un mecanismo, que permite imitar los movi- procesada por la máquina, permite modificar su com-
mientos de los seres animados. Se conocen autómatas portamiento (sus acciones). Una máquina que posea la
que fueron construidos por los griegos en el templo de capacidad de realimentación, es capaz de modificar
Dédalo; sin embargo, uno de los casos más difundidos sus respuestas en función de las variaciones de su en-
es el del Pato de Vaucanson (Grenoble 1709-París torno. Centrando el análisis en las diferencias que exis-
1782) construido en 1738, que era un pato artificial ten entre automatización y robotización, puede decirse
capaz de batir las alas, zambullirse, nadar, tragar gra- que una máquina automatizada (autómata) responde
no e incluso expeler una sustancia parecida al excre- siempre de igual manera ante sucesos de idéntica natu-
mento. Otro caso de autómatas célebres aunque más raleza. Mientras que por el contrario un robot, es decir,
próximo a nuestro tiempo es el del jugador de ajedrez una máquina robotizada, se caracteriza porque puede
de Torres Quevedo, construido en 1912, capaz de ju- manejar objetos y, lo más interesante, es un dispositivo
gar finales de partida (rey contra rey y torre). Pero de- multifuncional y reprogramable. Una máquina robotiza-
be ponerse de manifiesto que los autómatas siempre re- da es capaz de hacer trabajos totalmente diferentes y
piten el mismo modelo de actuación, no son reprogra- adaptarse al medio, ya que puede tomar decisiones en
mables y tampoco son capaces de variar sus acciones función de las condiciones exteriores.
en función del entorno o la situación. La totalidad de los procesos de mejora y control de
El control numérico es la supervisión y regulación la producción pueden sintetizarse en tres fundamenta-
de determinadas tareas mecánicas de precisión, reali- les: Procesos de mecanización, procesos de automati-
zadas por una máquina herramienta. El control de es- zación y procesos de robotización. Las principales ca-
tas tareas se realiza de forma automática para evitar, racterísticas de cada uno de estos tres grupos se expo-
de este modo, que el control se lleve a cabo por un ope- nen en el cuadro de la figura 1.
rario que, en ocasiones, podría verse sometido a cier-
tos riesgos en un proceso donde es imposible erradicar
los errores humanos. De esta forma, se ajusta al máxi- La Computadora
mo la precisión en la confección de piezas estandariza- Como Sistema de Control
das y se libera al operario de su control, mejorando la
calidad y la cantidad del trabajo realizado. Un ejem- La aparición del computador en la década de los
plo de control automático es el control de la velocidad 40, acelera vertiginosamente el desarrollo de autóma-
de giro de un taladro o la velocidad y control de avan- tas y robots. La cuestión es: ¿podemos hacer servir lal
ce de un torno o fresadora. Otro sistema de control au- PC como un autómata o un robot?. Para poder respon-

52
der es preciso verificar si se cumplen las siguientes El Puerto de la PC Introducción
condiciones:
Hace años, IBM diseñó el puerto paralelo para
¿Podemos conectarle sensores? manejar impresoras desde su gama de microcomputa-
¿Podemos conectarle actuadores? dores PC/XT/AT. Un conector estándar macho de 25
¿Podemos programarlo (y reprogramarlo) para pines aparecía en la parte trasera de la PC con el so-
que tome decisiones en función de los sensores y de lo propósito de servir de interfaz con la impresora. El
instrucciones previas para que los actuadores operen sistema operativo DOS cargado en dichas PCs sopor-
en consecuencia? ta hasta tres puertos paralelos asignados a los identifi-
cadores LPT1, LPT2 y LPT3, y cada puerto requiere tres
La respuesta a las tres cuestiones es afirmativa ya direcciones consecutivas del espacio de E/S (entrada-
que: salida) del procesador para seleccionar todas sus po-
“La PC cuenta para comunicarse con sus periféri- sibilidades.
cos, incluso en su versión más básica, con diversos dis- Desde el punto de vista del hardware, el puerto
positivos de entrada: puertos paralelo y serie, USB, consta de un conector hembra DB25 con doce salidas
joystick, micrófono... Ade-
más, es posible agregarle
tarjetas especializadas
que añaden otras muy di-
versas clases de entradas”
También cuenta con
varios dispositivos de sali-
da: puertos paralelo y se-
rie, USB, sonido, video...
Asimismo, se pueden aña-
dir tarjetas especializadas
que expanden el número y
tipo de entradas.
Por otras parte, son
muchos los lenguajes de
programación utilizables
en la PC que permiten leer
las entradas y modificar
las salidas: BASIC, LO-
GO, Pascal, C, Ensambla-
dor, etc. (figura 2). Figura 1

Figura 2

53
latch (poseen memoria-
/buffer intermedio) y
cinco entradas, con
ocho líneas de tierra.
Desde el punto de
vista del software, el
puerto paralelo consta
de tres registros (datos,
estado y control) de 8
bits cada uno, que
ocupan tres direccio-
nes de E/S (I/O) con-
secutivas de la arqui-
Figura 3 tectura x86 (figura 3).
La función normal del
puerto consiste en
transferir datos a una
impresora mediante 8
líneas de salida de da-
tos, usando las señales
restantes como control
de flujo. Sin embargo,
puede ser usado como
un puerto E/S de pro-
pósito general por
cualquier dispositivo o
aplicación que se ajus-
te a sus posibilidades
de entrada/salida.

Descripción del
Conector Físico

La conexión del
puerto paralelo al mun-
do exterior se realiza
mediante un conector
hembra DB25. Obser-
vando el conector de
frente y con la parte
que tiene mayor núme-
ro de pines hacia arri-
ba (figura 4), se nume-
ra de derecha a iz-
quierda y de arriba a
abajo, del 1 al 13
(arriba) y del 14 al 25
Figura 4 (abajo).

54
En este conector tenemos: Las líneas de la 18 a la 25 son la tierra.
8 líneas (pines) son para salida de datos (bits de En la tabla de la figura 5 se detallan la nomencla-
DATOS). Sus valores son únicamente modificables a tura y descripción de cada línea.
través de software, y van del pin 2 (dato 0, D0) al pin La columna “Centronics pin” se refiere a las líneas
9 (dato 7, D7). del conector tipo Centronics usado en las impresoras.
5 líneas son de entrada de datos (bits de ESTA- La columna E/S se refiere al dato visto desde el lado
DO), únicamente modificables a través del hardware del PC. El nombre de cada señal corresponde a la mi-
externo. Estos pines son: 11, 10, 12, 13 y 15, del más sión que cumple cada línea con relación a la impreso-
al menos significativo. ra, el periférico para el que fue diseñado el puerto pa-
4 líneas son de control (bits de CONTROL), nume- ralelo. Las señales activas a nivel bajo aparecen con
rados del más significativo al menos: 17, 16, 14 y 1. la barra de negación (por ejemplo, Strobe). Cuando
Habitualmente son salidas, aunque se pueden utilizar se indica alto o bajo se refiere a la tensión en el pin
también como entradas y, por tanto, se pueden modi- del conector. Alto equivale a ~5V en TTL y bajo a ~0V
ficar tanto por software como por hardware. en TTL..

Figura 5

55
Figura 6

Acceso al puerto mencionó antes, de tres registros de 8 bits localizados


El puerto paralelo se identifica por su dirección de en direcciones adyacentes del espacio de E/S del PC
E/S (entrada/salida, I/O) base y se reconoce en siste- (vea la tabla de la figura 7). Los registros se definen re-
mas MS-DOS por el número LPT (lp en Unix/Linux). lativos a la dirección de E/S base (LPT_BASE) y son:
Cuando arranca la máquina, la BIOS (Basic Input Out-
put System) chequea direcciones específicas de E/S en LPT_BASE + 0: registro de DATOS
busca de puertos paralelos y construye una tabla de las LPT_BASE + 1: registro de ESTADO
direcciones halladas en la posición de memoria 40h:8h LPT_BASE + 2: registro de CONTROL
(o 0h:0408h).
Esta tabla contiene hasta tres palabras de 16 bits, Se hará referencia a cada bit de los registros como
cada palabra con el byte bajo primero seguido por el una inicial que identifica el registro seguido de un nú-
byte alto. Cada palabra es la dirección de E/S base mero que identifica el número de bit, siendo 0 el LSB
del puerto paralelo (que denominaremos LPT_BASE en (bit menos significativo) y 7 el MSB (bit más significati-
lo sucesivo). La primera corresponde a LPT1, la segun- vo). Por ejemplo, D0 es el bit 0 del reg. de datos, S7
da a LPT2 y la tercera a LPT3. Hay que agregar que, es el bit 7 del reg. de estado y C2 es el bit 2 del reg.
en MS-DOS tenemos el dispositivo PRN que es un alias de control.
a uno de los dispositivos LPT (generalmente es LPT1, pe- Se indican con una barra de negación los bits que
ro se puede cambiar con la orden MODE). utilizan lógica negativa.
Las direcciones base estándar para los puertos pa- En lógica positiva, un 1 lógico equivale a alto (~5V
ralelos son: TTL) y un 0 lógico a bajo (~0V TTL). En lógica negativa
1 equivale a bajo (~0V) y 0 equivale a alto (~5V). Lo
03BCh expresado lo podemos observar en el diagrama del
0378h conector de la figura 8.
0278h Es preciso no confundir la lógica que sigue el puer-
to con la lógica que mantiene la impresora. Por ejem-
Las direcciones son chequeadas en este orden. plo, la impresora pone a alto Busy (pin 11) para indi-
La tabla de la figura 6 muestra, como ejemplo, la car que está ocupada. Pero en realidad, al leer el re-
memoria en un PC con dos puertos paralelo instalados gistro de estado, Busy la interpretamos como 0 (puesto
en las direcciones hexadecimales 378 y 278. que el pin 11 se corresponde con S7). Es decir, es co-
mo si fuera activa en bajo (Busy).
Registros
El puerto paralelo estándar (SPP) consta, como se Registro de datos (D): El registro de estado se ha-

Figura 7

56
lla en LPT_BASE. Se Figura 8
puede leer y escribir.
Escribir un dato en el
registro causa que di-
cho dato aparezca en
los pines 2 a 9 del co-
nector del puerto. Al
leer el registro, se lee
el último dato escrito
(NO lee el estado de
los pines; para ello
hay que usar un puerto
bidireccional). En la fi-
gura 9 se describe el
nombre que toma ca-
da bit de este registro.
El estándar es que las salidas sean LS TTL (low de control (figura 11) se encuentra en LPT_BASE+2. Es
schottky TTL), aunque las hay que son de tipo OC (co- de lectura/escritura.
lector abierto). La corriente que pueden entregar (mo- Los cuatro bits inferiores son salidas. La lectura de-
do source) es de 2,6mA máximo y pueden absorber vuelve lo último que se escribió a dichos bits. Son TTL
(modo sink) un máximo de 24mA. En el puerto origi- a colector abierto con resistencias de pull-up de
nal de IBM hay condensadores de 2,2nF a masa. Las 4.7kW, por lo que un dispositivo externo puede forzar
tensiones para el nivel bajo son entre 0 y 0,8V y el ni- el estado de los pines sin dañar el driver. Esto permite
vel alto entre 2,4V y 5V. utilizar estas cuatro líneas como entradas. Para ello, se
ponen en alto las cuatro salidas (escribiendo 0100b,
Registro de estado (S): El registro de estado está es decir, 4h, en LPT_BASE+2) lo que hace que las sa-
en LPT_BASE+1. Es
de sólo lectura (las
escrituras serán igno- Figura 9
radas). La lectura dá
el estado de los cin-
co pines de entrada
al momento de la lec-
tura.
En la figura 10
los nombres de los
pines se dejaron en
inglés porque es co-
mo generalmente se
identifican. La línea
Busy tiene, general- Figura 10
mente, una resisten-
cia de pull-up inter-
na. El estándar es
que sean entradas ti-
po LS TTL.

Registro de con-
trol (C): El registro

57
Figura 11 do C4=1, se activa el
buffer y su entrada,
S6, se conecta a la lí-
nea IRQ (en general es
IRQ7 o IRQ5). La lectu-
ra del bit, nos devuel-
ve el estado del mismo
(es decir si el buffer es-
tá en alta impedancia
o no).
Se producirá una
lidas “floten”. Ahora, un dispositivo externo puede for- interrupción, cuando haya un flanco descendente en el
zar a bajo alguna de las salidas con lo que, leyendo el pin correspondiente a S6. A continuación, se describen
puerto, sabemos si esto sucedió o no. los pasos para poder utilizar interrupciones. Finalmen-
Es posible realizar esta técnica en salidas totem-po- te, en la figura 12 se muestra una tabla que reúne las
le (como D0-D7) pero no se recomienda su uso porque características hardware y software del puerto paralelo.
habría que tener un conocimiento preciso de la corrien-
te, ya que se puede sobrecargar los transistores de sa-
lida y dañar el driver (especialmente en puertos integra- Protocolo del Puerto de Impresora
dos LSI).
El handshaking (“apretón de manos” o protocolo) es
Bit de puerto bidireccional (compatible PS/2): El bit un conjunto de reglas que ambos extremos de un sistema
C5, está disponible sólo si se trata de un puerto bidirec- de comunicación tienen que seguir para que la comuni-
cional; en los puertos comunes no se utiliza, al igual cación sea correcta. El puerto paralelo, usado con una
que los bits C6 y C7. Si C5=1, el buffer de los datos impresora, transmite datos y transmite/recibe las señales
de salida se pone en alta impedancia, “desconectan- de protocolo. Las principales son Strobe, Ack y Busy. La
do” dicho buffer de los pines 2 a 9 del conector del secuencia a seguir para enviar datos sería:
puerto (D0 a D7). Si se escribe al registro de datos, se Colocar el byte a enviar en el registro de datos.
escribe al buffer pero no a la salida. Esto permite que Verificar que la impresora no esté ocupada (Busy =
al leer el puerto, se lea el estado de las entradas y no bajo, S7 = 1).
lo que hay en buffer. Cuando C5=0 el puerto retorna al Indicarle a la impresora que acepte los datos (Stro-
modo salida, su estado por defecto. be = bajo , C0 = 1, pulso >5us).
En las computadoras IBM PS/2, para habilitar el En ese instante la impresora indica que está ocupa-
puerto paralelo bidireccional, además de lo antes des- da recibiendo los datos (Busy = alto, S7 = 0).
crito, se debe poner a 1 el bit 7 del registro del puerto Finalmente, la impresora envía un pulso de acepta-
102h (opciones de configuración). ción indicando que se recibieron los datos y que se
En computadoras que no tengan puerto paralelo bi- puede volver al paso 1 (Ack = bajo, S6 = 0, pulso de
direccional compatible PS/2, hay que modificar uno o entre 5 ms y 15 ms según impresora).
más bits de algún puerto específico correspondiente al Las otras señales sirven para verificar el estado de
chipset de la placa. A veces se habilita por el Setup o la impresora (Error, PaperEnd), para reiniciarla (Init) y
por jumper en la placa del puerto. para configurarla (AutoFeed, Select).
En los nuevos puertos, estas señales adquieren otra
Bit de interrupción: En trabajos normales de impre- función, a veces parecida y otras totalmente distintas.
sión, ni el BIOS ni el DOS hacen uso de la interrupción.
El hecho de poseer una línea de interrupción que está Interrupciones con el Puerto Paralelo
conectada directamente al PIC (Programmable Interrupt
Controller), lo hace muy útil para experimentación en En primer lugar, se debe habilitar el buffer que co-
data-loggers por ejemplo. El bit de interrupción está co- necta la línea ACK con la línea IRQ. Esto lo hacemos
nectado al control de un buffer de tres estados. Cuan- poniendo a 1 el bit 4 del registro de control (LPT_BA-

58
Figura 12

59
SE+2). Luego se debe preparar una ISR (Interrupt Servi- lelo debemos hacer uso de las funciones de QBasic que
ce Routine) que atienda la interrupción recordando en- permiten acceder a los puertos hardware. Daremos
viar la señal EOI (20h) al registro de control del PIC unos ejemplos básicos de la programación de la E/S
(puerto 20h) al salir de la rutina. La interrupción softwa- por el puerto paralelo. Estos ejemplos se presentan con
re corresponde a la número 0Dh para IRQ5 y 0Fh pa- un grado de estructuración creciente en el estilo de pro-
ra IRQ7. Finalmente se habilita con 0 la interrupción gramación. En el primer ejemplo se supone que la PC
IRQ5 (o IRQ7) escribiendo al bit 5 (o 7) del registro de está equipada con un puerto paralelo de tipo estándar
interrupciones del PIC (puerto 21h). Para desinstalar la localizado en la dirección 0x378, como suele ser habi-
ISR, se deshabilita la IRQ5 (o IRQ7) escribiendo un 1 tual en Windows 98, de modo que el registro de datos
al bit 5 (o 7) del registro de interrupciones del PIC se localiza en esa misma dirección y el de estado en
(puerto 21h). Luego se hace que C4=0. 0x378+1. En el ejemplo (al que llamamos CTRL.BAS)
se envía un byte a las líneas de datos y se recibe un by-
te de las líneas de estado con las funciones OUT e INP
Velocidad utilizando un estilo de programación muy básico, tal
como se sugiere en la tabla 1.
Un puerto paralelo ISA normal toma un ciclo-ISA En el siguiente ejemplo se supone que la PC está
para leer o escribir. En un sistema cuya velocidad de equipada con un puerto paralelo de tipo bidireccional
bus sea 1,3MHz, se puede decir que la lectura se pue- localizado en la dirección 0x378 de modo que el regis-
de hacer cada 1 ms (idealmente, ya que siempre exis- tro de datos se localiza en esa misma dirección y el de
ten otras instrucciones software, etc; en la práctica pue- control en 0x378+2. El bit C5 del registro de control se
den ser desde 1.2 ms a 2 ms). Algunos puertos sopor- utiliza como conmutador del modo salida (escritura en
tan un modo “turbo” que elimina los 3 estados de espe- las líneas de datos) al modo entrada (lectura de las lí-
ra de la CPU, con lo que la velocidad de lectura/escri- neas de datos). En el ejemplo, mostrado en la tabla 2
tura del puerto se duplica (2,7MHz). y al que llamamos CTRL_0.BAS, se envía y se recibe un
byte de las líneas de datos del puerto aprovechando su
capacidad bidireccional utilizando las funciones OUT e
Acceso Básico al Puerto Paralelo INP sin mayores complicaciones en la programación.
El siguiente ejemplo es funcionalmente idéntico al
Programación básica de la E/S en Basic: Para rea- anterior, aunque se hace uso de las constantes de BA-
lizar el control de dispositivos mediante el puerto para- SIC para dotar al programa de mayor elegancia y cla-

Tabla 1

60
Tabla 2

Tabla 3

61
ridad. También, facilita la reprogramación en caso de camente modificamos individualmente el bit deseado, y
que, por ejemplo, el puerto no se halle en la dirección no todos. Finalmente escribimos el byte ctrl% al registro
supuesta. de control para recuperar el estado original. Obsérve-
Obsérvese en la tabla 3 que la constante 0x378 só- se que se usa el operador ~ para realizar el comple-
lo aparece ahora una vez en el código fuente, frente a mento a 1 de C5ON, de modo que nos ahorramos el
las cuatro veces que lo hacía en CTRL_0.BAS. Se ha definir otra constante simbólica para la condición de bit
hecho uso asimismo de la notación hexadecimal para apagado.
los valores que activan y desactivan el bit C5 del regis- Ahora un cambio significativo: vamos a determinar,
tro de control. y no a suponer, dónde se halla situado el puerto para-
En el siguiente ejemplo, esta vez no es sólo maqui- lelo (consúltese la sección correspondiente de El Puer-
llaje. Cuando en los casos anteriores hemos activado y to Paralelo del PC para conocer los detalles acerca de
desactivado el bit C5, pudimos también modificar el es- cómo determinar cuántos puertos se hallan instalados y
tado del resto de los bits del registro de control. Nor- qué direcciones de E/S ocupan).
malmente, es de buen gusto respetar el estado original Para ello accedemos a la zona de memoria donde
del puerto cuando uno finaliza la ejecución de su pro- se registran las direcciones de los puertos paralelos pre-
grama. sentes en el PC (en la zona de las variables de la
Así pues, en el siguiente ejemplo se lee (tabla 4, BIOS), por mediación de la función PEEK. Una vez de-
CTRL_2.BAS) en primer lugar el estado del registro de tectados los puertos presentes, nos quedamos con el
control y se almacena en un byte (que llamamos ctrl%). primero y programamos la entrada-salida exactamente
Cuando utilizamos OUT, lo hacemos de modo que úni- igual que en CTRL_2.BAS. Vea la programación de es-

Tabla 4

62
te ejemplo (CTRL_3.BAS) en la tabla 5. Por último, in- Actividades
tegraremos el código que localiza la dirección del
puerto en ua función que devuelve dicha dirección. Pa- Es recomendable que ponga en práctica lo dicta-
ra ello definimos la función PuertoDir%, sin argumen- do hasta aquí y para ello le sugerimos realizar algu-
tos y de tipo entero. nos ejemplos básicos.
Si dicha función no localiza ningún puerto devuel-
ve un 0, lo que brinda al programa una posibilidad de Encendiendo un LED
terminar la ejecución cuando en un PC no existe puer- Realícese el montaje elemental esquematizado en
to paralelo disponible (tabla 6). la figura13. Puesto que se trata de un montaje inicial,

Tabla 5

63
Tabla 6

en el que se es posible “sacrificar” el orden respecto de


Figura 13 la sencillez, se puede llevar a cabo uniendo directa-
mente con regletas los componentes a los cables, e in-
troduciendo éstos en las hembras del conector de la PC.
Por supuesto, es preferible realizar montajes más esta-
bles, pero de ello nos ocuparemos más adelante.
Nota: no es preciso puentear exteriormente entre sí
las líneas 18-25 puesto que cada una de ellas es ya la
tierra del puerto. En este montaje se ha conectado un
LED (salida digital) en el pin 2 del puerto (bit D0 del
registro de datos) y un interruptor (entrada digital) en el
pin 15 (bit S3 del registro de estado).
A los fines prácticos, intente realizar un programa
en QBasic para la iluminación del LED y para la detec-

64
ción del estado del interruptor (véase el pro- Figura 14
grama CTRL.BAS de la tabla 1 de la pághi-
na 60).
Ahora haga un montaje como el de la fi-
gura 14, donde se supone que el puerto pa-
ralelo tiene capacidad bidireccional y se ha
conectado el interruptor (entrada digital) en
el pin 3 del puerto (bit D1 del registro de da-
tos). Haga un programa en QBasic para la
iluminación del LED y para la detección del
estado del interruptor (véase el programa
CTRL_0.BAS).

Interfaces Básicos de E/S


con el Puerto Paralelo
manejo de las señales del puerto: un cortocircuito pue-
de dañar permanentemente la tarjeta madre del PC.
Circuito sin Alimentación Externa Sin embargo, experimentalmente se comprueba que
Se trata de un circuito muy sencillo que usa un mí- en la mayoría de los PC el puerto proporciona corrien-
nimo de componentes y proporciona un test funcional te suficiente para una clara indicación visual de los
de 8 bits. Cada bit de la entrada puede ser individual- LED. El circuito se muestra en la figura 15.
mente controlado y visualizado en los LED de salida. Las líneas de datos (D0-D7, pines 2-9) se utilizan
Los diodos LED que actúan de display se alimentan úni- como líneas de salida, e iluminan los LED cuando en
camente con la corriente proporcionada por las pro- ellas se fija por software un 1 lógico (+5V). Cuando se
pias salidas del puerto. Sería preferible alimentar los fija un 0 lógico, los LED se apagan. Como entradas se
LED y utilizar la corriente absorbida para iluminarlos, utilizan, como nibble (semibyte) bajo, las cuatro líneas
pero el conector no
proporciona una se-
ñal de alimentación Figura 15
(Vcc), de modo que se
necesitaría una fuente
externa. Eléctricamen-
te, el puerto paralelo
entrega señales TTL y
como tal, teóricamen-
te, se le puede conec-
tar cualquier dispositi-
vo que cumpla con los
niveles de voltaje es-
pecíficos de la lógica
TTL, sin embargo el
hardware del puerto
paralelo está muy limi-
tado en cuanto a su
capacidad de manejo
de corriente, por ésta
razón se debe ser
muy cuidadoso con el

65
asociados al registro de
control (C0,C1,C2 y C3,
pines 1, 14, 16 y 17) y,
como nibble alto, cuatro
de las líneas asociadas
al registro de estado
(S4,S5,S6 y S7, pines
13, 12, 10 y 11).
Obsérvese que las lí-
neas de control se utili-
zan normalmente como
salidas. Sin embargo,
aquí deben ser configu-
radas como entradas.
Obsérvese, asimismo,
que cuatro de las líneas
Figura 16 de entrada se correspon-
den con bits que utilizan
lógica negativa (C0, C1,
C3 y S7). Esto habrá de
tenerse en cuenta cuan-
do se realice el progra-
ma de control de esta in-
terfaz.
Los detalles sobre el
montaje de éste y los
posteriores circuitos se
pueden consultar en la
página web: http://c-
fievalladolid2.net-
/tecno/cyr_01

Circuito con
Alimentación
Externa
Fijémonos ahora so-
lamente en una de las lí-
neas de entrada y en
una de las líneas de sali-
da. Un circuito como el
de la figura 16 utiliza
una fuente externa de
+5V para alimentar los
diodos LED y las señales
de entrada.
Un 1 lógico en D7
(bit 7 del puerto de DA-
Figura 17 TOS) produce que el LED

66
se apague. Un 0 lógico produce la iluminación del Circuito Bidireccional
LED. El interruptor normalmente abierto S produce que con Alimentación Externa
aparezca un 1 lógico (+5V) en la entrada Busy (regis- El circuito de la figura 19 aprovecha la capacidad
tro de ESTADO, S7). Cuando se cierra S un 0 lógico bidireccional del puerto paralelo de la práctica totali-
(GND) se aplica a la entrada Busy. dad de los PCs actuales. Así, las 8 líneas de datos del
Un circuito como el precedente para las 8 líneas puerto (D0-D8) se pueden utilizar a modo de un bus de
de entrada y salida es un alternativa al propuesto en datos que, en ocasiones contiene los valores que serán
la sección anterior. Las aplicaciones y programas leídos por la computadora y, otras veces, transporta
prácticos para este circuito no son objeto der esta los datos que ésta envía a la salida digital. No es pre-
obra, pero las puede bajar de: http://cfievallado- ciso ahora utilizar las líneas de estado y de control del
lid2.net/tecno/cyr_01 puerto a modo de entradas, como se hacía en el cir-
cuito sin alimentación externa (figura 15).
Este circuito utiliza los siguientes CI:
Circuito con Alimentación
Externa y Etapa Separadora 74LS573: un registro octal latch D transparente
Para disminuir lo más posible el riesgo de daños usado como puerto de salida para iluminar los diodos
al puerto, se puede utilizar un circuito integrado LED, o cualquier dispositivo al que se le quieran enviar
74LS244 como etapa separadora en las líneas de sa- señales digitales.
lida. Al mismo tiempo se mejora la capacidad de ma- 74LS245: un transceptor octal bidireccional que
nejo de corriente, de forma que se pueden conectar proporciona un puerto de entrada de 8 líneas; toma da-
sin riesgo la serie de diodos LED que indican la activi- tos de entrada de 8 interruptores o de cualquier dispo-
dad en las líneas de datos del puerto paralelo. El cir- sitivo desde el cual se quiera leer información digital.
cuito se detalla en la figura 17.
Por cada línea de entrada que tomamos directa- Ambos integrados se controlan mediante el bit C0
mente del puerto paralelo existe una etapa amplifica- del registro de control. Cuando el pin 1 se halla en al-
dora-separadora dentro del circuito integrado to, los datos escritos por el puerto se transfieren a los
74LS244 que nos permite trabajar con una tasa de en- LED mediante el 74573, mientras que el 74245 está
trega de corriente suficiente para desplegar en los dio- aislado del bus de datos. Cuando el pin 1 está bajan-
dos emisores de luz la información escrita en las líneas do, los datos a su entrada se conservan en la salida.
de datos del puerto. Además es posible habilitar ó des- Cuando el pin 1 está bajo el 74245 se habilita y los
habilitar el despliegue del nibble de orden inferior ó datos presentes en su entrada se transfieren a su sali-
superior del byte escrito en el puerto. da y pueden ser leídos por el programa.
Colocando en un nivel lógico alto el pin 1 del CI El bit C5 se utiliza como control de las operacio-
74LS244 inhabilitamos el despliegue del nibble de or- nes de lectura/escritura del puerto bidireccional. El
den bajo y un nivel lógico alto en la patita 19 evita el programa debe fijar tanto C0 como C5 a 0 para rea-
despliegue del nibble de orden alto. Por comodidad, lizar una escritura (es decir, debe escribir un valor de-
se conectan las patitas 1 y 19 permanentemen-
te a tierra de tal manera que sea posible visua-
lizar la actividad en los diodos LED.
Este circuito, al igual que otros presentados
en este texto, necesita de alimentación externa.
Se puede alimentar directamente mediante una
fuente de +5V, o construir ésta usando una pila
de 9V o un adaptador universal, y un regulador
de voltaje 7805.
El 7805 puede regular cualquier voltaje de
entre 7 y 25V c.c. hasta los 5V que precisa el
circuito (vea el diagrama de conexión del regu- Figura 18
lador en la figura 18.

67
cimal 0 el el registro de control). Para llevar a cabo una Si se trata de un display de ánodo común hay que
lectura ambos bits deben ser establecidos a 1 (es decir, alimentar con Vcc= +5V las dos líneas señaladas como
debe escribir un valor hexadecimal 0x21, o decimal comunes en la figura, y es preciso poner a tierra la lí-
33, en el registro de control). nea correspondiente al segmento que se quiere ilumi-
nar. Si se trata de un display de cátodo común, hay que
alimentar con +5V el segmento que se desea iluminar y
Display de 7 Segmentos poner a tierra las dos líneas comunes.
Así, en un display de cátodo común, las líneas 1-8
Una posibilidad es sustituir, en los montajes anterio- se pueden conectar directamente a las líneas de datos
res, el sistema de visualización mediante 8 diodos LED del puerto (pines 2-9 del conector DB25), y las dos lí-
por un display numérico de 7 segmentos (figura 20) neas comunes se pueden conectar a cualquiera de las
más un punto decimal. El circuito resulta así más com- patillas de tierra del conector, por ejemplo, la 25.
pacto. Reiteramos que si Ud. desea realizar los montajes

Figura 19

68
de los circuitos propuestos, o si quiere analizar con Figura 20
mayor profundidad lo que aquí se expone, puede visi-
tar la página de Internet:

http://cfievalladolid2.net/tecno/cyr_01.

Cabe aclarar que los circuitos se pueden montar


sobre una placa tipo "protoboard" y utilizar cable rí-
gido para realizar las conexiones necesarias entre los
componentes.
Las entradas/salidas del circuito hacia el PC se
pueden reunir en un conector DB25 macho unido a la
placa por líneas de cable rígido o de cable plano. A
su vez, el conector macho se puede unir directamente
al conector hembra de la PC mediante un cable de ex-
tensión paralelo, lo que normalmente resulta más có-
modo para acceder a la parte trasera de la PC donde
se sitúa el conector hembra.
Para simplificar los circuitos que utilizan interrupto-
res a modo de entradas digitales, éstos se pueden reu- gresa al mundo de las PCs, lo hace a través de Win-
nir en un único DIP switch de ocho posiciones. dows, lo asumimos casi de manera natural porque no
Lógicamente, para cada circuito podemos realizar importa dónde vayamos, siempre hay una máquina
diferentes actividades, pero ese tema, desarrollado con Windows cerca.
por el autor en la web, será objeto de otras publica- • Linux: considerado como “el sistema de los
ciones. nerds”, ha ido evolucionando hasta convertirse en un
sistema operativo amigable que puede llegar a supe-
rar en estabilidad a la plataforma Windows. Está dise-
Distinguiendo los Sistemas Operativos ñado y probado sobre la base de las contribuciones
de miles de usuarios y programadores independientes
Sin hilar muy fino, podemos decir que un sistema en distintas partes del mundo que aportan su granito
operativo debe fijar reglas claras para todo fabrican- de arena para que el sistema crezca y progrese. Sin
te de software que desee ejecutar programas en él, ya embargo, tiene en contra la “tendencia cultural” im-
que al utilizar una PC, estamos abiertos a ejecutar puesta por Windows que le impide difundirse amplia-
aplicaciones de distintos orígenes. Por lo tanto, se de- mente.
be asegurar “derechos y obligaciones” para que los
programas dentro de un sistema no se interfieran (y
perjudiquen) entre ellos.
Como conclusión y grandes rasgos podremos de-
cir que el Sistema Operativo sirve de intermediario en-
tre los programas y el hardware. (Figura 21)

No hay dudas que en el mercado y en la comuni-


dad de usuarios podemos hallar 3 Sistemas Operati-
vos que se destacan, o al menos hemos oído hablar de
la mayoría.

• Windows: sin dudas, es el sistema operativo me-


jor afianzado en el mercado (más que por elección de
los usuarios, por costumbre). Casi todo usuario que in- Figura 21

69
• DOS: si bien ese trata de un sistema operativo en • Respecto al soporte de drivers de Linux, con un
desuso, podría considerarse como el más veloz y sen- poco de paciencia podemos encontrar mucha informa-
cillo de los tres (incluso podría considerarse ideal para ción gratuita en Internet, con una muy buena documen-
tareas dedicadas. Sus comandos todavía pueden utili- tación. Pero nuevamente se exige un alto conocimiento
zarse cuando utilizamos el “símbolo de sistema” de de programación.
Windows XP o la “terminal” de Linux. No existe una de- • Molestando un poco más con DOS, podemos de-
finición clara de driver para esta arquitectura, ya que cir que existe mucha bibliografía escrita, y aún puede
teóricamente cualquier aplicación puede hacer E/S en encontrarse información en la red sobre E/S con este
forma directa. sistema, sigue siendo la alternativa más simple.

Los Drivers, Comunicando Hard&Soft Simple vs Complicado

Definiremos como drivers o controladores a las he- DOS es más simple, ya que se trata de un sistema
rramientas o rutinas necesarias para que el sistema monotarea (trabaja con una aplicación a la vez). Linux
operativo interactúe con el hardware. Tendremos dri- y Windows son sistemas multitarea (más de una aplica-
vers de sonido, puertos, unidades de disco, etc. ción a la vez...) por lo que necesitan controlar estricta-
El driver por sí mismo no es un programa accesible mente que es lo que maneja cada aplicación para que
por el usuario. Las aplicaciones interactúan indirecta- en ningún momento se produzcan situaciones conflicti-
mente con el dispositivo a través de llamadas del siste- vas (por ejemplo, dos aplicaciones queriendo imprimir
ma, las cuales luego se traducen por el SO en instruc- a la vez). Para lograr su cometido, los sistemas multita-
ciones de entrada salida. reas han tenido que perfeccionar niveles y permisos
Los sistemas operativos actuales no tienen por qué que les permitan decidir en qué momento una aplica-
saber de fábrica, como funciona todo el hardware exis- ción accede a un dispositivo.
tente en el mercado. Si esto fuera posible, acarrearía
cantidades enormes y mayormente innecesarias de in-
formación. Lo que suele hacerse es armar un paquete Niveles de Trabajo
que recopile versiones estables (libres de errores) de los
drivers de dispositivos comerciales de uso común. Para explicar este concepto necesitaremos aclarar
la idea de proceso: un programa puede estar constitui-
do por varios procesos simultáneos que realizan distin-
Soporte de Programación tas tareas. Cada proceso tiene asignado para sí recur-
sos determinados (direcciones E/S disponibles, servi-
Refiriéndonos a los drivers o controladores, no exis- cios disponibles, cantidad de memoria asignada, prio-
te un driver genérico multiuso que sirva para todos los ridad frente a otros procesos)
tipos de sistemas operativos. Es más, generalmente se Con la aparición de los procesadores 386, se em-
programa un driver para varias versiones de un sistema pezó a hablar de niveles de privilegio o de ejecución,
determinado. Por lo tanto, si desarrollamos un proyec- estos se clasificaban en:
to de hardware, deberemos considerar en qué sistemas
y/o PCs lo vamos a conectar. Sobre los sistemas ante- • El nivel 0, nivel Kernel o Monitor: aquí un proce-
riores podemos decir: so tiene acceso irrestricto al hardware tiene acceso al
hardware. En este nivel se ejecuta el núcleo del sistema
• Microsoft ofrece para sus sistemas Windows un operativo. Evidentemente el fallo de un programa en ni-
set de librerías llamado DDK (Driver Development Kit). vel cero, tiene por consecuencia la caída inexorable de
Consiste en numerosas ayudas, ejemplos y herramien- la máquina.
tas destinadas a programas de un nivel avanzado. Es- • Los niveles 1 y 2 estaban destinados a ejecutar
te paquete tiene un costo, y se entrega para la última los drivers del sistema. En el caso de Microsoft, se op-
versión de Windows disponible en el momento de su tó por ejecutarlos a nivel Kernel (nivel 0), Linux siguió
compra. la misma tendencia.

70
• El nivel 3 o nivel Usuario: Allí se ejecutan los Adquisición de Datos Placa Interna
programas de usuario, los cuales sólo pueden acceder
al hardware o a los recursos del sistema, a través de Cuando hablamos de adquisición de datos, nos
los niveles anteriores. referimos a tomar un valor analógico o digital (prove-
niente de sensores, interruptores, etc.), convertirlo a
Un sistema operativo en si tiene numerosos proce- dato manipulable por la PC y almacenarlo en una di-
sos, que se ejecutan en diferentes niveles, según las ne- rección de memoria determinada. Si bien los sensores
cesidades y operaciones a cumplir por cada uno. Po- son externos, el dispositivo adquisidor puede ser inter-
dríamos hacer una analogía con una estructura de una no (en forma de placa de expansión con entradas ana-
empresa, los gerentes (nivel 3) pueden decidir sobre el lógicas o digitales). Empezaremos mencionando los
destino de una planta de procesamiento, pero los ope- distintos métodos de comunicación entre el elemento
rarios (nivel 0) son los que trabajan directamente con adquisidor interno y la PC:
las máquinas y herramientas. Con esto podemos decir
que una instrucción desde el nivel de usuario puede • Por interrupciones: en este caso, un módulo o
desencadenar varias operaciones a nivel de kernel so- dispositivo (ya sea un puerto externo o elemento inter-
bre el hardware. no) posee cierta inteligencia que le permite informar al
A la vez, el nivel de usuario nos permite generali- sistema acerca de nuevos datos entrantes. El módulo
zar ciertas operaciones. De esta manera, si un desa- en cuestión produce una señal, el sistema operativo
rrollador de software deseara reproducir un sonido, “interrumpe” momentáneamente sus operaciones en
no necesita aprender el funcionamiento interno de ca- respuesta a esa señal ejecutando una rutina, que pue-
da placa de sonido existente, sino entregarle al siste- de servir tanto para tomar datos de entrada como pa-
ma operativo la orden de “reproducir” y éste, a través ra producir una salida.
de drivers provistos por el fabricante del hardware ins- • A través de Encuesta: en este caso, el sistema
talado, realizará la operación. “consulta” al dispositivo acerca del estado de los da-
Las transiciones de nivel (desde que se pide una tos, o toma directamente una lectura sin ninguna veri-
acción, hasta que se ejecuta una operación E/S), sólo ficación. El dispositivo adquisidor adopta una actitud
pueden hacerse a través de puertas de tarea asigna- más bien pasiva, no reacciona a menos que el sistema
das por el núcleo (coordinador
supremo) del sistema. Ningún
proceso tiene acceso directo al
hardware con lo cual se evitan
caídas del sistema por errores
de programación (al producir-
se un error de programa en el
nivel 3, el sistema operativo to-
ma control, informa del error y
limpia totalmente la tarea y
restos de ella)
Un ejemplo: en la Figura
22 podemos ver el recorrido
de acciones que se van suce-
diendo cuando una aplicación
requiere acceder a un disposi-
tivo de almacenamiento exter-
no (por ejemplo, un disco rígi-
do). El acceso directo al dispo-
sitivo se produce solamente
desde los procesos dentro del
núcleo. Figura 22

71
provoque una operación de entrada o salida. A su vez, sidor. Los sistemas operativos actuales ofrecen librerías
los métodos de encuesta se pueden distribuir en dos cla- o al menos nos dan la posibilidad de trabajar con los
sificaciones fundamentales: puertos a través de drivers provistos por el sistema. Uno
de los protocolos más definidos por la diversidad de
• Utilizando de DMA: en este caso, el sistema in- aplicaciones es el RS-232 (o puerto serie), presente en
forma al dispositivo que se prepare a entregar o recibir muchos PLCs y Dataloggers.
una cantidad determinada de datos con no más de 3
instrucciones. A partir de ese momento, el dispositivo Como vimos, las Aplicaciones entran dentro del
mismo toma control del sistema, escribe o lee los datos modo Usuario y se comunican con el hardware a través
directamente de la RAM sin intervención del micropro- de drivers y llamadas al sistema, los cuales se regulan
cesador, y al terminar el volcado de memoria devuelve por restricciones y prioridades. Cada uno de los siste-
el control al sistema operativo. mas vistos tiene sus peculiaridades con respecto a la
• A través de operaciones directas de E/S: este es E/S directa.
un método más lento. A diferencia del DMA, el micro-
procesador tiene que realizar registro por registro las • Si bien DOS es el único sistema de los menciona-
operaciones de E/S entre la memoria y el dispositivo dos que soporta E/S directa, se considera obsoleto por
adquisidor. Por ejemplo, supongamos que tenemos que la comunidad informática en Gral.
volcar en memoria 256kbytes alojados en los registros
de un dispositivo adquisidor: por cada byte transferido, • Windows en forma nativa no soporta E/S direc-
el procesador primero tendría que leer cada dato del ta desde una aplicación.
registro del dispositivo adquisidor, procesarlo y luego
escribirlo en la memoria. Todo esto llevaría varias ins- • Linux soporta E/S directa desde una aplicación,
trucciones de programa y de proceso, muchas más que pero solamente si el que ejecuta esa aplicación tiene
con DMA, pero nos permitiría ir evaluando dato por privilegios de root (administrador de sistema).
dato antes de escribirlo a memoria (con DMA primero
volcamos a memoria, luego trabajamos con los datos También vimos que hay distintas maneras de comu-
transferidos) nicarse con una placa conectada a la PC usando Inte-
rrupciones, DMA y E/S. Pero lo que no aclaramos fue
Instantáneamente surge una duda, ¿como hacemos que todos estos tipos de transferencia requieren en al-
para implementarlo?. Hemos visto lo simple que es pro- gún momento E/S directa, tanto para programar el con-
gramar microcontroladores (el assembler de PIC pinta trolador de DMA, como el de Interrupciones.
feo de lejos, pero al aprenderlo nos damos cuenta que
con unas pocas líneas podemos armar una buena se-
cuencia de automatismo). E/S en DOS
En este caso, es un poco más complicado: cual-
quier proyecto de E/S utilizando los sistemas operati- Las PCs recién adoptaron las características de se-
vos Linux o Windows no es tarea fácil... demanda co- guridad y enfoques de capa de usuario y de Kernel a
nocimientos de programación que exceden el básico y partir de la década del 90, con el surgimiento de Linux
requiere conocimientos de drivers y programación. y las versiones de Windows NT (que requerían una ma-
yor estabilidad que las versiones hogareñas de Win-
dows). Por este motivo, cualquier lenguaje de progra-
Adquisidor Externo mación de alto nivel que corra en DOS soporta E/S di-
recta.
Según la aplicación, los dispositivos adquisidores La industria nos ha llevado a ir escalando los siste-
pueden considerarse como “cajas negras” externas, co- mas operativos y entornos más amigables, más tareas
nectadas a los sensores e interruptores pon un lado, y simultáneas, desechando lo anterior. De todas mane-
a un puerto externo de la PC por el otro. Este tipo de ras, este tipo de lenguajes y plataformas. puede ser
elementos nos da gran portabilidad, ya que no necesi- bastante útil para tareas didácticas, ya que con pocos
tamos desarmar la PC para trasladar el elemento adqui- conocimientos de programación y con computadoras

72
de bajas prestaciones, se pueden realizar numerosos Recuadro 1
proyectos que pueden llegar a ser vistosos, no tanto
por los colores de ventanas vistas en pantalla, sino por DEFINT A-Z
Cuenta=5000
los elementos controlados. Esto puede posibilitar que
CLS
muchas escuelas con escasos recursos puedan aprove- PRINT “Secuencia de Luces”
char equipos antiguos para diseño de proyectos de
E/S. PRINT “Pulse una tecla para terminar...”
DO
Si poseemos una versión de DOS viejita, podemos
FOR I = 0 TO 7
llegar a encontrar BASICA y GW-BASIC, variantes del Salida = 2 ^ I
lenguaje de programación BASIC. A partir de MS- OUT &h378,Salida
DOS 5.0 y hasta Windows 95 inclusive se incluyó el Retrasa Cuenta
NEXT
QBASIC (basado en el QuickBasic 4.5, pero sin com-
pilador). Tanto QBASIC como BASICA y GW-BASIC FOR I = 6 TO 0 STEP -1
son sólo intérpretes (son siempre necesarios para eje- Salida = 2 ^ I
cutar los programas). Microsoft dejó de proveer el OUT &h378,Salida
QBASIC en las versiones siguientes de Windows. Retrasa Cuenta
NEXT
LOOP UNTIL INKEY$<>””
QBASIC nos provee dos simples instrucciones: END
• INP(Puerto): devuelve un byte (8 bits) desde un
puerto de E/S SUB Retraso (Ciclos%)
• OUT Puerto, dato:. envía un byte a un puerto de FOR P% = 0 TO Ciclos
NEXT P%
E/S. END SUB

Figura 23

73
Recuadro 2 Se debe aclarar que se ha tomado
la dirección &H378 (correspondiente al
Licencia y Código Fuente LPT1). Según la configuración de su sis-
IO.DLL es completamente gratis! Sin embargo, usted no podrá: tema, puede ser que el puerto paralelo
• Cobrar esta librería de ninguna manera. Por ejemplo, usted no puede
venderla como un producto individual.
donde se conectan los led responda a
• Esconder la IO.DLL detrás de un control OCX (utilizado por los lengua- la citada dirección o que deba cam-
jes de Microsoft) o control Delphi. Esto tambien se considera como “trabajo biarse por &h278 o &h3BC (esta última
derivado” y también debe proveerse gratuitamente. dirección era muy utilizada en las PCs
• Asumir la propiedad intelectual. que tenían placa de video con puerto
El autor no se hace responsable de las consecuencias de usar IO.DLL.
paralelo incluido). En caso de no saber
No se ofrecen garantías.
El código fuente está disponible por u$s1000 (sí, mil!) dólares. El autor cuál es la dirección que corresponde a
ofrece también la posibilidad de hacer una adaptación “a medida” en el caso nuestro puerto, no rompemos nada con
de que algún usuario la requiera (con su tarifa, claro). intentar ver cuál de las tres funciona, ya
que son direcciones destinadas especí-
Dentro del Recuadro 1 podemos ver un simple ficamente a estos puertos. Escribir en ellas no provoca-
ejemplo donde a través de un programa en QBASIC rá ningún conflicto con ningún otro elemento de hard-
ya través del puerto paralelo hacemos una secuencia ware conectado.
de luces tipo “Auto Fantástico”. En la figura 23 vemos una de tantas implementacio-
En este ejemplo definimos una variable Cuenta, és- nes circuitales que puede utilizarse para demostrar es-
ta nos permite acomodar la velocidad en que se despla- te ejemplo, en este caso colocamos un buffer 74LS244
zan los leds a través de la subrutina Retraso, cuya úni- para protección del puerto.
ca función es hacer que el programa pierda tiempo de Los 5V que alimentan este circuito integrado pue-
la misma manera que podríamos poner varias instruc- den obtenerse de la misma fuente de alimentación de
ciones NOP en un programa de un PIC. la PC a través de cualquiera de los cables rojos que ali-
Se incluyen dos bucles FOR que determinan el des- mentan a los discos rígidos, disqueteras o lectoras de
plazamiento del bit que enciende cada led desde un CD-ROM.
extremo hacia el otro y un bucle exterior que finaliza Algo muy importante: para evitar daños, no olvide
cuando se presiona una tecla, terminando el programa. verificar el circuito antes de conectarlo al puerto.

Tabla 1 - Instrucciones provistas por IO.DLL

Instrucción Uso
PortOut Escribe un byte al puerto especificado
PortWordOut Escribe una palabra (de 16 bits) al puerto especificado
PortDWordOut Escribe una palabra doble (de 32 bits) al puerto especificado
PortIn Lee un byte del puerto especificado.
PortWordIn Lee una palabra (16 bits) del puerto especificado
PortDWordIn Lee un palabra doble (32 bits) del puerto especificado
SetPortBit Setea en 1 el bit especificado del puerto indicado
ClrPortBit Setea en 0 el bit especificado del puerto indicado
NotPortBit Invierte el estado del bit especificado del puerto indicado
GetPortBit Lee el estado del bit especificado
RightPortShift Provoca una rotación a la derecha del contenido del puerto haciendo que LSB pase a MSB
LeftPortShift Provoca una rotación a la izquierda el contenido del puerto haciendo que MSB pase a LSB
IsDriverInstalled Devuelve un valor distinto de 0 si la DLL está cargada en memoria

NOTA: LSB=Least Significative Bit (Bit Menos Significativo)


MSB=Most Significative Bit (Bit Más Significativo)

74
E/S directa con Windows se necesitan conocimientos de assembler. Sólo se re-
quieren conocimientos mínimos de algún lenguaje de
Windows 95/98 tiene una cierta permisividad so- alto nivel como Visual Basic, C, o Delphi. El autor es-
bre las operaciones de E/S directas desde aplicacio- pecifica claramente en su página cuales son los límites
nes, aunque esto es aplicable sólo en algunas versio- de utilización, los conceptos básicos legales se pue-
nes de lenguajes de programación. (por ejemplo se den observar en el Recuadro 2. En la tabla 1 vemos
puede hacer un “artilugio” para tener E/S desde una las instrucciones provistas por IO.DLL
aplicación realizada en Delphi 1.0, pero no se puede
con la versión 2.0). Además, este tipo de operaciones
E/S requiere un poco de conocimientos de assembler Un Ejemplo en Visual Basic
de 80x86, complicando más la tarea de programa-
ción. A partir de Windows NT y sus sucesores (2000 A modo de ejemplo, veremos cómo realizar E/S en
y XP) el criterio de E/S es mucho más estricto, imple- Visual Basic a través de IO.DLL. Para poder utilizar esta
mentaciones de E/S que funcionan en Windows librería basta con copiar el archivo IO.DLL en la carpe-
95/98 probablemente no funcionen en Windows ta donde está el programa en desarrollo y agregar en
2000/XP, salvo que sean implementadas a través de un módulo BAS las siguientes declaraciones: vea el cua-
drivers (programables a través del Microsoft DDK, que dro 3. Si bien es un ejemplo que puede parecer bastan-
junta 2 características problemáticas: caro y difícil pa- te tonto, se quiere mostrar que con pocas líneas de pro-
ra el programador principiante) grama podemos lograr respuestas por parte del hardwa-
re a través de eventos ocurridos en la PC. De la misma
IO.DLL: un recurso más que útil manera, a través de las funciones de entrada PortIN y
PortWordIN, podríamos guardar el contenido del puerto
Aplicaremos una librería externa(IO.DLL) diseñada en una variable para su manipulación y posible emisión
por Fred Bulback, un programador independiente, to- de una nueva salida.
talmente ajeno a Microsoft (podemos ver su página Con conocimientos mínimos de cualquier lenguaje
http://www.geekhideout.com). Esta librería permite de programación podríamos adaptar el ejemplo en
desarrollar aplicaciones que funcionen desde Win- DOS para utilizarlo en Windows, ya que existe la ins-
dows 95 hasta Windows XP, pasando por todas las trucción OUT de Qbasic y el PortOut de IO.DLL son simi-
versiones intermedias. Es muy versátil y provee varias lares, así como también hay similitud entre la función
funciones que facilitan la tarea de Entrada-Salida, no INP de Qbasic y su correspondiente PortIN de la libre-

Recuadro 3

Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" As Boolean

75
Asumiendo unos conocimientos mínimos de Visual Basic, agregamos un Evento que se ejecuta al momento de car-
gar el programa:
Private Sub Form_Load()
PortOut &H378,0'Pone todas las salidas en el puerto paralelo en 0
End Sub
Ahora, supongamos que agregamos un botón de comando (similar a los botones de una ventana del tipo “OK”,”A-
ceptar” o “Cancelar”). Queremos colocar una salida determinada en el puerto paralelo después de hacer click en un bo-
tón llamado “Setear” y otro llamado “Resetear”. Entonces, generamos dos botones de Comando (estamos suponiendo
conocimientos básicos de VisualBasic) y luego tipeamos:
Private Sub Setear_Click() 'Relacionada al evento de hacer “click” sobre el botón Setear
PortOut &H378,255 'Coloca todos los bits de datos del puerto paralelo (D0-D7) en 1
End Sub
Private Sub Resetear_Click() ´Relacionada al evento de hacer “click” sobre el Resetear
PortOut &H378,0 'Coloca todos los pines del puerto paralelo en 0 (leds apagados)
End Sub

ría de Fred Bulback. Si hablamos del puerto paralelo, po- De esta manera damos por finalizada esta obra acla-
dremos encontrar mucha información en la web referida rando que al momento de escribir erstas líneas estamos
al tema con proyectos relacionados al control desde PC preparando otro tomo de la colección del C lub Saber
de montajes electrónicos. Electrónica destinado a explicar diferentes sistemas de
En el Recuadro 3 encontraremos varias direcciones adquisición de datos y manejo de circuitos a través de los
útiles con implementaciones interesantes a través del diferentes puertos de la PC.
puerto paralelo en otros lenguajes de programación. ¡Hasta la próxima!
Ojalá que este tema sea disparador de grandes ideas,

76