Forum: Mikrocontroller und Digitale Elektronik wie geht Multiplizieren mit Hardware?


von Holger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebes Forum,

ist hier jemand, der die App Note des AVR in Bezug auf die Hardware
Multiplizierung
mal verständlich erklären kann? Ich hab wohl in der Schule nicht
aufgepasst!
Um eine Ausgabe auf LCD anzupassen versuche ich den ADC Wert mit 19 zu
multiplizieren
und hinterher mit 16 (weil es so schön durch schieben geht) zu
dividieren.
Nun hab ichs versucht, wie man es dezimal macht:

z.B.  25 X 5 = 125     -> 5 X 5 = 25   +   20 X 5 = 100 ist zusammen 125
! ->stimmt

in Hex umgesetzt funktioniert meine Routine nich!

Hier im Forum steht ja z.B. "Schau in die Codesammlung 8X16 bit"
Die Suchfunktion zeigt mir aber nichts. (Kann sein, dass ich auch zum
Suchen zu blöd bin
- dann lasst mich halt einfach doof sterben) ansonsten schon mal Danke
für eine Aufklärung.

Gruss Holger

von Frank Linde (Gast)


Lesenswert?

Hallo Holger,

die Multiplikation ist so schon in Ordnung, aber die Addition der
Teilergebnisse am Ende der Routine ist falsch. Du berücksichtigst den
Übertrag nicht ($F6 + $1E = $14 + Carry Flag).

Gruß, Frank

von Frank Linde (Gast)


Lesenswert?

<Boing!> Aua, was für'n Blödsinn! Man sollte halt genau hinschauen,
bevor man etwas schreibt. Entschuldige, bitte.

Gruß, Frank

von Frank Linde (Gast)


Lesenswert?

Dein Fehler ist, dass Du nicht stellenrichtig addierst. Die $03 x $0A
sind bei der Multiplikation zwar $1E, müssen aber als $1E00 in die
Addition eingehen.

Gruß, Frank

von Stefan Kleinwort (Gast)


Lesenswert?

Das Problem ist: Dein Ergebnis ist 24 Bit breit!
Probier mal folgendes:

;******************************************************************
mul  Lbyte, fakt    ;Low Byte x Faktor
mov  r24,  r0    ;Ergebnis in ZRP sichern
mov  r25,  r1
mov     r26,#0

mul  Hbyte,  fakt    ;High Byte x Faktor
add  r25,  r0    ;Ergebnis zu Erg. der ersten
adc  r26,  r1    ;Multiplikation addieren

;Ergebnis in R24 (low bis R26 (hi)

Stefan

von Holger (Gast)


Lesenswert?

Danke Euch!!!

Die Idee mit dem Stellenrichtigen addieren hätte mir auch kommen
können. Manchmal hat mann eben Brett vor Kopf ! Autsch!

Jetzt funktionierts.

Gruss Holger

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.