Hier ist mein Code. Wie ihr seht funktioniert es mal und mal nicht... #include <msp430g2553.h> #define RED_LED BIT0; #define GREEN_LED BIT6; double i = 0; void wait(double j){ for (i = 0; i < j; ++i) { } } void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= BIT0 + BIT6; <-- Hier funktioniert GREEN_LED oder RED_LED nicht (P1DIR |= GREEN_LED + RED_LED) while(1) { P1OUT ^= GREEN_LED; <-- hier funktioniert es wait(1000); P1OUT ^= RED_LED; <-- hier funktioniert es } } Danke für eure Hilfe.
Ganz genau hingucken:
1 | #define RED_LED BIT0;
|
2 | #define GREEN_LED BIT6;
|
3 | |
4 | ...
|
5 | |
6 | P1DIR |= GREEN_LED + RED_LED; |
7 | |
8 | ....
|
9 | |
10 | P1OUT ^= GREEN_LED; |
Was geschieht beim Textersatz eines #defines? Der komplette Text wird ersetzt. In Deinem Code passiert das hier :
1 | #define RED_LED BIT0;
|
2 | #define GREEN_LED BIT6;
|
3 | |
4 | ...
|
5 | |
6 | P1DIR |= BIT6; + BIT0; ; |
7 | |
8 | ....
|
9 | |
10 | P1OUT ^= BIT6; ; |
Na? Fällt Dir was auf?
Sorry habe vergessen zu sagen, dass eine Warnmeldung kommt "expression has no effect" Diese Meldung kommt wenn ich BIT0 und BIT6 benutze nicht (dann blinken auch beide abwechselnd). Nur bei den Variablen GREEN_LED und RED_LED.
Tristan S. schrieb: > Sorry habe vergessen zu sagen, dass eine Warnmeldung kommt > "expression has no effect" Eben. Lies mal, was ich gerade geschrieben habe. Genau hinsehen!
Vielen Dank ^^ Das ging ja echt schnell. Bin etwas Java verseucht (alles mit ; abschließen) und habe es total übersehen. Das ist die Lösung!!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.