Forum: Mikrocontroller und Digitale Elektronik 16 Bit BCD Addition


von Uwe Nagel (Gast)


Lesenswert?

Suche für Pic16Fxx Controller eine Routine zur Addition von 2
4-stelligen BCD Zahlen.
Genau genommen ist das zu allgemein In meinem speziellen Fall reicht
es, wenn ich eine 2-stellige zu einer 3-stelligen addieren kann. Das
Ergebnis wird also nie größer als 999.
Irgendwie will mir keine einfache Lösung einfallen...

von OliverK (Gast)


Lesenswert?

Lösung? Warst Du nicht in der Schule?

Du fängst mit der Einerstelle an und addierst sie. Wenn das Ergebnis >=
10 ist, mußt Du bei der Addition der Zehnerstelle zusätzlich noch eine
1 aufaddieren. Für das Ergebis der Einerstelle mußt die 10 dann
abziehen. usw...

von Peter D. (peda)


Lesenswert?

Meine Erfahrung geht dahin, das es wesentlich einfacher ist, intern
immer im Binärsystem zu rechen und nur zur Eingabe bzw. Ausgabe in das
Dezimalsystem umzurechen.

Der PIC hat soweit ich weiß, ja nicht mal einen DAA Befehl wie der
8051, d.h. Du würdest ihn nur quählen, wenn Du ihm Dezimalzahlen
aufzwingst.

Wie man Zahlensysteme umwandelt, hast Du doch in der Schule gelernt.

Da ein MC üblicher Weise Divisionen nicht so mag, nimmt man da einfach
die Subtraktionsmethode. Max 10 Subtraktionen je Digit gehen ja immer
noch schneller als eine Division /10 mit Rest.



Peter

von Uwe Nagel (Gast)


Lesenswert?

Hätte ja sein können, jemand kennt eine bequeme Methode zur BCD-Addition
mit dem PIC.

Meine Zahlen, die ich addieren will, liegen nun mal in BCD vor und die
Summe soll angezeigt werden, natürlich nicht in binär.

Da es einen DAA Befehl eben nicht gibt, ist die Addition von gepackten
BCD-Zahlen nicht gerade trivial, wenngleich ich den zugrundeliegenden
Algorithmus durchaus in der ersten oder zweiten Klasse gelernt habe.

Also werde ich ein wenig hin und her wandeln, ist wohl doch das
Einfachste...

Uwe

von OliverK (Gast)


Lesenswert?

Morgen Uwe,
bequem ist es nur, wenn man gar nichts macht. Ist Dir schon mal
aufgefallen, daß alles, was der Mensch haben möchte, ungemein schwierig
zu bekommen ist?

Entschuldige mein Geschwafel am Morgen, ich sitze wieder in der Fa.
Seit 7 Tagen kloppe ich 15 Stunden-Tage.

Wenn die BCDs gepackt sind, mußt Du halt das ausblenden (z.B. AND
0x0F), was Du nicht brauchst. Und oder das Dir hinschieben, was Du
brauchst.
Wie man das bei einem PIC macht, kann ich Dir allerdings nicht sagen.
Ich hatte das Glück, von Anfang an mit einem AVR arbeiten zu dürfen.

Grüße
Oliver

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.