Académique Documents
Professionnel Documents
Culture Documents
6 de diciembre de 2013
ndice
Tema
Pgina
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
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
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);
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
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.
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:
#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
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
12