\section{Module UART2}
Cette bibliothèque nous aidera à convertir les nombres binaires au format texte dans une représentation DÉCIMAL y HEXADÉCIMAL.

\verb! #include <uart2.h> !
\subsection{puth}
transforme le chiffre hexadécimal (un demi octet) en 1 caractère ASCII et l'envoie.

Par exemple si tu as l'hexadécimal 0x4A et tu prends le nombre "A" (soit 10 en décimal - 1010 en binaire), "puth" le transforme en caractère ’A’ et l'envoie.

Transforme le nombre "0" en caractère ’0’. \\
Transforme le nombre "1" en caractère ’1’. \\
Transforme le nombre "2" en caractère ’2’. \\
... \\
Transforme le nombre "A" en caractère ’A’. \\
Transforme le nombre "B" en caractère ’B’. \\
... \\
Transforme le nombre "F" en caractère ’F’. \\

Le caractère généré est envoyé utilisant la function miputc.

void puth(void (*miputc)(char),char a);
\subsection{puthex}
transforme un nombre hexadécimal (un octet) en 2 caractères ASCII y l'envoie.

Par exemple, si tu as l'hexadécimal 0x4A, puthex prend le nombre "4" le transforme en caractère ’4’ et l'envoie avec miputc, prend le nombre "A" le transforme en caractère ’A’ et l'envoie avec miputc.

$0x4A \Rightarrow miputc(’4’); $\\
        miputc(’A’);

void puthex(void (*miputc)(char),char nb);
\subsection{putint}
transforme un nombre entier de 16 bits en utilisant sa représentation hexadécimale de 4 caractères ASCII et ensuite les envoie un par un.

Par exemple, si tu as le nombre 1030, putint le transforme en HEXADECIMAL
"0x0406", putint prend ’0’,’4’,’0’,’6’ et les envoie avec miputc.

$1030 \Rightarrow 0x0406 \Rightarrow miputc(’0’);$ \\
miputc(’4’); \\
miputc(’0’); \\
miputc(’6’); \\
void putint(void (*miputc)(char),int num);
\subsection{geth}
Lit un caractère ASCII et le transforme en un chiffre hexadécimal.
Par exemple si tu lis le caractère "A" , "geth" le transforme en le nombre 10 en décimal codé en
hexadécimal.

Transforme le caractère ’0’ en nombre 0. \\
Transforme le caractère ’1’ en nombre 1. \\
Transforme le caractère ’2’ en nombre 2. \\
... \\
Transforme le caractère ’a’ ou ’A’ en nombre 10 (0x0a). \\
Transforme le caractère ’b’ ou ’B’ en nombre 11 (0x0b). \\
... \\
Transforme le caractère ’f’ ou ’F’ en nombre 15 (0x0f). \\
n'importe quel autre nombre est converti en 0xff \\
Pour obtenir le caractère on utilise la fonction migetc. \\
char geth(char (*migetc)(void));
\subsection{gethex}
Lit 2 caractères ASCII y les transforma en nombre hexadecimal.

Par exemple, si tu as deux caractères ASCII comme "4" et "A", gethex prend le caractère "4" et le transforme en nombre 0x40 et prend le caractère "A" et le transforme en nombre 0x0A puis les regroupe en 0x4A.

miputc(’4’); \\
$miputc(’A’); \Rightarrow 0x4A$ \\
char gethex(char (*migetc)(void));
\subsection{getint}
Lee 4 caractères ASCII que représentent un nombre en hexadecimal et les transforme en un nombre entier
de 16 bit.

Par exemple, si tu as les caractères ’0’,’4’,’0’ y ’6’, getint retourne le nombre 1030. \\
miputc(’0’); \\
miputc(’4’); \\
miputc(’0’); \\
miputc(’6’); => 0x0406 => 1030 \\
int getint(char (*migetc)(void));
\subsection{getd}
Lit un caractère ASCII et le transforme en un seul chiffre décimal.

Par exemple si tu lis le caractère "2" , "getd" le transforme en nombre 2 en décimal codé en binaire
BCD.

Transforme le caractère ’0’ en nombre 0. \\
Transforme le caractère ’1’ en nombre 1. \\
Transforme le caractère ’2’ en nombre 2. \\
... \\
Transforme le caractère ’9’ en nombre 9. \\
n'importe quel autre nombre est converti en 0xff \\
Pour obtenir le caractère on utilise la fonction migetc.

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

\subsection{Ejemplo de UART2}
pour compiler les commandes suivantes sont nécessaires :

Exemple de compilation : ./compila.sh ej\_uart2 16f877a

ej\_uart2.c
\verbatiminput{source/ej_uart2.c}