Forum: Compiler & IDEs Gepackte BCD-Zahl inkrementieren


von anfaenger (Gast)


Lesenswert?

Hallo!

Wie kann ich in C am einfachsten gepackte (also 8Bit) BCD-Zahlen 
erhöhen? In Assembler gibt es ja diese Korrekturanweisung DA oder DAA um 
nach einer Inkrementierung das Ergebnis korrekt in BCD darzustellen. 
Gibts sowas ähnliches auch in C oder muss ich das hier zu Fuß machen?

Es geht um die Programmierung einer einfachen Uhr, die aus diversen 
Gründen in BCD zählen soll (jeweils ein Byte für Sekunden, Minuten und 
Stunden).

Gruß, Stefan

von Günter R. (galileo14)


Lesenswert?

Ich würde die Zeiten in binär führen, da inkrementieren und nur für 
Anzeigezwecke die Binärwerte in BCD wandeln.

von Siggi (Gast)


Lesenswert?

Die Assemblerbefehle DA und DAA von C aus aufrufen. Welchen Compiler 
setzt du ein?

von anfaenger (Gast)


Lesenswert?

ich verwende avr-gcc (aktuelle version). hab mich aber glaub ich geirrt. 
beim avr gibts den da befehl doch nicht. kenne das nur vom 8051 und da 
klappt das super :)

aber ist auch nicht so tragisch. die uhrzeit wird ja nur einmal pro 
sekunde erhöht.

von (prx) A. K. (prx)


Lesenswert?

if ((++byte & 0x0F) == 0x0A)
  byte += 0x06;

von anfaenger (Gast)


Lesenswert?

Hey, cool! Das ist schön kurz :-)

Vielen Dank!

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.