while Schleife mit oder Verknüpfung

Gast #762821
Lesenswert?

Hallo,
Ich programmiere gerade einen Mega8 unter AVR Studio.

Folgendes Problem stellt sich gerade, ich habe eine While Schleife, die 
auch funktioniert:
1
  while(!(Taster_gedrueckt())){
2
    Led_1_aus();
3
  }
4
  Led_1_an();

Jetzt würde ich allerdings gerne noch eine Timeout Routine mit einfügen, 
und dachte mir eine ODER-Vernüpfung würde reichen, aber es funktioniert 
danach gar nichts mehr.
Also in der Art:
1
  while(!(Taster_gedrueckt())||timeout){
2
    Led_1_aus();
3
    timeout--;
4
  }
5
  if (!(timeout)){timeout=220000;Led_2_an();}
6
  Led_1_an();
Normalerweise sollte er doch solange in die WHILE-Schleife bleiben, bis 
entweder Taster=1 ODER timeout=0 wird. Macht er aber nicht. Er reagiert 
noch nicht einmal mehr auf den Taster, was er beim ersten Beispiel noch 
getan hat.

Wo liegt der Fehler?

Gruß Ralf

P.S.: Es geht mir um die Beantwortung DIESER Frage. Ein Workaround 
mittels if Anweisung bekomme ich selber hin. Aber warum geht das nicht 
mit der WHILE Schleife???
Gast #762828
Lesenswert?

Du willst doch die while-Schleife verlassen, wenn entweder der Taster 
gedrückt wird oder der Timeout abläuft.
Demzufolge willst Du aber beim Gegenteil in der Schleife verharren,
also UND-Verknüpfung:
1
while(!(Taster_gedrueckt()) && !timeout)

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