Forum: Mikrocontroller und Digitale Elektronik Hex-Ausgabe mit putchar???


von Helge (Gast)


Lesenswert?

Ist es irgendwie möglich mit putchar ein hexwert auszugeben?Hatte es 
vorher mit:
k=12
printf("%02X",k)
es wurde 0C ausgegeben
Nun habe ich den tollen mega128.Wie kann ich der USART1 solch einen Wert 
entlocken?
Gruß Helge

von Helge (Gast)


Lesenswert?

Hallo
Hab mir was gebastelt.Vielleicht gehts ja noch einfacher.

k=12; //dec wert zur hex ausgabe
a=k>>4;
b=k<<4;b=b/16;
if(a>9)a=a+7;
if(b>9)b=b+7;
a=a+48;b=b+48;
putchar(a);putchar(b);

von Reiner (Gast)


Lesenswert?

gebe es doch in ein char array aus.

char buf[3];   // immer ein mehr aus Du brauchst, da 0x00 angehängt wird

sprintf("%02X",k)
putchar(buf[0]);
putchar(buf[1]);


ist aber sicherlich mehr code als Deiner.

Reiner

von Reiner (Gast)


Lesenswert?

ach mist

sprintf(buf,"%02X",k)
putchar(buf[0]);
putchar(buf[1]);

von Helge (Gast)


Lesenswert?

Hallo Reiner
Ich benutze den Mega 128 mit 2 Schnittstellen.Wenn ich die zweite 
Schnittstelle benötige will mein Codevision nur putchar1. Habs mal mit 
sprintf1 probiert,klappt leider auch nicht.Mit der USART0 gehts.Aber wie 
es immer so ist benötige ich die USART1.
Aber vielen Dank für die Bemühungen.Vielleicht stelle ich mich auch zu 
blöd an.
Gruß Helge

von Reiner (Gast)


Lesenswert?

aber das sprintf ist total unabhängig von der io. Es ist völlig egal ob 
Du anschliessend auf die UART0, UART1, LCD, MMC oder sonst noch was 
ausgibts.

sprintf schreibt nur in das ram, nicht zur io


sprintf(buf,"%02X",k)
putchar1(buf[0]);
putchar1(buf[1]);



Reiner

von Sascha Weitkunat (Gast)


Lesenswert?

Wieso für sowas printf bemühen?

itoa(k, buf, 16);

sollte es auch tun, nun heisst es Codegröße vergleichen.

von Reiner (Gast)


Lesenswert?

spielt das ne Rolle beim 128er?

Irgendwo wird er die sprintf() brauchen und dann ist es eh egal

Reiner

von Helge (Gast)


Lesenswert?

Ich probiere eure Tip´s heute Abend mal aus.Vielen Dank!Muß leider erst 
mal mein Atmel alleine lassen
Gruß Helge

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.