Multiplizieren und Dividieren mit dem 80C517

Gast #67534
Lesenswert?
• ▲
▼
Hallo,

ich versuche in meinem Programm einen Wert aus dem 10Bit AD-Wandler zu
lesen, ihn mal 32 zu multiplizieren und dann mit 150 zu dividieren.
Schau Dir doch bitte einmal mein Programm an und korrigiere die wo was
nicht stimmt, vielen Dank. Michael
Angehängte Dateien:
Gast #67539
Lesenswert?
• ▲
▼
Also ich habe mal Dein Programm angeschaut. Wenn Du es als das postest,
was es ist, nämlich als .asm Datei, dann schauen sicher mehr Leute
rein. .doc macht doch kein Mensch freiwillig auf, und bei .bak weiss
man von aussen auch nicht, ob es asm oder C ist.

Die Parameterübergabe an das interne Rechenwerk sieht recht merkwürdig
aus, den einen Parameter übergibst Du als 16-Bit-Wert, aber den
anderen??

multi:    mov  r2, #020h  ; R2 mit Multiplikator 32d laden
    mov  r3, #020h  ; R3 mit Multiplikator 32d laden

    mov    MD0, R0     ; Arithmetik-Register laden
              mov    MD4, R1    ;
              mov    MD1, R2    ;
              mov    MD5, R3    ;
                                 ; Start der Multiplikation
              nop               ; 4 Takte warten
              nop               ;
              nop               ;
              nop               ;
                                 ;
              mov  R4, MD0     ; Ergebnis auslesen
              mov    R5, MD1     ;
              mov    R6, MD2     ;
              mov    R7, MD3     ;

              ret               ;

Dass in R2 und R3 dieselbe Konstante drinstehen muss, kann ich mir fast
nicht vorstellen. Im High-Byte muss doch eher NULL sein? Ich habe aber
keine Doku zu der CPU mehr, habe ich früher mal benutzt, ist schon ne
Weile her.

Beim Dvidieren hast Du noch 20h statt 150 drinstehen.

Zum Testen solltest Du statt Deinen Messwerten erstmal feste Werte
nehmen, bei denen Du weisst, was rauskommen soll. Dann kannst Du Deine
Rechnung besser verifizieren.

Stefan

Antwort schreiben

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.

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.