Anda di halaman 1dari 7

2

IV. Programacin de
Perifricos

Puerto paralelo
IV. Programacin
Pr
orientada a
perifricos
Puerto paralelo

PROGRAMACIN ESTRUCTURADA
PRE-ES | Ingeniera Mecatrnica | 2013

Martn Nava Ortiz


Contenido v

CONTENIDO

1. Introduccin

IV. Programacin de
Perifricos

2. El puerto paralelo

Introduccin

3. Acceso al puerto mediante lenguaje C/C++


a) Descripcin de libreras
b) Comandos disponibles
c) Ejemplos de uso
4. Circuito de prueba

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Contenido v

Qu es un puerto ?

IV. Programacin de
Perifricos

En el mundo de la computacin, un
puerto es un conjunto de lneas de seal
que el microprocesador o CPU usa para
intercambiar datos con otros
componentes.

El puerto paralelo

Los usos ms comunes de los puertos


incluyen la comunicacin con impresoras,
mdems, teclados y pantallas, etc.

La mayora de los puertos de la computadora son digitales, es decir, cada seal o bit,
es 0 1.

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Contenido v
7

Conectores del puerto paralelo

Acceso al puerto paralelo


Este puerto dispone de tres registros de 8 bits cada uno (un byte)

Cada uno de estos registros se denomina puerto o PORT, y cada uno de sus
pines representa un bit.

El puerto paralelo de la PC es un
conector de 25 pines de tipo D (DB25)
comnmente conocido como puerto
LPT (line printer terminal, por sus siglas
en ingls)

Los pines del 18 al 25 son para masa, y sirven para conectar las descargas de
los circuitos.
Puerto de Datos

Cada pin de los conectores tiene un nmero asignado por lo cual es


importante que al armar cables propios los identifiques correctamente

Conector
Hembra
(PC)

Puerto de Estado
Puerto de Control
Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Direcciones del puerto

10

Herramientas para el acceso al Puerto Paralelo


El programa Parallel Port Monitor es una utilidad para ver y manipular el
estado de los registros del puerto paralelo en una PC con Windows
95/98/ME/NT/2000.

Para acceder a cualquiera de los registros del puerto, es necesario


conocer su identificador, es decir, su direccin base.
Las direcciones de los tres puertos estn en orden secuencial:

Puerto

Hexadecimal

Decimal

Datos

0x378

888

Estado

0x378+1

889

Control

0x378+2

890

Descripcin del contenido de la ventana:


Primera columna => Direccin de los registros (en hexadecimal),
datos, estado y control, de arriba hacia abajo.
Segunda, Tercera y Cuarta columna => Estado de los puertos en
decimal, hexadecimal y binario, respectivamente.

Abajo, se muestra grficamente el estado de los pines.


Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

PortOut_int_(888,bin)

11

Descripcin de puertos

12

Entorno tpico de experimentacin

Puerto de datos (Pin 2 al 9, Salida). Es de slo escritura, por


este registro se envan los datos al exterior de la PC.

Puerto de Datos
Pines 2-9

Puerto de Estado (Pin 15, 13, 12, 10 y 11, Entrada). Es de slo


lectura, por aqu es posible enviar seales elctricas al
ordenador. De este registro se utilizan los cinco bits de ms
peso, que son el bit 7,6,5, 4 y 3.

Puerto Paralelo
Circuito
Puerto de Control
Pines 1, 14, 16, 17

Puerto de Control (Pin 1, 14, 16 y 17, Entrada-Salida). Es de


lectura y escritura, es decir, es posible enviar o recibir
seales elctricas. De los 8 bits de este registro solo se
utilizan los cuatro de menor peso o sea 0, 1, 2, y 3.

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Puerto de Estado

Pines 10-13, 15

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

14

13

Voltaje y niveles de corriente

IV. Programacin de
Perifricos

El puerto paralelo permite la comunicacin digital, por lo tanto, existen


slo 0s y 1s.
5v

En la lgica del puerto paralelo:


Cero corresponde a un nivel de voltaje de 0v.
Uno corresponde a un nivel de voltaje de 5v.

Acceso al puerto mediante Lenguaje


C/C++

0v
0

La corriente mxima que se puede extraer del puerto paralelo es


2.6mA.
Si se trata de utilizar ms corriente esto podra daar el puerto paralelo
e inclusive la tarjeta madre.

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Contenido v
15

Acceso al puerto paralelo mediante programacin


Anteriormente, en versiones antiguas del sistema operativo Windows, resultaba
relativamente sencillo tener acceso a los puertos de entrada/salida en una
computadora comn.
De hecho, casi cualquier lenguaje de programacin tena un comando especial para
hacerlo.
Conforme nuevas versiones de este sistema operativo fueron apareciendo el acceso
ya no fue tan simple, siendo necesario utilizar software de terceros.
Actualmente existen tres opciones viables para realizar el acceso a los puertos:

IO.DLL
http://www.geekhideout.com/iodll.shtml

16

Librera personalizada para el acceso al puerto paralelo


Convenientemente para este curso se han integrado estas tres libreras en una
sola, de manera que se facilite su uso (agradecer al profesor).

Entonces, para poder ejecutar


programas que acceden al puerto
paralelo, es necesario que la carpeta
conteniendo la librera (ioports) se
encuentre dentro de la misma
carpeta donde se encuentra dicho
programa:

Adems, se requiere hacer referencia dentro del programa a esta librera de


forma similar a como lo hacemos con otras, pero con algunas diferencias:

PortTalk Driver
http://retired.beyondlogic.org/porttalk/porttalk.htm
Inpout32.dll
http://logix4u.net/parallel-port/16-inpout32dll-for-windows-982000ntxp/
Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

#include "ioports\ioports_ctl.c"
Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

17

Comandos disponibles en la librera

18

Comandos disponibles en la librera

Funciones de Simulacin

Habilitacin de la librera.

Se activan de la siguiente manera: StartIOPorts("pt",1);

Comando

Descripcin

Su uso es conveniente cuando no se cuenta con el puerto paralelo y/o no


podemos acceder a el, y deseamos probar la lgica de nuestro programa.

Inicializa los elementos necesarios para comenzar con el


acceso al puerto.

Este comando se utiliza una sola vez en todo el programa

OpenLibrary();

Estas funciones simularn el acceso al puerto paralelo, tanto para entrada


como para salida.

Una de las ventajas del uso


de estas funciones es que
una vez que tengamos
acceso al puerto paralelo,
bastar con cambiar el
segundo parmetro en la
funcin StartIOPorts a 0
para controlar nuestro
dispositivo fsico.

Permite definir la librera interna que se utilizar, por lo que


es necesaria para iniciar con el uso de los comandos de
acceso al puerto

StartIOPorts("io",0);

Libera los recursos utilizados por la librera. Lgicamente


este comando debe incluirse siempre.

Este comando se utiliza una sola vez en todo el programa

CloseLibrary();

Martn Nava Ortiz

Contenido v

IV. Programacin de Perifricos

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

19

Comandos disponibles en la librera

Comandos disponibles en la librera. Parmetros

Acceso al puerto.
Comando

Enva un byte (8 bits) al puerto especificado.

Enva un byte representado mediante un arreglo de enteros,


al puerto especificado.

valor = PortIn(0x379);

Comando

1 Parmetro

StartIOPorts("pt",0);

Permite definir la sublibrera que


se utilizar:
"io" para IO.DLL
"pt" para Port Talk
"inpout32" para Inpout32.dll

Permite decidir si se
utilizarn las funciones de
acceso real o las de
simulacin:
0 , reales
1 , de simulacin

PortOut(888,1);

Es la direccin del puerto al que


se pretende acceder

Representa el valor que ser


enviado al puerto en esa
direccin, el cual
internamente se utilizar en
su forma binaria.

PortOut_int(888,b);

Es la direccin del puerto al que


se pretende acceder

Es un arreglo de nmeros
enteros que debe tener 8
elementos, cada uno de los
cuales slo podrn tomar los
valores 0 1

Descripcin

PortOut(888,1);

PortOut_int(888,b);

20

Lee un byte desde el puerto especificado, y este debe ser


almacenado en una variable de tipo unsigned char si se
quiere recuperar el valor posteriormente.

valor = PortIn(0x379); Es la direccin del puerto al que

2 Parmetro

N/A

se pretende acceder
Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

21

Acceso al puerto paralelo

Librera personalizada para el acceso al puerto paralelo


Consideraciones especiales

Ejemplos de uso de comandos de Salida.

Para poder acceder al puerto paralelo mediante los programas diseados en


C/C++, es necesario que la cuenta de usuario con que entramos en Windows
tenga permisos de administrador.

PortOut(888, 8);

En Windows XP
Los programas se ejecutan sin problema

Enva el nmero binario 00001000 por el puerto


de DATOS (direccin 0x378 )

int b[8] = {0,0,0,0,1,0,0,0};


PortOut_int(888, b);

En Windows 7
La primera vez que se ejecute el
programa desde Dev-C no
funcionar.
Es necesario ejecutar como
administrador la aplicacin generada
(ver a la derecha)
Esto se requiere solamente la
primera vez.
Contenido v

22

unsigned char value;


value = PortIn(889);

Enva un arreglo de enteros simulando


el numero binario.

Recibe el valor que representa el


estado de los pines del puerto de
ESTADO (direccin 0x379)

El valor devuelto se encuentra entre


0 y 255

Martn Nava Ortiz

IV. Programacin de Perifricos

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

23

IV. Programacin de
Perifricos

24

Circuito de prueba
Encendido de leds mediante el puerto paralelo

Circuito de Prueba

Contenido v

Contenido v

Martn Nava Ortiz

IV. Programacin de Perifricos

25

Circuito de prueba
Programa ejemplo
#include "ioports\ioports_ctl.c"

int main()
{
OpenLibrary();
// Abriendo el puerto
StartIOPorts("io", 0);
PortOut(888,0);
PortOut(888,8);

// Enviando 00000000 (binario)


// Enviando 00001000 (binario)

CloseLibrary();

// Liberacin del puerto

En el circuito de prueba con LEDs, el estado final sera el siguiente:

D7
Contenido v

D6

Martn Nava Ortiz

D5

D4

D3

D2

D1

D0

IV. Programacin de Perifricos

Anda mungkin juga menyukai