Warteschleife mit Register als Zähler (assembler)

OP #5004633
Lesenswert?

Hallo,


Im Anhang ist der PAP, der Code, und die Erklärung dazu. (Code ist aus 
einem Lehrbuch)

ich wollte mal fragen ob ich das richtig verstanden habe. Es geht um die 
Warteschleife und die dafür gemachten Zähler 1 und 2.

r16 soll Zähler 1 sein.
r17 soll Zähler 2 sein.

Ich habe das so verstanden. Die register r16 und r17 werden zuächst auf 
"0" gesetzt. Anschließend wird bei Tasterdruck der Befehl "inc" 
verarbeitet. Dieser Befehl bewirkt dass sich das Register 16 um +1 
erhöht.
also:

1. durchlauf 0b0000 0001
2. durchlauf 0b0000 0011
3. durchlauf 0b0000 0111

usw.

bis 0b1111 1111

dann wird es wieder "0" = 0b0000 0000

Das erwähnte Z-Flag wird jetzt gesetzt?? richtig?

"brne" prüft das Z-Flag, wenn das Z-Flag gesetzt ist dann wird zum 
nächsten zähler gewechselt.

Das gleiche passiert nun mit r17.

anschließend wenn der Taster immer noch gedrückt ist, dann wird der 
befehl
"rol" ausgeführt.

Habe ich das richtig verstanden dass dieser gesamte Ablauf während eines 
kurzen Tasterdrucks geschieht ? D.h. der Microcontroller führt das im 
Milisekunden Bereich aus...
Angehängte Dateien:
Moderator Persönliche Seite #5004643
Lesenswert?

O. A. schrieb:
> dass dieser gesamte Ablauf während eines kurzen Tasterdrucks geschieht

Auch während eines langen. ;-)

Aber eben nur während eines Tastendrucks.

Allerdings werden die Zähler beim Rücksprung zu "mainloop" nicht
re-initialisiert, laufen also mit ihren vorigen Zählerständen weiter.

Sieht alles irgendwie sehr akademisch aus …
Moderator Persönliche Seite #5004652
Lesenswert?

O. A. schrieb:

> Das heißt ? Gut oder schlecht? : )

Seltsam, irgendwie praxisfern.

Wenn man eine Verzögerung haben will, würde man eine Funktion
bauen, die eine entsprechende Zeit verzögert, und diese dann
aufrufen, aber nicht irgendwo wild in Registern herumzählen und
dann ganz woanders hinspringen.

> Aber ich habe es also richtig verstanden`? Das mit dem Z-Flag etc...

Ja.
OP #5004705
Lesenswert?

Jörg W. schrieb:
>> Aber ich habe es also richtig verstanden`? Das mit dem Z-Flag etc...
>
> Ja.

Ich danke dir für das Feedback Jörg. Hat mir geholfen.

Matthias S. schrieb:
> Im Zweifelsfall ist die ultimative Quelle immer Atmel mit dem 'AVR
> Instruction Set Manual':
> http://www.atmel.com/images/Atmel-0856-AVR-Instruction-Set-Manual.pdf
>
> Hier wird jeder Befehl mit den beeinflussten Flags beschrieben.

Ich danke für den Hinweis.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren