Forum: Mikrocontroller und Digitale Elektronik PIC16F627 , Warteschleife


von Tobias B. (technic)


Angehängte Dateien:

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

von Erhard (Gast)


Lesenswert?

Hallo Tobias,

schau dir mal an:

decfsz  Timer3,f
goto    wait4


Du erniedrigst Timer3 um 1, springst dann zu Wait4 und lädst den Timer3 
erneut mit 4d. Das heist, Timer3 wird nie weniger als 3d als Inhalt 
haben.

Hier noch ein guter Link:

"http://www.piclist.com/techref/piclist/codegen/delay.htm";

Gruß Erhard

von Tobias B. (technic)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.