mikrocontroller.net

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


Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: Dummy (Gast)
Datum:

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

Das war ja unglaublich schwer ;)

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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)"

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Also jetzt mach mal einen Punkt.

Hier hast du ihn:
.

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

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll das etwa eine Entschuldigung sein?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.