PIC16F627 , Warteschleife

OP #819790
Lesenswert?

Hey an alle!
Hab ein Problem mit ner Warteschleife.. Hab ein vorhandene Warteschleife 
erweitert ,indem ich die Warteschleife 250ms erneut 4mal wiederholen 
lasse. Dies funktioniert aber nicht ganz. Die LED wird zwar gesetzt wird 
aber nie ausgeschaltet. Das komplette Programm liegt bei.
Meine Vorhergehensweise in der Warteschleife:

WAIT4    MOVLW  D'4'
    MOVWF  TIMER3

WAIT1    MOVLW  D'250'  ; Konstante 250ms wird eingefügt
    MOVWF  TIMER1

WAIT2    MOVLW  D'110'  ; Konstante 1ms wird eingefügt
    MOVWF  TIMER2

WAIT3    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    DECFSZ  TIMER2,1  ; (1ms)
    GOTO  WAIT3

    DECFSZ  TIMER1,1  ; (250ms)
    GOTO  WAIT2

    DECFSZ  TIMER3,1  ; (2s)
    GOTO  WAIT4

    RETLW  0

Diese TIMER1 / 2 sind doch nicht die PIC Timer oder? das sind lediglich 
Register indenen ich die Zahlenwerte einlade die in der Warteschleife 
verringert werden bis sie 0 sind.
Hoffe ihr könnt mir helfen..
Bye
Angehängte Dateien:
OP #820119
Lesenswert?

Joa danke für deine message..
hab das wait4 durch wait3 getauscht..

decfsz  Timer3,f
goto    wait3

und auch noch einen fehler gefunden..
bei der main-Routine :

Loop    BSF  PORTB,0    ; LED an
    Call  WAIT4    ; ZEITVerzögerung
    BCF  PORTB,0    ; LED aus
    GOTO  Loop    ; ZEITVerzögerung <----
    Call  WAIT4
    End


Da darf der GOTO Loop befehl nicht sein, so wird die LED eine Zeit lang 
eingeschaltet aba nur kurz aus weil der GOTO befehl direkt wieder 
einschaltet..

Richtig lautet es nu:

Loop    BSF  PORTB,0    ; LED an
    Call  WAIT4    ; ZEITVerzögerung
    BCF  PORTB,0    ; LED aus
    Call  WAIT4           ; ZEITVerzögerung <----
    End

War wohl nen dummer Anfängerfehler..
Nun denn danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren