Hallo

Nahe dran, aber noch nicht perfekt.

Mit #define definierte Wörter werden im weiteren Programm durch den Text ersetzt, den man definiert hat. Ein

#define Lampe_rot StatusLED(RED)

ersetzt alle Stellen im Programm die Lampe_rot heisen mit dem Text StatusLED(RED) (bisschen banal vielleicht) Das verwendet man um sich Tipparbeit zu ersparen und/oder um ein Programm verständlicher/unverständlicher zu gestalten.

Zum deinem aktuellen Programm:

keine_Taste muss natürlich keine_taste heisen, weil es so auch im #define steht. Alles in c ist case-sensitiv, das bedeutet, Groß- und kleinschreibung wird unterschieden. Ausserdem möchtest du doch prüfen, ob eine Taste gedrückt ist. Also sollte die Abfrage if taste... heisen. Die Klammern könntest du weglassen, denn die sind im #define schon dabei.

Die Zeiten der Sleep()s sind zu kurz! Sleep(36) entspricht ca. 1 Millisekunde (soweit ich weis und nur, wenn du eine der neueren asuro.c verwendest.) Also würden 3 Sleep(250) ungefähr 750/36 ms verzögern. Das sind quasi 0,02 unmerkliche Sekunden.

for (zeit=0; zeit<1000; zeit++) { Sleep(36); }

würde dann eine Sekunde verzögern. Alternativ kennen die neueren Libaries auch die Msleep()-Funktion. Hier kann die Zeit direkt in Millisek. angegeben werden:

Msleep(1000);

wartet dann auch eine Sekunde lang.

Ob if oder while, viele Wege führen zum Ziel.

Gruß

mic