Warteschleife mit Register als Zähler (assembler)

OP #5004633
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 #5004652
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
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

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