Zwei 16Bit Zahlen multiplizieren, ATMega8, mul Befehl

Gast #255625
Lesenswert?
• ▲
▼
Hallo allerseits,

ich habe folgendes Problem: Ich möchte eine Konstante (Zahl) mit dem
Ergebnis einer 10bit ADC-Wandlung (temp2, temp1) multiplizieren. Dazu
hat der ATMega8 den wunderschönen Hardware-Multiplizierer (mul Befehl).
Das Ergebnis steht dann in den Registern r1:r0. Ich habe hierzu unten
aufgelisteten Assembler-Code geschrieben. Im Simulator des AVR-Studios
funktioniert alles einwandfrei. Nur in der Praxis scheint diese Routine
nicht zu funktionieren. Sie basiert auf den Algorithmus der alten
"Schul-Multiplikation". Andere Fehlermöglichkeiten habe ich
ausgeschlossen. Der Fehler muß also in diesem Code-Schnipsel stecken.
Wenn jemand Tipps für mich hätte, wäre ich sehr dankbar.






.include "m8def.inc"

.equ Zahl = 1251

.def temp1 = r16
.def temp2 = r17
.def temp3 = r18
.def temp4 = r19

================================================================
; Multiplikator Zahl = 1251 steht in den Registern temp4, temp3
; Multiplikand (ADC-Wert) steht in den Registern temp2, temp1

; Ergebnis soll dann in den Registern r23, r22, r21, r20 stehen
================================================================


.
.
.
.
        ldi temp3, LOW(Zahl)
        ldi temp4, HIGH(Zahl)



        mul temp1, temp3
        mov r20, r0
        mov r21, r1

        mul temp1, temp4
        add r21, r0
        adc r22, r1

        mul temp2, temp3
        add r21, r0
        adc r22, r1

        mul temp2, temp4
        add r22, r0
        adc r23, r1
.
.
.
.




Gruß
Bernhard Bauer

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.