Forum: Mikrocontroller und Digitale Elektronik BCD Wert Inkrementieren


von Hallo (Gast)


Lesenswert?

Hallo,

ich habe ein Problem und zwar muss ich in Asm einen BCD Wert um 1 
erhöhen wie mache ich das??

Gruß

von Peter D. (peda)


Lesenswert?

Hängt von Assembler und vom Target ab.


Peter

von Hallo (Gast)


Lesenswert?

Oh stimmt das hätte ich dazuschreiben sollen!

Also ATmega8 und AVR Studio

von Peter D. (peda)


Lesenswert?

AVR Studio - Help - Tools - AVR Assembler - Instructions.


Peter

von Hallo (Gast)


Lesenswert?

Ähm ich glaube ich bin falsch verstanden worden.
Ich möchte eine BCD-Zahl um 1 erhöhen, und das geht nicht mit INC weil 
dann kommt quatsch raus.

von Hallo (Gast)


Lesenswert?

Hat wirklich keiner ne Ahnung wie ich das Lösen könnte?

von Bernadette (Gast)


Lesenswert?

Teile die BCD-Zahl in zwei Byte , INC das LOW-Byte, prüfe ob größer 9, 
falls ja, dann setze dieses Byte=0 und erhöhe das HIGH-Byte.

Füge die beiden Bytes wieder richtig zu einem BCD-Byte zusammen.

B.

von Uwe .. (uwegw)


Lesenswert?

Hallo schrieb:
> Ich möchte eine BCD-Zahl um 1 erhöhen, und das geht nicht mit INC weil
> dann kommt quatsch raus.

Du musst danach noch den ggf. aufgetretenen Übertrag beachten und dann 
in die nächste Stelle befördern. Stichwort Half-Carry-Flag...

von Bernadette (Gast)


Lesenswert?

Du kannst aber auch das Byte einfach mit INC erhöhen.

Prüfe ob die rechten 4 Bit >9.

Falls ja, dann zähle noch 6 dazu.

von Peter (Gast)


Lesenswert?


von Otto (Gast)


Lesenswert?

Es liegt wohl eher daran, dass du uns über vieles im Unklaren lässt.

Selbstverständlich funktioniert es mit "inc", solange die BCD-Stelle 
(Nibble) kleiner 9 ist. Über 9 muss ein Übetrrag auf die nächste Stelle 
erfolgen.

von Hallo (Gast)


Lesenswert?

Gut Danke

von Peter D. (peda)


Lesenswert?

BCD sind eben nur 4 Bits eines Bytes.

Es sein denn, Du meinst packed BCD.

Das verwendet man heutzutage eigentlich nicht mehr. Die meisten 
Programmiersprachen rechnen direkt Dual und wandeln erst bei Eingabe 
bzw. Ausgabe nach dezimal (BCD oder ASCII).

Der 8051 hatte noch eine DAA-Befehl, habe ich aber nie benötigt.
Der AVR hat aber noch das H-Flag. Damit kannst Dir das ausgestorbene 
packed BCD basteln, wenns Dir Spaß macht.


Peter

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.