Re: do while Schleife bricht ab Kategorie: Programmierung C (von Kai - 12.02.2009 21:20) | ||
Als Antwort auf do while Schleife bricht ab von Kai - 9.02.2009 22:08 | ||
| ||
Problem beseitigt, durch Verhinderung des Threadwechsel mit Thread_Lock(1); klappt die Sache jetzt. Kai > Hallo miteinander, > > ich habe ein kleines Problem, welches ich nicht recht verstehe. Vielleicht erkennt ihr warum die folgende > Schleife abbricht. > Dazu folgendes: Der Code ist ein kleiner Ausschnitt aus meinem Programm. Bei einem bestimmten > Auswahlmenü wird der Thread gestartet und soll wenn keine Taste im Menü gedrückt wird nach ca. 50 sek. > dieses nicht mehr anzeigen sondern die Uhrzeit und das Datum anzeigen. > Das klappt. > Jedoch wird die Schleife nach nicht bestimmter Zeit verlassen und zum Menü zurückgekehrt, ohne das > die Taste * gedrückt wurde. > Das Schauspiel beginnt von vorn. Es läuft ansonsten nur Thread 0 (Main). > Ich glaube ja, dass es mit der Funktion Timer_TickCount() zusammenhängt, aber wie? > > Danke im Vorraus Kai > > // Thread zur Anzeige der Uhrzeit > void th_uhrzeit(void) //Thread 4 Uhrzeit einblenden nach 50 Sekunden > { > int azeit, bzeit; > azeit =0; bzeit=0; > > Timer_TickCount(); > do > { > azeit = Timer_TickCount(); // Timer Differenz auslesen > bzeit = bzeit + azeit; // Differenz addieren > Thread_Delay(10); > } > while(bzeit < 5000); // ca. 50 Sekunden > > LCD_ClearLCD(); > do > { > anzeigeuhrzeit(); > LCD_CursorPos(0x50);zeile1="* weiter"; LCD_WriteText(zeile1); > key1(); > > if (key==42) // * > { > beep1(); > key=0; > Thread_Delay(10); > Thread_Kill(4); > LCD_ClearLCD(); > break; > } > } > while(true); > } > //----------------------------------------------------------------------------- > void anzeigeuhrzeit(void) > { > Display_Buffer_Set_Time(); > LCD_CursorPos(0x00+4); LCD_WriteText(uhrzeit); > Display_Buffer_Set_Date(); > LCD_CursorPos(0x40+4); LCD_WriteText(datum); > } > > //---------------------------------------------------------------------------- > void key1(void) > { > key = Key_Scan(); > key = Key_TranslateKey(key); > } | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum