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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.