Forum: Mikrocontroller und Digitale Elektronik Incrementieren einer 16Bit Zahl


von Norbert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte einer 16 Bit Zahl immer bis dezimal 9999 hochzählen lassen
(für eine Zeitmessung mit AVR 4433). Gibt es eine kürzere Möglichkeit
wie in meinen Beispielprogramm? Danke im Voraus.

Norbert

von Norbert (Gast)


Lesenswert?

Noch zur Info, nur Assembler.

Gruß

Norbert

von Benedikt (Gast)


Lesenswert?

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.

von Norbert (Gast)


Lesenswert?

Super, danke für die schnelle Antwort.

Gruß

Norbert

von Chris (Gast)


Lesenswert?

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ß

von Norbert (Gast)


Angehängte Dateien:

Lesenswert?

Das mit ADIW scheint noch besser zu sein. Habe das Programm gleich
geändert, hoffe das der 16-Bit Compare funktioniert. Die Anweisung hab
ich von Atmel
(http://www.atmel.com/dyn/resources/prod_documents/DOC0937.PDF). Kann
ihn aber gedanklich nicht ganz nachvollziehen.

von ...HanneS... (Gast)


Lesenswert?

Warum zählst du nicht rückwärts? Dann brauchst du nur 0 auszuwerten.

von Andi (Gast)


Lesenswert?

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

von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Mist, wegen der Textformatierung sieht das jetzt ein bißchen
unübersichtlich aus.
Oben noch mal als Text-File.

Gruß
Andi

von Norbert (Gast)


Lesenswert?

Danke Andi und natürlich alle anderen die geholfen haben,

die Version werde verwenden.

Gruß

Norbert

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.