Sie sind auf Seite 1von 4

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.

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).

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.
}
}
}
}