Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

do while Schleife bricht ab Kategorie: Programmierung C (von Kai - 9.02.2009 22:08)
Ich nutze:
CC-Pro 128 Application Board, Pro-Bot128
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:

Re: do while Schleife bricht ab (von Kai - 12.02.2009 21:20)