www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16 Bit BCD Addition


Autor: Uwe Nagel (Gast)
Datum:

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

Autor: OliverK (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Uwe Nagel (Gast)
Datum:

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

Autor: OliverK (Gast)
Datum:

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

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.