Hallo
Eine einfache Variante deines Programms (ungetestet):
Code:
#include "asuro.h"
int main(void)
{
int p;
Init(); // muss immer aufgerufen werden!
while(1) // Endlosschleife
{
StatusLED(RED);
while(PollSwitch()>2) // Tasten immer wieder neu einlesen und auswerten
{
StatusLED(GREEN);
for(p=1;p<300;p++) Sleep(72);
StatusLED(YELLOW);
for(p=1;p<300;p++) Sleep(72);
}
}
return 0; // wird nie erreicht
}
Was mach ich denn falsch?
Du verwendest kein Code-Tag und zuviele "?" ;)
Deine Programmversion wurde nur einmal ausgeführt und blieb dann in der Endlos-While()-Schleife vor dem return stecken. Außerdem wurde bei while(taste>2) der Wert für taste nicht mehr neu eingelesen. Wenn die Schleife einmal betreten wurde, konnte sie nie mehr abgebrochen werden:
Code:
#include "asuro.h"
int main(void)
{
int p;
int taste;
Init(); // muss immer aufgerufen werden!
while(1) // Endlosschleife
{
StatusLED(RED);
taste=PollSwitch(); // Tasten einlesen
while(taste>2) // in dieser Schleife wird taste nicht mehr aktuallisiert!
{
StatusLED(GREEN);
for(p=1;p<300;p++) Sleep(72);
// taste=PollSwitch(); // nur wenn die Tasten erneut eingelesen werden
} // kann die Schleife wieder verlassen werden!
}
return 0; // wird nie erreicht
}
Gruß
mic
Lesezeichen