	<sect1 id="uart" xreflabel="uart">
		<title>M&oacute;dulo UART</title>
		<para> Muestra las funciones para poder trabajar con el m&oacute;dulo UART Interno de los PIC.Antes de usar este m&oacute;dulos se debe definir la frecuencia usar con el comando.
		</para>
		<para>
		<screen>
	#define	FOSC_HZ	20000000
		</screen>
		</para>

		<para>Se han realizado algunas definiciones como:</para>

		<para>
		<screen>
	#include &lt;uart.h&gt;

	SET_1200_8N1
	SET_2400_8N1
	SET_4800_8N1
	SET_9600_8N1
	SET_19200_8N1
	SET_38400_8N1
	SET_57600_8N1
	SET_115200_8N1
		</screen>
		Estas definiciones pueden ser usandas en la funci&oacute;n uart_open.
		</para>

		<sect2 id="uartopen" xreflabel="uart_open">
		<title>uart_open</title>
		<para>Configura el puerto Serie Asincrono</para>
		<screen>
	void uart_open( BYTE STATUS_SPBRG, BYTE STATUS_SPEED);

	ejemplo:
	uart_open(SET_9600_8N1);
		</screen>
		</sect2>

		<sect2 id="uartkbhit" xreflabel="uart_kbhit">
		<title>uart_kbhit</title>
		<para>Devuelve <keycap>1</keycap> si hay un byte en el buffer de entrada del puerto Serie Asincrono</para>
		<screen>
	BYTE uart_kbhit(void);
		</screen>
		</sect2>

		<sect2 id="uartgetc" xreflabel="uart_getc">
		<title>uart_getc</title>
		<para>Lee un byte en el buffer de entrada del puerto Serie As&iacute;ncrono, si no hay ninguno espera a que exista uno, la funci&oacute;n es bloqueante</para>
		<screen>
	char uart_getc(void);
		</screen>
		</sect2>

		<sect2 id="uartputc" xreflabel="uart_putc">
		<title>uart_putc</title>
		<para>Escribe un <keycap>dato</keycap> en el puerto Serie As&iacute;ncrono</para>
		<screen>
	void uart_putc(char dato);
		</screen>
		</sect2>

		<sect2 id="uartputs" xreflabel="uart_puts">
		<title>uart_puts</title>
		<para>Escribe un cadena de <keycap>datos</keycap> en el puerto Serie As&iacute;ncrono</para>
		<screen>
	void uart_puts(char *datos);
		</screen>
		</sect2>

		<sect2 id="uartclose" xreflabel="uart_close">
		<title>uart_close</title>
		<para>Cierra el puerto Serie As&iacute;ncrono</para>
		<screen>
	void uart_close(void);
		</screen>
		</sect2>

		<sect2 id="ejemplouart" xreflabel="Ejemplo Uart">
		<title>Ejemplo de UART</title>
		<para>
		para compilar necesitas los siguientes comandos
		</para>
		<para>
		<screen>
Ejemplo de compilacion : ./compila.sh ej_uart 16f877a
		</screen>
		</para>
		<para>
		ej_uart.c
		</para>
		<screen>
#include &lt;pic/p16f877a.h&gt;

#define FOSC_HZ 20000000

#include &lt;uart.h&gt;
#include &lt;delayms.h&gt;

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;	
}
		</screen>
		</sect2>
	</sect1>
