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