www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 89c2051 16Bit Addieren


Autor: Forest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat jemand eine Ahnung wie ich in Assambler Sprache ein 16Bit register
mit einem 8 Bit Register Addieren kann? Hab es mit dem Dptr Register
Probiert, dieses ist 16 Bit groß. Aber es gibt kein Befehl zum Addieren
mit dem Register.

Versuche grad eine höhere Auflösung beim DS1621 zu erreichen.
Vielleicht hab das schonmal jemand gemacht und könne mir verraten wie
er die ganze Sache gelöst hab.
mfg

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit dem DPTR wird das nichts.
Eine 16-Bit-Addition wird in 2 8-Bit-Additionen erledigt, jeweils die
low- und high-Bytes getrennt addieren, dabei einen evtl. Übertrag vom
low zum high-Byte beachten.
8051er-Syntax ist mir nicht mehr so geläufig, aber dass bekommst du
schon hin.
add low1, low2    //addition1 ohne carry (oder auch mit, wenn C null
ist)
addc high1,high2   //addition2 mit carry

wenn dein 2.Operand ist nur eine 8bit-Zahl ist, reicht als 2. Addition
ein ADDC A, #0 (nur das carry wird addiert)

Autor: Thomas Zepf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier eine Keil C Kompatible Funktion
;Parameter R6/R7 Var16 (LSB In R7)
;          R5    Var8
;Result    R6/R7
;c Prototype:
;UINT16 Add8_16(UINT16 var1, UINT8 var2)
_Add8_16:
MOV  A,R7
ADD  A,R5
MOV  R7,A
JNC  exit
INC  R6
exit: RET

Anwendung in Assembler:

MOV   R6,#HIGH (1000h)
MOV   R7,#LOW  (1000h)
MOV   R5,#20h
LCALL _Add8_16 ;Result in R6R7 = 1020h
...

Thomas

Autor: Forest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Thomas, es funktioniert!

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.