Forum: Mikrocontroller und Digitale Elektronik packed BCD in eine HEX-Zahl wandeln (Gcc)


von Gerd (Gast)


Lesenswert?

Controller: Atmega8
Compiler: Winavr

Hallo,

ich suche eine einfache Möglichkeit in einem C-Programm eine 8-Bit 
(packed) Bcd-Zahl (2 Stellen) in eine Hex-Zahl zu wandeln.
Ich lese über zwei BCD-Sxhalter ein Bxte ein. Dieser Wert soll dann die 
Verzögerungszeit für ein paar Ausgänge sein.
Kann mir jemand einen Tipp geben?

Gruß Gerd

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Probier's mal damit:
1
x = (bcd >> 4) * 10 + bcd & 0x0F;

von Dummy (Gast)


Lesenswert?

wert = (bcd >> 4) * 10 + (bcd & 0x0F);

Das war ja unglaublich schwer ;)

von Uhu U. (uhu)


Lesenswert?

Ich würde dir ja gerne eine Tipp geben, verstehe aber beim besten Willen 
nicht, was du meinst.

Kannst du das mal an einem Beispiel und ohne entstellende Tippfehler 
ausführen?

von Gerd (Gast)


Lesenswert?

>>wert = (bcd >> 4) * 10 + (bcd & 0x0F);

>>Das war ja unglaublich schwer ;)

Hmm, dann habe ich in der Ausgabe noch einen Fehler, dass hatte ich als 
letztes probiert. Da ist noch der Wurm drin...

Ich danke euch beiden. Dachte, dass ich da was falsch mache.

Gruß Gerd

@seltsamer Kauz
Welche Tippfehler muss ich einfügen, damit du nicht nur trollst?

von Simon K. (simon) Benutzerseite


Lesenswert?

Wie sieht denn deine Ausgabefunktion aus?

Meiner Meinung nach hat aber BCD nix mit HEX zu tun. BCD ist ja nur eine 
Darstellungsart einer Zahl im Speicher, während Hexadezimalsystem eher 
ein Zahlensystem ist um die Zahlen für Menschen lesbarer zu machen.

von Gerd (Gast)


Lesenswert?

Naja, Ausgabefunktion ist übertrieben. Ich habe auf der Platine vier 
LEDs, auf die ich zum Test Werte ausgeben kann. Und da ich nicht die 
Werte sah, die ich erwartete, habe ich hier nachgefragt.

von Gerd (Gast)


Lesenswert?

Okay, ich habe den Fehler gefunden. Man sollte nicht 8 Stunden 
ununterbrochen    basteln und dann noch glauben, dass man das Programm 
aus dem Stegreif schreibt... Vielen Dank!

von Uhu U. (uhu)


Lesenswert?

Ich kann mich Simon nur anschließen. µC rechnen im Zahlensystem zur 
Basis 2 nicht 16. Und wenn du dann auch noch einen Satz abläßt wie

> Ich lese über zwei BCD-Sxhalter ein Bxte ein.

dann mußt du dich wirklich nicht wundern, daß man u.U. nicht gleich 
dahinterkommt, was du meinst. Dazu die unklare inhaltliche 
Beschreibung... das hat also nichts mit trollen zu tun, sondern ist von 
dir verursacht.

von Gerd (Gast)


Lesenswert?

O.K. wenn ich mich nicht klar ausgedrückt habe. Schließlich bin ich 
einfacher Bastler und kein höher gebildeter Mensch. Dass ein µC im 
binären Zahlensystem arbeitet, weiß ich. Ich hatte bloß nach langer 
Bastelzeit ein Brett vor dem Kopf und das wurde mir von Andreas 
erfolgreich entfernt.
Aber du hast Recht, ich werde dir meine Fragen schicken, damit du sie 
forengerecht ausarbeiten kannst. Ich will ja nicht wieder so angemaunzt 
werden. In Ordnung? ;-P
Gruß Gerd

von Uhu U. (uhu)


Lesenswert?

Also jetzt mach mal einen Punkt. Ich habe dich in keiner Weise 
'angemaunzt', sondern dich ganz höflich gebeten, klarzustellen, was du 
meinst.

Hier kannst du meinen Beitrag nochmal nachlesen: 
Beitrag "Re: packed BCD in eine HEX-Zahl wandeln (Gcc)"

von Gerd (Gast)


Lesenswert?

>Also jetzt mach mal einen Punkt.

Hier hast du ihn:
1
.

Ich will keinen Streit. Es war ein Missverständnis und damit kann der 
Thread beendet werden. Viel Spaß im Forum, Uhu

von Uhu U. (uhu)


Lesenswert?

Soll das etwa eine Entschuldigung sein?

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.