while-Schleife mit 2 Anweisungen funktioniert nicht

Gast #1720848
Lesenswert?

Hallo zusammen...

Ich habe mal eine Frage und zwar ist das hier ein kleines Unterprogramm 
von mir, bei dem auf dem Display ein Countdown von 30 runterläuft.

"volatile unsigned int Sekunden"

Diese werden mit einem OVF Interrupt runtergezählt... was auch super 
klappt.

Auch das abbrechen der 2 Schleifen durch Taste_x funktioniert. Nur 
Leider springt das Programm nicht in die zweiter Schleife, wenn Sekunden 
= 10 erreicht. Es bleibt ständig in der ersten Schleife...

Was mache ich falsch?

1
void countDown()          // 30sec CountDown-Funktion    
2
{
3
  lcd_clearDisplay();
4
  lcd_gotoxy(1,8);
5
  lcd_putstr(" <-- CD ");
6
  
7
  while((Taste_x==0)|(Sekunden<10))
8
  {  
9
    lcd_gotoxy(1,4);
10
    lcd_putc(Sekunden/10 + 0x30);    // Displayausgabe Zehner
11
    lcd_putc(Sekunden%10 + 0x30);    // Displayausgabe Einer
12
  }  
13
  
14
  while((Taste_x==0)|(Sekunden<5))
15
  {
16
    lcd_gotoxy(1,4);
17
    lcd_putstr(" ");        // Zehnerausgabe löschen
18
    lcd_gotoxy(1,5);
19
    lcd_putc(Sekunden%10 + 0x30);  // Displayausgabe Einer
20
  }
21
  sound();            // Unterprogramm Sound aufrufen
22
}


Vielen Dank schonmal!

Gruß xASP
Gast #1720864
Lesenswert?

ah jetzt ^^

ja stimmt... ich habs wohl bissl verplant.

weil ich wollte ja, dass das ganze weiterschaltet wenn Taste_x gedrückt 
wird ODER wenn Sekunden = 10 sind.

aber in dem Fall muss ja ein UND logischerweise dazwischen, weils ja 
solange laufen soll, wie Taste_x = 0 und Sekunden>10 sind.

Danke euch...

Dieses Forum ist der hammer :P

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren