mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer0: TL0 + TH0 16Bit Addition


Autor: Gregor Knappik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich arbeite mit einem DS89C420(8051komp.) und dem Keil Demo Compiler.
Für den Timer2 ist es möglich, über sfr16 Timer2 = 0xYY mit 16Bit
Werten auf einmal zu rechnen. Also statt Low/HighByte einzeln zu
addieren einfach Timer2 += 0xYYYY;

Dasselbe geht ja für den Timer0 (im 16Bit Mode) nicht, da die Low
Adresse auf 0x8Ah liegt und die High Adresse auf 0x8Ch.

Nun möchte ich dies per Software lösen, also folgendes Additionsprinzip
verwenden:

256's   1's
 1A      44
+22      DB
============
=3D1Fh

Hat jemand schon einen Code dafür geschrieben?
Ich hätte folgende Assembler Lösung parat, leider weiß ich nicht wie
man Assembler Code in den C-Code (Keil Compiler) implementiert um den
Carry abzufragen.
256's   1's
 R6      R7
+R4      R5
============
 R2      R3

; 1's
MOV A,R7  ;Move the low-byte into the accumulator
ADD A,R5  ;Add the second low-byte to the accumulator
MOV R3,A  ;Move the answer to the low-byte of the result

; 256's
MOV A,R6  ;Move the high-byte into the accumulator
ADDC A,R4 ;Add the second high-byte to the accumulator, plus carry.
MOV R2,A  ;Move the answer to the high-byte of the result

Vielen Dank vorab für Eure Hilfe!
Gruß
Gregor

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int tmp;

TR0 = 0;

tmp = TL0 | (TH0 << 8);

tmp += xxxx;

TL0 = tmp;
TH0 = tmp >> 8;

TR0 = 1;


Peter

Autor: Gregor Knappik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

super, danke für die schnelle Antwort.

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.