tecmikro logo
Programación de microcontroladores PIC en mikroC PRO
Email: tecmikro@gmail.com   Cel. 098 743 8877   Telf. 243 0352 Quito-Ecuador


USART (UART) de los microcontroladores PIC con el MAX232

El módulo USART

La comunicación de los microcontroladores PIC con el computador es de gran importancia y para esto se ha incorporado un módulo con las características apropiadas para el intercambio de información.

Este módulo es conocido como USART (Universal Synchronous Asynchronous Receiver Transmitter) y se estudia en este capítulo. El módulo USART es compatible con el protocolo RS232 que también es muy utilizado en las computadoras personales.

Este módulo puede configurarse para operación asincrónica (full -dúplex) y para su empleo en este modo se puede utilizar la librería UART del compilador mikroC PRO.

Este es uno de los dos módulos serie E/S, también llamado Interfaz de Comunicación Serie SCI. El módulo USART de los microcontroladores PIC puede configurarse como un sistema asincrónico full-dúplex que puede comunicarse con dispositivos periféricos, tales como terminales CRT y computadoras personales, o puede configurarse como un sistema sincrónico half-dúplex que puede comunicarse con otros dispositivos tales como conversores A/D y D/A, EEPROMs serie, etc.

Los modos de operación disponibles son los siguientes:

  • Asincrónico (full-dúplex)
  • Sincrónico-Maestro (half-dúplex)
  • Sincrónico-Esclavo (half-dúplex)
Protocolo RS232
Este es un protocolo de comunicación serie ampliamente difundido en las computadoras personales y empleado por los puertos COM del computador. El acceso físico a estos puertos es a través de un conector DB-25 o DB9, machos y hembras. La norma RS232 se estableció para comunicar un computador con un modem, por lo que en los conectores DB-25 aparecen muchos pines que en otras aplicaciones no se utilizan, y en las que es más común emplear el conector DB9. Cada uno de los terminales del conector RS232 tiene una función especificada por la norma. Unos pines transmiten y reciben datos, mientras que otros permiten el control de la comunicación. En la tabla 10.1 se observan estos detalles.
rs232-pinout
Tabla 10.1 Funciones de los pines del conector RS232 DB9

Un dato  a tener muy en cuenta es la velocidad de transmisión, que es la cantidad de información enviada por la línea de transmisión en la unidad de tiempo. Se mide en Baudios y es proporcional a los Bits/segundo (bps). Las velocidades de transmisión normalizadas para los puertos COM son: 75, 150, 300, 600, 1200, 2400, 4800, 9600, etc. Baudios.
Otra cuestión fundamental se refiere a los niveles de voltaje de la norma:
  • Los datos se transmiten con lógica negativa, es decir, un voltaje positivo representa 0, mientras que un voltaje negativo representa 1.
  • El 0L se encuentra entre +3 y +15V.
  • El 1L se encuentra entre -3 y -15V.
  • Los voltajes más usados son +12V para el 0L y -12V para el 1L.
  • Cuando un puerto no está transmitiendo mantiene el terminal de transmisión en 1L (-12V).

Circuito integrado MAX232

El MAX232 es un estándar en la industria y se emplea como interfaz entre los niveles TTL y RS232 y requiere únicamente una fuente de +5V para su operación. Para generar los niveles de +12V y -12V necesita 4 capacitores de 1,0 uF. Dispone de dos entradas TTL con salida RS232, así como dos entradas RS232 con salida TTL (figuras 10.1 y 10.2). El MAX232 puede realizar la transferencia de datos a una velocidad máxima de 120 kbps.
Pinout max232
Figura 10.1 Pinout (patillaje) y valores de los capacitores del MAX232

Polarización max232
Figura 10.2 Circuito típico de operación MAX232 (note la polaridad de los capacitores)

Librería UART de mikroC PRO para el módulo USART

El módulo USART se incluye en los microcontroladores PIC16F88, 16F628A y 16F877A (algunos microcontroladores PIC, como el 16F84A, no tienen este módulo). La biblioteca UART de mikroC PRO proporciona las herramientas para hacer que el empleo de este módulo en modo asincrónico (full-dúplex) sea tan sencillo como nunca lo había sido hasta ahora. Esto permite la comunicación con otros dispositivos a través del protocolo RS232. En la tabla 10.2 se pueden ver las funciones incorporadas con sus características más sobresalientes.
Funciones de la librería uart para usart de los microcontroladores pic
Tabla 10.2 Funciones de la librería UART para el módulo USART

Ejemplo en mikroC PRO con el PIC16F88

Estos ejemplos corresponden al PIC16F88. El código fuente para los microcontroladores PIC16F628A y 16F877A se encuentra en las carpetas correspondientes que acompañan a este libro.

Ejemplo-USART_01.c: Lo que escriba por el teclado del computador se visualizará en el módulo LCD y será enviado de vuelta al computador, por lo que se visualizará también en el monitor. Cuando se hayan ingresado 16 caracteres el LCD se borrará y empezará nuevamente en la primera fila y primera columna (figuras 10.7.1, 10.7.2 y 10.7.3).

Comunicación por medio del MAX232 y el USART de los microcontroladores PIC
Figura 10.7.1 Comunicación con el computador por medio del MAX232
//USART_01.c
//Declaración de las 12 variables necesarias para la conexión
//del módulo LCD.
sbit LCD_RS at RA4_bit;
sbit LCD_EN at RA6_bit;
sbit LCD_D4 at RA0_bit;
sbit LCD_D5 at RA1_bit;
sbit LCD_D6 at RA2_bit;
sbit LCD_D7 at RA3_bit;
sbit LCD_RS_Direction at TRISA4_bit;
sbit LCD_EN_Direction at TRISA6_bit;
sbit LCD_D4_Direction at TRISA0_bit;
sbit LCD_D5_Direction at TRISA1_bit;
sbit LCD_D6_Direction at TRISA2_bit;
sbit LCD_D7_Direction at TRISA3_bit;
// Fin de declaración de variables de conexión.
char uart_rd, contador=0;
void main(){
OSCCON=0x60;                //Oscilador interno a 4MHz (TCI=1 us).
while (OSCCON.IOFS==0);  //Esperar mientras el oscilador está inestable.
ANSEL=0x00;                 //Bits AN6:AN0 como E/S digital.
Lcd_Init();                 //Inicializa el LCD.
Lcd_Cmd(_LCD_CLEAR);        //Borra el display.
Lcd_Cmd(_LCD_CURSOR_OFF);   //Apaga el cursor.

UART1_Init(9600);           //Inicializa el USART a 9600 bps. 
Delay_ms(100);              //Espera a que el USART se estabilice.
UART1_Write_Text("Hola.");  //Envía este texto a través del USART.

while (1){ 
 if (UART1_Data_Ready()){   //Si se recibe un dato,
  uart_rd = UART1_Read();   //lee el dato recibido,
  Lcd_Chr_CP(uart_rd);      //lo presenta en el LCD,
  UART1_Write(uart_rd);     //y lo envía a través del USART.

  contador++;
  if(contador==16){         //Detecta el ingreso de 16 caracteres,
   contador=0;              //reinicia el contador,
   Delay_1sec();            //espera 1 segundo,
   Lcd_Cmd(_LCD_CLEAR);     //y borra el LCD.
  }
 }
}
}

Temas relacionados que también encontrarás en este libro:

  • Conexión de los microcontroladores PIC al computador con el MAX232
  • Otros ejemplos de programación del USART

 


eBook en formato PDF "Cómo programar microcontroladores PIC"

Guía básica para programar microcontroladores PIC en mikroC PRO. Disponible en formato PDF. A la venta por tan sólo US$12.00

¡Cómpralo ya!