Forum: Mikrocontroller und Digitale Elektronik Multiplizieren und Dividieren mit dem 80C517


von Michael Balsiger (Gast)


Angehängte Dateien:

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

von Stefan Kleinwort (Gast)


Lesenswert?

Aber bitte nicht als Doc-Datei ...

Stefan

von Michael Balsiger (Gast)


Angehängte Dateien:

Lesenswert?

Dann als bak-Datei...

Michael

von Michael Balsiger (Gast)


Lesenswert?

Hat keiner ein bisschen Zeit mein Programm zu beäugen?
Danke im voraus
Michael

von spinner (Gast)


Lesenswert?

hi

praezise fragen.....moeglicherweise.....praezise antworten.

nicht so! :  mach den mist fuer mich !

von Stefan Kleinwort (Gast)


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

von Michael Balsiger (Gast)


Lesenswert?

Hat wirklich keiner Zeit mein Programm einmal zu beäugen?

Danke im voraus, Michael

von spinny (Gast)


Lesenswert?

hi,
hier gibt es fertige routinen.

http://www.8052.com/codelib.phtml


bediene dich.

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.