Ist die falsche Fragestellung. Hier soll kein int in ein char (die beiden Typen sind equivalent) sondern in einen Hex-String umgewandelt werden. In etwa so:

Code:
static const unsigned char hex[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char a = 'A';   // int a = 65;
printf("%c%c\n", hex[a/16], hex[a%16]);
Das ist allerdings Linux-C. Keine Ahnung, ob es auf dem AVR so kompiliert.