Code:switch (PollSwitch) { case 0x07: ! Doppelpunkt ! BackLED(ON,OFF); break; case 0x38: ! Doppelpunkt ! BackLED(OFF,ON); break; default: ! muss nicht sein, sollte man sich aber angewoehen break; }
Hallo,
ich hab seit einem Monat einen Asuro. Das Programmieren funktioniert nach anfänglichen Schwierigkeiten schon recht gut.
Vor kurzem wollte ich eine Switch-Anweisung testen. Doch ich versteh noch nicht ganz den richtigen Aufbau dieser Anweisung.
Ich wollte mit den rechten Kollisionstastern den das linke Rücklicht leuchten lassen und mit den linken Tastern das rechte.
Hier mein Programm:
Kann mir jemand helfen?Code:#include "asuro.h" int main(viod) { Init (); while(1) { switch (PollSwitch) {case 0x07; BackLED(ON,OFF); break; case 0x38; BackLED(OFF,ON); break; } } return 0; }
danke
mfg
Code:switch (PollSwitch) { case 0x07: ! Doppelpunkt ! BackLED(ON,OFF); break; case 0x38: ! Doppelpunkt ! BackLED(OFF,ON); break; default: ! muss nicht sein, sollte man sich aber angewoehen break; }
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Habs gerade probiert aber funktioniert nicht. Habs auch direkt kopiert:
Code:#include "asuro.h" int main(viod) { Init (); switch (PollSwitch) { case 0x07: BackLED(ON,OFF); break; case 0x38: BackLED(OFF,ON); break; default: break; } return 0; }
case 0x07 wird dann, und NUR dann, ausgeführt wenn taster eins, zwei UND drei gleichzeitig gedrückt wurden. es reicht nicht wenn ein taster gedrückt wurde. gleiches gilt für 0x38: 0x38 entsteht nur wenn taster 4,5,6 gleichzeitig gedrückt wurden.
war das das ziel?
ausserdem: es heisst PollSwitch() und nicht nur PollSwitch. die klammern sind wichtig! aber eigentlich solltest du dafür eine warning vom compiler gefangen haben...
noch was: es heisst main(void) und nicht main(viod). das sollte einen error geben.
ausserdem muss unbedingt die letzte zeile vor "return 0;" eine endlosschleife enthalten (z.b. "while(1);" oder "for(;;);"), da sonst nach beendigung des programmes der zustand des prozessors nicht sicher ist (man nennt das "undefiniert"). da könnte es sein, dass fragmente alten codes ausgeführt werden, oder zufällige befehle ausgeführt werden.
bitte benutze ab jetzt den code-button wenn du code einfügst. ich werde deine beiträge entsprechend ändern.
ES FUNKTIONIERT!!!!!!!!!!!!!!! \/ \/ \/
Danke für die schnellen Antworten.
mfg
kein problem...
Hallo,
ich hätt da nochmal ne kleine Frage.
Soweit funktioniert jetzt alles.
Jedoch das Schalten der LED's erfolgt nur wenn ich die Tasten schon beim Einschalten gedrückt habe.
Wie kann ich das Programm ändern so dass die BackLED's erst leuchten wenn ich die Tasten drücke und wenn ich sie loslasse erlischen.
Hab schon mit der while-Schleife herumexperimentiert, bin aber auf keine Lösung gekommen.
mfg
ich denke, dass die while-schleife am ende des programms liegt, und deshalb der programmcode nur einmal und in wenigen millisekunden abläuft...
poste doch nochmal deinen programmcode, so wie er jetzt aussieht.
Hier mein Programm
Code:#include "asuro.h" int main(void) { Init (); while(1); { switch (PollSwitch()) { case 0x01: BackLED(ON,OFF); break; case 0x08: BackLED(OFF,ON); break; default: break; } } return 0; }
das simikolon hinter while(1) muss weg, dann müsste es eigentlich funktionieren.
mfg liggi
Lieber am Asuro rumschrauben als alles andere.
Meine Homepage
Lesezeichen