tastendrücker wrote:
> Die Anweisung decfsz 'springt' nicht, sie 'überspringt' (skipt) die
> nächste Anweisung, wenn (in deinem Fall) d1=0 ist. Hier mal ein paar
> Kommentare:
>
>
> UP_wait05s
> ;2499992 cycles
> movlw 0x15 ; Zählschleife laden
> movwf d1
> movlw 0x74
> movwf d2
> movlw 0x06
> movwf d3
> UP_wait05s_0 ; Zählschleife ausführen.
> decfsz d1, f ; d1=d1-1 , d1=0?
> goto $+2 ; nein d1!=0 -> goto ausführen
> decfsz d2, f ; ja d1=0 -> d2=d2-1 , d2=0?
> goto $+2 ; nein d2!=0 -> goto ausführen
> decfsz d3, f ; ja d2=0 -> d3=d3-1 , d3=0?
> goto UP_wait05s_0 ; nein d3!=0 -> goto ausführen
>
>
> Bedenke, dass die Anweisung 'decfsz d1, f' hier einige tausendmal(!) bei
> jedem 'CALL UP_wait05s' ausgeführt wird!.
Das mit dem Springen unde dem Ueberspringen war mir klar, dass er dann
halt nicht die naechste Operation sondern die uebernaechste ausgefuehrt
wird.
Die Delay-Schleife hab ich vorher auch schon verstanden nach dem ich es
mir etwas genauer angeschaut habe. Tortzdem danke fuer die Erklaerung
Ich habe es jetzt hin bekommen in dem ich es in einem extra
Unterprogramm aufrufe. Was da jetzt den unterschied macht hab ich aber
nicht wirklich verstanden.
Vielen Dank Necro