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...
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...
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.