Módulo UART2

Esta biblioteca nos ayudará a convertir números a binarios a formatos de de texto en representación DECIMAL y HEXADECIMAL.

	#include <uart2.h>
		

puth

transforma la cifra hexadecimal (medio octeto) en 1 carácter ASCII y lo envia.

Por ejemplo si tienes el hexadecimal 0x4A y tomas el número "A" (osea 10 en decimal - 1010 en binario), "puth" lo transforma en el caracter 'A' y lo envia.

	Transforma el numero "0" en el caracter '0'.
	Transforma el numero "1" en el caracter '1'.
	Transforma el numero "2" en el caracter '2'.
	...
	Transforma el numero "A" en el caracter 'A'.
	Transforma el numero "B" en el caracter 'B'.
	...
	Transforma el numero "F" en el caracter 'F'.
		

El caracter generado es enviado usando la función miputc.

	void puth(void (*miputc)(char),char a);
		

puthex

transforma un número hexadecimal (un octeto) en 2 caracteres ASCII y lo envia.

Por ejemplo, si tienes el hexadecimal 0x4A, puthex toma el número "4" lo transforma en el caracter '4' y lo envia con miputc, toma el numero "A" lo transforma en el caracter 'A' y lo envia con miputc.

	0x4A	=>	miputc('4');
			miputc('A');
		

	void puthex(void (*miputc)(char),char nb);
		

putint

transforma un número entero de 16 bit en su representación hexadecimal de 4 caracteres ASCII y luego los envia uno por uno.

Por ejemplo, si tienes el número 1030, putint lo transforma en su representación en HEXADECIMAL "0x0406", putint toma '0','4','0','6' y los envia con miputc.

	1030 =>	0x0406	=>	miputc('0');
				miputc('4');
				miputc('0');
				miputc('6');
		
	void putint(void (*miputc)(char),int num);
		

geth

Lee un carácter ASCII y lo transforma en una cifra hexadecimal.

Por ejemplo si lees el caracter "A" , "geth" lo transforma en el numero 10 en decimal codificado en binario BCD.

	Transforma el caracter '0' en el número 0.
	Transforma el caracter '1' en el número 1.
	Transforma el caracter '2' en el número 2.
	...
	Transforma el caracter 'a' ó 'A' en el número 10 (0x0a).
	Transforma el caracter 'b' ó 'B' en el número 11 (0x0b).
	...
	Transforma el caracter 'f' ó 'F' en el número 15 (0x0f).

	//cualquier otro numero se convierte 0xff
		

Para obtener el caracter se utiliza la función migetc.

	char geth(char (*migetc)(void));
		

gethex

Lee 2 caracteres ASCII y transforma en número hexadecimal.

Por ejemplo, si tienes dos caracteres ASCII como "4" y "A", gethex toma el caracter "4" y lo transforma en el número 0x40 y toma el caracter "A" y lo transforma en el número 0x0A luego los une en 0x4A.

	miputc('4');
	miputc('A');	=>	0x4A
		

	char gethex(char (*migetc)(void));
		

getint

Lee 4 caracteres ASCII que representan un número en hexadecimal y los transforma un número entero de 16 bit.

Por ejemplo, si tienes los caracteres '0','4','0' y '6', getint devuelve el número 1030.

	miputc('0');
	miputc('4');
	miputc('0');
	miputc('6');	=>	0x0406	=>	1030 	
		

	int getint(char (*migetc)(void));
		

getd

Lee un carácter ASCII y lo transforma en una sola cifra decimal.

Por ejemplo si lees el caracter "2" , "getd" lo transforma en el numero 2 en decimal codificado en binario BCD.

	Transforma el caracter '0' en el número 0.
	Transforma el caracter '1' en el número 1.
	Transforma el caracter '2' en el número 2.
	...
	Transforma el caracter '9' en el número 9.

	//cualquier otro numero se convierte 0xff
		

Para obtener el caracter se utiliza la función migetc.

	char geth(char (*migetc)(void));
		

Ejemplo de UART2

para compilar necesitas los siguientes comandos

Ejemplo de compilación : ./compila.sh ej_uart2 16f877a
		

ej_uart2.c

#include <pic/p16f877a.h>

#define FOSC_HZ 20000000

#include <uart.h>
#include <uart2.h>

int main (void)
{
	char a=0x4a;
	int  x=1030;

	delayms(100);
	uart_open(SET_9600_8N1);
	uart_puts("UART2\n");

	puthex(uart_putc,a);
	uart_putc('\n');
	putint(uart_putc,x);
	uart_putc('\n');

	uart_puts("FIN\n");

	delayms(100);//dar un poco de tiempo para que se envie el ultimo caracter
	uart_close();

	return 0;	
}