Módulo UART

Muestra las funciones para poder trabajar con el módulo UART Interno de los PIC.Antes de usar este módulos se debe definir la frecuencia usar con el comando.

	#define	FOSC_HZ	20000000
		

Se han realizado algunas definiciones como:

	#include <uart.h>

	SET_1200_8N1
	SET_2400_8N1
	SET_4800_8N1
	SET_9600_8N1
	SET_19200_8N1
	SET_38400_8N1
	SET_57600_8N1
	SET_115200_8N1
		
Estas definiciones pueden ser usandas en la función uart_open.

uart_open

Configura el puerto Serie Asincrono

	void uart_open( BYTE STATUS_SPBRG, BYTE STATUS_SPEED);

	ejemplo:
	uart_open(SET_9600_8N1);
		

uart_kbhit

Devuelve 1 si hay un byte en el buffer de entrada del puerto Serie Asincrono

	BYTE uart_kbhit(void);
		

uart_getc

Lee un byte en el buffer de entrada del puerto Serie Asíncrono, si no hay ninguno espera a que exista uno, la función es bloqueante

	char uart_getc(void);
		

uart_putc

Escribe un dato en el puerto Serie Asíncrono

	void uart_putc(char dato);
		

uart_puts

Escribe un cadena de datos en el puerto Serie Asíncrono

	void uart_puts(char *datos);
		

uart_close

Cierra el puerto Serie Asíncrono

	void uart_close(void);
		

Ejemplo de UART

para compilar necesitas los siguientes comandos

Ejemplo de compilacion : ./compila.sh ej_uart 16f877a
		

ej_uart.c

#include <pic/p16f877a.h>

#define FOSC_HZ 20000000

#include <uart.h>
#include <delayms.h>

int main (void)
{
	char c=0;
	char INTRO[6]="HOLA\n";
	char FIN[6]="FIN\n";

	delayms(100);
	
	uart_open(SET_9600_8N1);

	uart_set_baudrate(19200);

	uart_puts(INTRO);
	while(c!=13)
	{
		if(uart_kbhit()==1)
		{
			c=uart_getc();
			uart_putc(c);
		}
	}
	uart_puts(FIN);
	uart_close();
	
	return 0;	
}