www.mikrocontroller.net

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


Autor: Holger (Gast)
Datum:
Angehängte Dateien:

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

Autor: Frank Linde (Gast)
Datum:

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

Autor: Frank Linde (Gast)
Datum:

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

Gruß, Frank

Autor: Frank Linde (Gast)
Datum:

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

Autor: Stefan Kleinwort (Gast)
Datum:

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

Autor: Holger (Gast)
Datum:

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

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.