Hallo, Bin dabei mir den C Compiler selbst beizubringen. Die ersten Programme waren auch erfolgreich. Jetzt wollte ich das Blinky Programm so verändern das die Zeitschleife mit einem Unterprogramm in der for schleife realisiert wird. Der Compiler von MikroElektronica sagt keine Fehler aber die Diode leuchtet ständig. Programiert wird der PIC 16F630. Was ist da faul. Nachstehend noch das Programm. //** D E F I N E S ********************************************* #define LED PORTC.RC0 //LED liegt an Port C RC0 //**Prototype*************************************************** void pausen ( int ms ); void main() { // Hauptprpgramm TRISC = 0; // set PORTC to be digital output PORTC = 0; // TURN off LEDs on PORTC while(1) { //Hauptschleife LED = 1; //LED einschalten pausen (1000) ; //ca. 1 Sekunde (1000 ms) warten LED = 0; //LED ausschalten pausen (1000) ; //ca. 1 Sekunde (1000 ms) warten } } void pausen(int ms) { int i=0; for( i=0; i<ms; i++ ) { delay_ms(1000); } }
Nach 1000 Sekunden (16,7min) geht sie aus.
:
Bearbeitet durch User
Warum erst in 16,7Minuten und wann geht sie Wieder an ?
Zeidler schrieb: > Warum erst in 16,7Minuten Weil du das so programmiert hast. Du wartest in einer Schleife 1000 mal für je eine Sekunde. > und wann geht sie Wieder an ? Nach weiteren 16,7 Minuten.
Zeidler schrieb: > Warum erst in 16,7Minuten und wann geht sie Wieder an ? Rechne nal selber: 1000x 1000ms = ?
Kolja schrieb: > Rolf M. schrieb: >> Nach weiteren 16,7 Minuten. > Anders ausgedrückt: 16min 40s Falls er den Mega8 mit eine Präzisionsquarz betreibt. @Zeidler: manchmal macht man Copy&Paste-Fehler, die vom Autor nicht gefunden werden wollen. Dann hilft ein externer Kick in die richtige Richtung ;-)
Carl D. schrieb: >>> Nach weiteren 16,7 Minuten. >> Anders ausgedrückt: 16min 40s > > Falls er den Mega8 mit eine Präzisionsquarz betreibt. Das ist völlig unabhängig vom Quarz. 16,7min ist nur eine andere Schreibweise. 16min 40s sind exakt 16,7min. Denn 40s sind 0,7min :-)
Alles klar. Habe die schleifen drastisch verkleinert. Funktioniert jetzt. Unter strich aber kann ich sagen >>> Im prinzip richtig zeit falscheingestellt. Danke an alle für die Hinweise. Gruß Karl-Heinz
Kolja schrieb: > Carl D. schrieb: >>>> Nach weiteren 16,7 Minuten. >>> Anders ausgedrückt: 16min 40s >> >> Falls er den Mega8 mit eine Präzisionsquarz betreibt. > > Das ist völlig unabhängig vom Quarz. 16,7min ist nur eine andere > Schreibweise. > 16min 40s sind exakt 16,7min. Denn 40s sind 0,7min :-) Seit wann ist 2/3 = 0.7?
Jemand schrieb: > Kolja schrieb: >> Carl D. schrieb: >>>>> Nach weiteren 16,7 Minuten. >>>> Anders ausgedrückt: 16min 40s >>> >>> Falls er den Mega8 mit eine Präzisionsquarz betreibt. >> >> Das ist völlig unabhängig vom Quarz. 16,7min ist nur eine andere >> Schreibweise. >> 16min 40s sind exakt 16,7min. Denn 40s sind 0,7min :-) > > Seit wann ist 2/3 = 0.7? Ja, hast völlig recht. Das sind 0,66666. Aber die 16,7 kommen nicht von mir. Was aber garantiert richtig ist, daß 1000s genau 16min 40s sind.
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.