Verstehen Timer nicht (Assembler)

Gast #96293
hallo,

bin völlig neu in der sprache mache gerade eine woche praktikum darin
und mir is noch so einiges unklar ich habe nun, bzw sollte ein programm
schreiben das eine LED auf und ableuchten lässt/soll, nunja das habe
ich, jedoch würde ich gern den gesamten quellcode verstehen, denn
dieses timer zeuchs is echt für mich unlogisch wieso man unter dem
einem unter-programm nochmal zwei aufruft damit es blinkt(habe es in
vielen anderen variationen probiert es funkt. nur die eine) und was r6
u r7 bedeutet und was die zahl 128 machen soll und wieso ret?? wäre
total nett wenn ihr mir das mal erklären könntet.

hier mal der code

TIMER:  MOV R7,#128'warum mov?
T:    MOV R6,#128'wieso neues unterprogramm
ST:  DJNZ R6,ST'warum funktioniert das runter zählen nich mit dem $
  DJNZ R7,T; wiedo kein neues aufrufen und dafür das T einsetzen
   RET   ;warum returnen??

PS: kenn jm. gute einsteiger workshops zur 7 Segment anzeige für das
MCLS - Modular ?
danke im vorraus :)
Gast
das ist keine Timerprogrammierung, sondern eine Zeitschleife. Macht
weiter nichts, als den Proc. eine Weile zu beschäftigen.

TIMER:  MOV R7,#128'warum mov?
T:    MOV R6,#128'wieso neues unterprogramm
ST:  DJNZ R6,ST'warum funktioniert das runter zählen nich mit dem $
  DJNZ R7,T; wiedo kein neues aufrufen und dafür das T einsetzen
   RET   ;warum returnen??

In Wirklichkeit sind es 2 Schleifen, eine innere (R6) und eine äussere
(R7). Zum Anfang wird der Zähler für die äussere Schleife mit einem
Startwert geladen. Dann kommt schon die innere Schleife, laden mit
Startwert (mov r6, #128) und anschliessendes Herunterzählen. Die innere
Schleife wird 128 wiederholt, dann enthält r7 0 und der Sprung von djnz
r7 wird nicht mehr ausgeführt, d.h. hier ist das Verzögerungsprogramm
zu Ende. Ret deshalb, weil das ganze mit call Timer aufgerufen wird und
mit ret jetzt dahin zurückkehrt.

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.