mikrocontroller.net

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


Autor: xASP (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

void countDown()          // 30sec CountDown-Funktion    
{
  lcd_clearDisplay();
  lcd_gotoxy(1,8);
  lcd_putstr(" <-- CD ");
  
  while((Taste_x==0)|(Sekunden<10))
  {  
    lcd_gotoxy(1,4);
    lcd_putc(Sekunden/10 + 0x30);    // Displayausgabe Zehner
    lcd_putc(Sekunden%10 + 0x30);    // Displayausgabe Einer
  }  
  
  while((Taste_x==0)|(Sekunden<5))
  {
    lcd_gotoxy(1,4);
    lcd_putstr(" ");        // Zehnerausgabe löschen
    lcd_gotoxy(1,5);
    lcd_putc(Sekunden%10 + 0x30);  // Displayausgabe Einer
  }
  sound();            // Unterprogramm Sound aufrufen
}



Vielen Dank schonmal!

Gruß xASP

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
xASP schrieb:
while((Taste_x==0)|(Sekunden<10))

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

Autor: Eckpfeiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuchs mal mit

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

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

Autor: xASP (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.