Está en la página 1de 3

Control de los Puertos en Lenguaje C

Comunicaciones seriales en Lenguaje C. En lenguaje C, existe una instruccin especial para manejar las comunicaciones seriales. Esta instruccin posee la siguiente sintaxis: int bioscom (int cmd, char abyte, int port); En realidad, esta instruccin acude a la interrupcin 14H para permitir la comunicacin serial sobre un puerto. Para este caso, cada uno de los parmetros tiene el siguiente significado:
cmd abyte port Especifica la operacin a realizar es un carcter que se enviar por el puerto serial 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 Para la inicializacin del puerto, el carcter abyte tiene las interpretaciones que se muestran en la siguiente Tabla.
0x02 0x03 0x00 0x04 0x00 0x08 0x18 0x00 0x20 0x40 0x60 0x80 7 bits de datos 8 bits de datos 1 bits de parada 2 bits de parada Sin paridad Paridad impar Paridad par 110 baudios 150 baudios 300 baudios 600 baudios 1200 baudios

0xA0 0xC0 0xE0

2400 baudios 4800 baudios 9600 baudios

Para configurar el puerto con algunos parmetros, bastar con realizar una operacin OR con los deseados, por ejemplo, para 1200 baudios, sin bit de paridad, sin bit de parada y 8 bits, bastar con selecconar la palabra dada por: abyte = 0x80 | 0x00 | 0x00 | 0x03 o lo que es equivalente, abyte = 0x83 Para la lectura de un carcter que se haya recibido o del estado del puerto, se deben utilizar variables en las cuales se almacenarn los valores de retorno; en ambos caso se obtienen valores de 16 bits. Para la lectura de un dato recibido, los 8 bits menos significativos corresponden al dato y los 8 ms significativos al estado del puerto; si alguno de estos ltimos est en "1 ", un error ocurri; si todos estn en "0", el dato fue recibido sin error. Cuando el comando es 2 3 (leer el caracter o el estado del puerto), el argumento abyte no se tiene en cuenta. Para configurar el puerto COM1 con los parmetros del ejemplo dado anteriormente, bastar con la instruccin: bioscom (0,0x83,0); /*(inicializar, parmetros, COM1)*/ La utilizacin de los comandos y las instrucciones para la configuracin de los puertos aqu expuestos slo tendrn sentido en la medida en que utilicemos el puerto serial para establecer una comunicacin bien con otros computadores o bien con dispositivos electrnicos como micro controladores. Comunicacin con el puerto paralelo en Lenguaje C. El lenguaje C permite tanto la lectura como la escritura de los puertos paralelo. Para leer el puerto existen las instrucciones inport e inportb, mientras que para escribir estn las instrucciones outport y outportb. La sintaxis de estas instrucciones es la siguiente: unsigned inport (unsigned portid); unsigned char inportb (unsigned portid);

void outport (unsigned portid, unsigned value); void outportb (unsigned portid, unsigned char value); Ejemplo: Palabra = inport(puerto); outport (puerto,Palabra); Byte = inportb (puerto); outportb (puerto,Byte); Las instrucciones que terminan en b ese refieren a la lectura o escritura de un byte, mientras que las que no terminan en esta letra se refieren a una palabra(dos byte). La variable puerto debe contener la direccin de memoria del puerto paralelo, este valor puede ser 378h, 3BCh 278h. Por ultimo no hay que olvidar colocar la siguiente directiva del preprocesador que le indica al C que se usarn las funciones inport, outport, inportb u outportb, declaradas en el archivo dos.h. #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.
Referencias utilizadas: 1.- Naranjo C. , Jhon Jairo. Electronica & Computadores. "Interface serial RS-232". Ao I N10. Pag. 71-76 2.- Naranjo C. , Jhon Jairo. Electronica & Computadores."Kinder de programacin en C". Ao I N9. Pag. 7176

También podría gustarte