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