Vous êtes sur la page 1sur 12

Salvador Soria Salgado

Manipulacin de puertos en lenguaje C Ing. Electrnica 1er semestre A

Prof. Cesar Romero Burgos

Manipulacin de puertos en lenguaje C

6 de diciembre de 2013

Manipulacin de puertos en lenguaje C

ndice

Tema

Pgina

1.- Qu son los puertos?................................3

2.-Manejo de puertos en lenguaje C ...............4

3.-Puerto RS-232 .............................................7

Manipulacin de puertos en lenguaje C

1.-Qu son los puertos?


Los puertos son medios mediante los cuales se establece un intercambio de informacin con dispositivos exteriores o hardware. En otras palabras permiten el intercambio de datos, de aqu que tambin reciban el nombre de interfaz. Estos puertos se dividen en 2, de entrada y de salida. 1.1-Puerto serial Tambin conocidos como RS-232, fueron las primeras interfaces que permitieron que los equipos intercambien informacin con el mundo exterior. El termino serial se refiere a datos que se envan por un solo hilo, es decir los bits se envan detrs del otro. La comunicacin serial se lleva a cabo asincrnicamente, es decir que no es necesaria una seal (o reloj) de sincronizacin: los datos pueden enviarse en intervalos aleatorios. A su vez, el perifrico debe poder distinguir los caracteres (un carcter tiene 8 bits de longitud) entre la sucesin de bits que se est enviando. En un sistema de comunicacin paralela se deben tener dos bits, unos de arranque y otro de parada, de esta forma el puerto identifica los caracteres cuando inician y cuando terminan. Una computadora por lo general tienen de 1 a 4 puertos seriales los cuales se encuentran en integrados en la tarjeta madre, y tienen entre 9 o 25 pines (conectores DB9 yDB5 respectivamente) o clavijas y tienen la siguiente formas.

Manipulacin de puertos en lenguaje C

1.2-Puerto paralelo Envan datos de manera simultnea por varios canales o hilos, y envan 8 bits al mismo tiempo por 8 canales. Esto hace que estos puertos tengan una transferencia muy rpida de datos alcanzando velocidades de hasta 16 Mbps. Estos se encuentran conectado en la tarjeta madre y tienen 25 pines, y se usan para conectar por ejemplo, impresoras

2.-Manejo de puertos en lenguaje C


Ya mencionamos que los puertos sirven para intercambiar informacin entre una computadora y el exterior, pues bien, para que esta intercambio se lleve adecuadamente los puertos tienen una direccin que la computadora reconoce, se esta forma la computadora sabe de donde viene la informacin y que es. Esta direccin esta asignada en la memoria y se comunica enviando y recibiendo bytes. 2.1-Comunicaciones seriales. Para manejar la comunicacin serial el lenguaje C utiliza una instruccin especial que lleva la siguiente sintaxis: int bioscom (int cmd, char abyte, int port); Esta instruccin se basa en la interrupcin 14h (int 0x14).

Manipulacin de puertos en lenguaje C

Cada parmetro tiene el siguiente significado: cmd: especifica la accin a realizar abyte: es un carcter que se enviara al puerto serial Port: es la identificacin del puerto serial ((desde 0 para COM1 hasta 3 para COM4)
El parmetro cmd puede tener los siguientes valores y significados: 0 Inicializa el puerto port con los valores dados por abyte 1 Enva el carcter abyte por el puerto port 2 Lee el carcter recibido por el puerto port 3 Retorna el estado del puerto port

Mientras que el parmetro Abyte puede tener los siguientes datos,

Manipulacin de puertos en lenguaje C

Bit de parada: Marcan el inicio y fin de carcter, es decir, separa un carcter de toro Paridad: son bits adicionales que se agregan para detectar errores de trasmisin Baudios: es la cantidad de smbolos por segundo enviados en una transmisin digital

Esto sirve para configurar los parmetros de un puerto, por ejemplo si se quiere configurar un puerto para que te trasmita 300 baudios, con paridad par con 2 bits de parada y 7 bits debemos seleccionar la palabra dada por: abyte= 0x40 | 0x18 | 0x04 | 0x02 o abye= 0x64 Cuando el comando cmd es 2 0 3 el valor de abyte no se tiene en cuenta ya que solo est recibiendo la informacin del puerto, o escribiendo informacin sobre este.
Para configurar el puerto COM1 con los parmetros del ejemplo dado anteriormente, bastar con la instruccin:

bioscom (0,0x64,0); Lo que esta instruccin ser iniciar el puerto con los valores de abyte descritos anteriormente y que esto se har sobre el puerto serial COM1.

2.2-Comunicaciones en paralelo Para puertos paralelos, el lenguaje C usa las instrucciones import e importb para leer el puerto, y outport y outportb para escribir en el puerto, y llevan la siguiente sintaxis: unsigned inport (unsigned portid); unsigned char inportb (unsigned portid);

Manipulacin de puertos en lenguaje C

void void

outport (unsigned portid, unsigned value); outportb (unsigned portid, unsigned char value);

Las instrucciones que termina en b se refiere a la escritura o lectura de un byte, las que no lo tienen a una palabra (2 bytes). Es muy importante destacar que para usar las instrucciones antes mencionadas debemos agregar la librera: #include <dos.h> El siguiente programa consulta la direccin del primer puerto paralelo disponible: #include <conio.h> #include <dos.h> void main(void) { int puerto; clrscr(); puerto=peekb(0x40,0x8); printf("Direccin: %Xh",puerto); getch(); } Como vern la utilizacin del puerto paralelo es mucho ms sencillo que la serial.

3.-Puerto RS-232
Es un puerto que se pude encontrar con 25 pines, o con 9 pines que es el ms comn, es un puerto serial que se rige bajo la norma RS-232c. Esta norma fue establecida por la Asociacin de Industrias Electrnicas (EIA), y es utilizada para la comunicacin entre mdems, impresoras, terminales y computadoras. Esta norma establece que de las 20 seales que se pueden usar del puerto se deben ocupar 9 que ya estn establecidas, aunque la

Manipulacin de puertos en lenguaje C

norma en si no dice cuntos deben ser usados, por lo que a veces solo se usan 3. Las seales de los pin 4, 5, 6, 8, 20, son dilogo, utilizadas entre el modem y el terminal, mientras que los pines 15,17 y 24 se utilizan para modem de alta velocidad. El pin 22 indica que el modem ha detectado una seal de llamada en la lnea telefnica y es utilizada por el sistema para responder automticamente. La siguiente tabla muestra los pines y sus usos del RS-232.

Manipulacin de puertos en lenguaje C

De las cuales las ms usadas son:

Para programar un puerto RS-232, al ser un puerto serial se usa el mismo modo que mencionamos anteriormente. He aqu un ejemplo de un programa para un puerto RS-232:

Manipulacin de puertos en lenguaje C

#include <dos.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> union REGS rent, rsal; void ini_rs232() { rent.h.ah=0x00; /* Inicializacin */ rent.x.dx=0x00; /* COM1 */ /*1200 bps, sin par, 1 bit stop, 8 bit datos */ rent.h.al=0x83; int86(0x14,&rent,&rsal); } void escribe(char c) { /* Funcin escribir */ rent.h.ah=0x01; rent.x.dx=0x00; /* COM1 */ rent.h.al=c; /* Escribe caracter c */ int86(0x14,&rent,&rsal); } int test_rs() { /* Lee status de lnea */ rent.h.ah=0x03;

10

Manipulacin de puertos en lenguaje C

rent.x.dx=0x00; /* COM1 */ int86(0x14,&rent,&rsal); /* Retorna bits menos significativo */ return(rsal.h.ah & 0x01); } char leer_rs() { /* Funcin Leer dato */ rent.h.ah=0x02; rent.x.dx=0x00; /* COM1 */ int86(0x14,&rent,&rsal); /* Retorna el dato en AL */ return(rsal.h.al); } void main() { int st; char c; /* Inicializacin RS-232 */ ini_rs232(); while(1) { st=test_rs(); /* Lee estado de la lnea */ if(st) { c=leer_rs(); /* Lee dato */

11

Manipulacin de puertos en lenguaje C

putch(c); } if(kbhit()) { c=getch(); if(c==0x1b) exit(0); /* Escribe Caracter */ escribe(c); } } } /* main */

12

Vous aimerez peut-être aussi