void puthex (unsigned int a) //converte para hexadecimal
{
int base = 16; //hexadecimal
int potencia = 16; //primeira potencia para verificação 16^1
int i; //contador
unsigned int b = a;
uart_putcharA('0');
uart_putcharA('x');
if (a != 0)
{
//Descobre a maior potencia de 'a' na base 16
while (a/potencia != 0)
{
potencia *= base;
}
potencia /= base;
//Imprime o valor
for (i=0; potencia >= 1; i++)
{
b = a/potencia;
a = a%potencia;
b += 0x30; //passa pra ascii
if (b > 0x39)
b += 7;
uart_putcharA((char)b); //Imprime no hyperterminal
potencia /= base; //Atualiza potencia
}
}
else
{
uart_putcharA('0');
}
}