mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC16F627 , Warteschleife


Autor: Tobias B. (technic)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Erhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/del...;

Gruß Erhard

Autor: Tobias B. (technic)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.