Está en la página 1de 13

Puertos paralelos

Puerto Paralelo Pgina 2



Puerto paralelo en C

Definicin

Un puerto paralelo es una interfaz entre un ordenador y un perifrico. El puerto
paralelo transmite la informacin byte por byte, es decir que los 8 bits de datos que
forman un byte viajan juntos. Un ejemplo de puerto paralelo es el puerto de la
impresora.

El puerto paralelo puede utilizar uno de los tres tipos de conectores definidos por
el estndar IEEE 1284:

1. 1284 tipo A es un conector hembra de 25 patitas de tipo D. Es el utilizado
en las impresoras
2. 1284 tipo B que es un conector de 36 patitas de tipo centronics y lo
encontramos en la mayora de las impresoras.
3. 1284 tipo C es un conector similar al 1284 tipo B pero ms pequeo, con
mejores propiedades elctricas y mecnicas.

Cmo funciona?

Los puertos paralelos fueron originalmente desarrollados por IBM como una
manera de conectar una impresora a un PC. Cuando IBM estaba en pleno proceso
de disear el PC, la compaa quera que el ordenador funcionara con impresoras
ofrecidas por Centronics, un fabricante lder de la poca. IBM decidi no usar el
mismo puerto del ordenador que Centronics usaba en la impresora.

En lugar de ello, los ingenieros de IBM juntaron un conector de 25 pines (DB-25),
con un conector Centronics de 36 pines para crear un cable especial con el que
conectar la impresora al ordenador. Otros fabricantes de impresoras acabaron
adoptando el interfaz de Centronics, haciendo que este extrao cable fuera
inviable como estndar.

Cuando un ordenador enva datos a una impresora usando un puerto paralelo, le
est enviando 8 bits de datos a la vez. Estos 8 bits son enviados paralelamente
entre ellos, al contrario que los 8 bits enviados en fila en un puerto serie. Un puerto
paralelo estndar puede enviar entre 50 y 100 kilobytes de datos por segundo.










Puerto Paralelo Pgina 3

Tipos de puertos

Puertos SPP
Existen algunas versiones mejoradas de los puertos paralelos. Las
especificaciones originales eran unidireccionales, lo cual significa que los datos
solo podan ir en una direccin para cada pin. En 1987, IBM ofrece un diseo
nuevo de puerto paralelo bidireccional, conocido como SPP (Standard Parallel
Port), reemplazando por completo el diseo original.
Las comunicaciones bidireccionales permiten a cada dispositivo recibir y transmitir
datos por igual. Muchos dispositivos usan los pines del 2 al 9, originalmente
diseados para el envo de datos. Pero los pines del 18 al 25, utilizados para
tierra, pueden ser usados tambin para datos. Esto permite una comunicacin full-
duplex (ambas direcciones a la vez).
Puertos EPP
Los puertos paralelos mejorados EPP (Enhanced Parallel Port), fueron creados en
1991 por Intel, Xircom y Zenith, y permiten la transferencia de muchos ms datos
por segundo. Fueron diseados especficamente para dispositivos que no fueran
impresoras que queran ser conectados al puerto paralelo, usualmente equipos de
almacenamiento que necesitaban una mayor tasa de transferencia de datos.
Puertos ECP
Casi al mismo tiempo de la introduccin de los puertos EPP, Microsoft y Hewlett
Packard anuncian en conjunto una nueva especificacin en 1992, llamada ECP
(Extended Capabilities Port). Mientras que EPP estaba orientado a otros
dispositivos, ECP fue diseado para proveer una mejor funcionalidad y velocidad a
las impresoras.
En 1994, el estndar IEEE 1284 es sacado a la luz. Incluye las especificaciones
EEP y ECP. Para que ambos funcionaran correctamente, tanto el sistema
operativo como el dispositivo, deben soportar estos requerimientos, Hoy en da
esto no suele ser un problema ya que casi todos los ordenadores soportan todos
los tipos de puertos paralelos, y detectar el modo a ser usado, dependiendo el
dispositivo que este conectado. Si quieres elegir un modo de forma manual, lo
puedes hacer por medio de laBIOS.




Puerto Paralelo Pgina 4

Cmo trabajar con ellos?


Primero se debe saber la configuracin del puerto paralelo, y para eso podemos ir
a "Administrador de dispositivos" y directamente buscar dentro de las propiedades
de nuestro LPT (Que por lo regular es LPT1). Imagen arriba

Ahora que ya sabemos la direccin de nuestro puerto paralelo, podemos continuar
con el siguiente paso, que es saber la configuracin de los puertos del LPT1;
tenemos 25 pines en el puerto paralelo, todos funcionan con seales TTL y a
continuacin se muestra como estn configurados:

Puerto de entrada (Puerto 888 hexadecimal 378) va del pin 2 hasta el 9,
por este puerto podemos sacar la informacin que queramos mandar a un
circuito desde el ordenador, para lo cual tenemos 8 bits, el de menor peso
es el pin 2 y el de mayor peso es el 9 siendo as que podemos tener hasta
256 posibles combinaciones.

Puerto de salida (Puerto 889) son del pin 10 al 13 y 15 (como pueden darse
cuenta son solo 5 pines), por este puerto podemos meter informacin a
nuestra computadora proveniente del circuito, cabe sealar que los
primeros tres bits de menor peso no existen en este puerto pero son
tomados en cuenta a la hora de tener un valor en la entrada. Por ejemplo, si
metemos una entrada por el pin 15 (que es el de menor peso) nuestro
programa lo tomara como el valor 8 en el puerto 889.



Puerto Paralelo Pgina 5

Puerto de E/S (Puerto 890) y son los pines 1, 14, 16 y 17 este puerto es
especial para mandar datos tanto de entrada como de salida.

En la imagen (abajo)se muestra el puerto paralelo, con sus puertos de entradas y
salidas.




Para programar en C, primero tenemos que tener la librera, la cual es:
"inpout32.dll", esta librera tienen que colocarla en 2 direcciones, en System32 y
en el lugar donde tendrn su programa .EXE compilado.

Ahora si en nuestro proyecto podemos crear la clase:

using System;
using System.Runtime.InteropServices;

namespace WindowsApplication1
{
class PortAccess {

//Llama al metodo Output de la librera dll.
[DllImport("inpout32.dll", EntryPoint = "Out32")]
public static extern void Output(int adress, int value);
//Llama al metodo Input de la librera dll
[DllImport("inpout32.dll", EntryPoint = "Inp32")]
public static extern int Input(int adress);

}
}


Puerto Paralelo Pgina 6


y con lo anterior, tenemos los dos mtodos que nos interesan, para meter y sacar
informacin por nuestro puerto.

El mtodo 'Output' maneja dos variables enteras iniciales, la cual es adress y
value;
a) 'adress' es la direccin de nuestro puerto de salida (especificada en la
imagen del puerto paralelo arriba), que en nuestro caso es el 888 (decimal),
debido a que tenemos 8 bits en nuestro puerto de salida es posible manejar
cada pin de nuestros ocho bits de la siguiente manera:

por ejemplo, si queremos una salida en el pin 2 y 3 (b'00000011' en binario as),
pues exacto seria el valor 3 en decimal. La entrada es un poco ms complicada,
ya que solo tenemos 5 pines con los cuales manejamos valores de 8 bits. Hay que
verlo grficamente para entenderlo:

Con la imagen anterior ya nos damos una idea de lo que el programa puede leer
de estos pin, pero hay que tener cuidado ya que el pin 11 esta 'negado', esto
quiere decir que por ejemplo si nosotros metemos un 1 lgico por este pin el
programa lo leera como 0 lgico y viceversa, de tal forma que si nosotros
metemos la siguiente entrada: b'10001' el programa nos leer un 8 decimal, que
equivale al b'00001000' en binario.





Puerto Paralelo Pgina 7

Con esto ya podemos manejar el puerto paralelo, ejemplo la siguiente instruccin:


PortAccess.Output(888, 1); // Saca un 1 lgico por el pin 2 para verlo mejor
b'00000001'

PortAccess.Output(888,255), // Pone todas la salida a 1 lgico, b'11111111'


Es cuestin de jugar con los nmeros binarios y decimales para obtener la salida
deseada.

El puerto de entrada es ms fcil ya que solo lee, los datos que hay en la entrada
ejemplo:


int a; //creamos una variable entera
a = PortAccess.Input(889); // Ponemos el valor de la entrada en la variable 'a'
System.Console.WriteLine("La entrada del puerto es: " + a); //muestra el valor de
la entrada



























Puerto Paralelo Pgina 8

Conclusin

En verdad se mereca toda una seccin aparte a la cual le brindaremos una
atencin especial e iremos amplindola cada vez ms, ya que sus
prestaciones son muchsimas, y es bueno que lo conozcas, te sorprenders
de las cosas que se pueden hacer...
Si estas leyendo este tutorial es por que tienes una PC en estos momentos
y seguramente una impresora o un Scanner conectados a ella. Bien, la ficha
en la cual estn conectados estos dispositivos es conocida como puerto
paralelo. Si la desconectas veras que tiene 25 contactos (pines de ahora en
ms), su nombre es Conector DB25.
Aqu tienes una imagen de los conectores

Cada pin de los conectores tiene un nmero asignado por lo cual es muy
importante que al armar tus propios cables los identifiques correctamente o
sufrirs unos terribles dolores de cabeza...!!!
Este puerto dispone de tres registros de 8 bit cada uno (un byte)

Sigamos con lo nuestro... cada uno de estos registros se denominan
puertos o PORT., y cada uno de sus bits, representa un pin determinado del
puerto. Los pin's que van del 18 al 25 (ambos inclusive): Son para masa, y
sirven para conectar las descargas de los circuitos.
Veamos ahora los tres registros
Puerto de datos (Pin 2 al 9): Es el PORT 888 y es de solo escritura, por
este registro enviaremos los datos al exterior de la pc,

Puerto de estado (Pin 15, 13, 12, 10 y 11): Es el PORT 889 y es de solo
lectura, por aqu enviaremos seales elctricas al ordenador, de este
registro solo se utilizan los cinco bits de ms peso, que son el bit 7, 6, 5, 4
y 3 teniendo en cuenta que el bit 7 funciona en modo invertido.
Puerto de control (Pin 1, 14, 16 y 17): Es el correspondiente al PORT
890, y es de lectura/escritura, es decir, podremos enviar o recibir seales
elctricas, segn nuestras necesidades. De los 8 bits de este registro solo
se utilizan los cuatro de menor peso o sea el 0, 1, 2 y 3, con un pequeo
detalle, los bits 0, 1, y 3 estn invertidos.




Puerto Paralelo Pgina 9

En esta imagen puedes ver los tres registros, sus bits y los pines asignados
a cada uno de ellos. La imagen corresponde a un conector DB-25 (Hembra).








Algo ms... La tensin de trabajo del puerto es de 5 voltios, por lo que
necesitamos una fuente estabilizada o regulada de tensin, esto es
importante tenerlo en cuenta, ya que estaremos enviando seales al
puerto. Por otro lado, si bien puedes utilizar la PC para enviar seales al
exterior sin necesitad de una fuente externa, es recomendable utilizarla y
as no exiges demasiado al puerto y te evitas problemas.
Ahora bien, si activas un bit de salida por el puerto, este permanecer as
hasta que lo cambies, es decir que estars enviando 5V de forma continua
hasta que lo pongas a 0.
Pero bueno.. eso es programacin, y lo veremos a su debido momento, por
lo pronto deberemos armarnos de unos circuitos para verificar el funcionamiento
del puerto. Aclarado esto pasemos a su construccin..











Puerto Paralelo Pgina 10






Para no meterte en los con las sentencias de programacin las cuales
puedes programarlas tu mismo en Basic, en Pascal, en C, en Delphi y todos los
dems lenguajes que quieras, yo hice uno en C y este es el cdigo fuente...







































/*Programa que enva seales al puerto de datos ingresando un nmero decimal*/
#include<dos.h>
#include<stdio.h>
#include<conio.h>
int a; /*variable, valor que enviare al puerto*/
void main()
{
outp(888,0); /*apago todos los LED's*/
clrscr(); /*limpio la pantalla*/
printf("Ingrese el nmero en decimal para enviar al puerto.\n");
printf("El nmero mximo permitido es 255:\n");
scanf("%d",&a); /*tomo el valor y se lo paso a "a"*/
outp(888,a); /*lo envo al puerto de datos*/
printf("tachannnn... Dato enviado...!!!\n\n");
printf("Se acab, presione una tecla para salir");
getch(); /*...y hasta luego*/
outp(888,0); /*apago todos los LED's*/
}

Puerto Paralelo Pgina 11



Enviando datos por el puerto de control...
Este puerto es de lectura-escritura. En este caso lo utilizaremos para enviar
seales
desde la PC hacia el exterior, y el circuito que se utilizara ser similar al empleado
en
el puerto de datos, de ese modo es posible tener 12 salidas, lo que si se debe
tener
en cuenta es que el primero el segundo y el cuarto bit de este registro estn
invertidos, pero esta dificultad es superada con la codificacin del programa que
controla este puerto
Si deseas ver como funcionan las salidas, arma el circuito anterior y ya podrs
observar las variaciones en los led's.
El programa de prueba lo tienes aqu.
































/*Programa que enva seales al puerto de control ingresando un nmero
decimal*/
#include<dos.h>
#include<stdio.h>
#include<conio.h>
int a; /*variable, valor que enviare al puerto*/
void main()
{
a=11; /*11 en binario es 1011 los valores 1 corresponden*/
/*a los pines invertidos*/
outp(890,a); /*apago todos los LED's*/
clrscr(); /*limpio la pantalla*/
printf("Ingrese el nmero en decimal para enviar al puerto.\n");
printf("El nmero mximo permitido es 15:\n");
scanf("%d",&a); /*tomo el valor y se lo paso a "a"*/
outp(890,a); /*lo envo al puerto de estado*/
printf("tachannnn... Dato enviado...!!!\n\n");
printf("Se acab, presione una tecla para salir");
getch(); /*...y hasta luego*/
outp(890,11); /*apago todos los LED's*/
}

Puerto Paralelo Pgina 12


Pues bien, supongo que sabrs que el ordenador manda los datos en forma
de bytes. Un byte son 8 bits y un bit es la mnima cantidad de informacin
que un ordenador puede tratar. Es decir, un bit puede tomar slo dos
valores posibles, que son 0 1.
Hablando en lenguaje elctrico el 0 significa 0 voltios y el uno significa 5
voltios (por aquello de la electrnica digital). Cualquier valor que mandemos
al puerto, el ordenador lo transformar en ceros y unos. Esto se conoce
como sistema binario de numeracin. Como tenemos datos de 8 bits (1
byte), aplicando algo de las matemticas que aprendimos en EGB, vemos
que con slo 2 dgitos (el cero y el uno) podremos representar 28
valores.
haciendo nmeros tendremos 256 valores, que se corresponden a la
siguiente tabla:





Puerto Paralelo Pgina 13


Bibliografa

http://www.ordenadores-y-portatiles.com/puerto-paralelo.html

http://www.cavsi.com/preguntasrespuestas/que-es-un-puerto-paralelo-y-para-que-
sirve/

http://controlengel.blogspot.mx/2008/05/puerto-paralelo-y-c.html

También podría gustarte