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