Forum: Compiler & IDEs while Schleife mit oder Verknüpfung


von Timebeast (Gast)


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???

von Stefan (Gast)


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)

von Rolf Magnus (Gast)


Lesenswert?

Etwas einfacher formuliert: Du willst die Schleife durchlaufen, solange 
der Taster nicht gedrückt ist und der Timeout nicht abgelaufen ist.

von Matthias L. (Gast)


Lesenswert?

scheint eine Wollknäulprogrammierung zu werden...

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.