Incrementieren einer 16Bit Zahl

Gast
Das erhöhen get so einfacher:
add ZahlLow, eins
adc ZahlHigh, null
(natürlich müssen vorher noch ein Register mit 0 und 1 geladen
werden).
Am Ende dann überprüfen ob das Ergebnis 10000 beträgt. fertig.
Gast
Hallo,
Das Addieren in 16-Bit Breite geht mit nur einem Befehl, wenn man eines
der Doppelregister X, Y, oder Z verwendet. z.B.

adiw r24,1

erhöht r25:r24 um eins, r24 ist dabei das untere Byte. Carry wird
intern behandelt. Der Befehl benötigt zwei Taktzyklen. SBIW ist der
entsprechende Befehl zur Subtraktion.

Gruß
Gast
Hier das ganze stark vereinfacht mit rückwärts zählen:

.def    Time1L = r24
.def    Time1H = r25

HAUPT:    ldi  Time1L,low(10000)  ;Counter auf 10000 (low-byte in r24)
setzen
    ldi  Time1H,high(10000)  ;Counter auf 10000 (high-byte in r25) 
setzen

ZAEHL:    sbiw  Time1L,1    ;16-Bit Counter um 1 verringern
    brne  ZAEHL      ;und solange widerholen solange <> 0

OVER:    rjmp  HAUPT      ;Das ganze von vorne

Mach es Dir doch einfacher in dem Du die Anweisungen low und high
verwendest dann brauchst Du das nicht immer auszurechnen.

Gruß
Andi

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.