PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : for-schleife in Assembler für PIC



picprogger
09.03.2007, 21:48
Hallo,
wie kann ich eine for-schleife in Assembler für einen PIC realisieren,
welche Befehle brauche ich?

Danke
Gruß

T.J.
09.03.2007, 22:11
ich würde mal grob sagen:

du beginnst mit subsection mit "call subblubb" aufrufen
dann:


subblubb:

movlw 0x10 ; hier gewünschten Wert (das ist dein i)
movwf DVAR ; Delay-Variable wird runtergezaehlt

PLoop:
decfsz DVAR,F ; DVAR wird runtergezaehlt, die goto-Anweisung

...auszuführender code............

goto PLoop
return

picprogger
09.03.2007, 22:20
Hallo,
das sieht gut aus werde es mal probieren!

Danke

SIGINT
09.03.2007, 22:26
Der auszuführende Code muss zwischen PLoop und decfsz stehen...
"Decrement F,skip next (Instruction) if Zero"

Gruß,
SIGINT

T.J.
09.03.2007, 22:33
ist das nicht voll egal? ist ja dann nur noch ne zählgeschichte....

SIGINT
10.03.2007, 09:49
Ähhh,
ist ne FOR-Schleife nicht ne "Zählgeschichte"?!?

Nope, es ist nicht egal wo das decfsz steht...
da der Befehl bei gesetztem Zero-Flag nur die darauf folgende Anweisung übersprungen wird. Das wäre in deinem Fall nur die erste Anweisung vom "auszuführenden Code"... der Rest davon würde ganz normal ausgeführt werden. Und das "goto PLoop" würde dafür sorgen, daß das Programm in einer Endlosschleife verhart. Also ist folgendes richtig:


subblubb:

movlw 0x10 ; hier gewünschten Wert (das ist dein i)
movwf DVAR ; Delay-Variable wird runtergezaehlt

PLoop:

...auszuführender code............

decfsz DVAR,F ; DVAR wird runtergezaehlt, die goto-Anweisung
goto PLoop
return


Gruß,
SIGINT