Forum: Compiler & IDEs while-Schleife mit 2 Anweisungen funktioniert nicht


von xASP (Gast)


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

von Sven P. (Gast)


Lesenswert?

xASP schrieb:
1
while((Taste_x==0)|(Sekunden<10))

Wollta da zwischen die beiden Bedingungen evtl. mal ein logisches UND?

von Eckpfeiler (Gast)


Lesenswert?

Versuchs mal mit

while ((Taste_x==0) && (Sekunden<10))
...

while((Taste_x==0) && (Sekunden<5))

von xASP (Gast)


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

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