Hallo, ich versuche mich gerade in AVR-GCC-Tutorial einzuarbeiten mit AVR studio. Es klapp soweit alles gut. Ausser mit folgenden Code Zeilen. Ich will eigentlich nur den Bit auf der Stelle K100 eines Bytes LSO_DATA zu invertiren. >>#define LS0_DATA 0x00 >>#define K100 5 >>LS0_DATA ^= (1<<K100); Wenn ich kompeliere dann bekomme ich staendig folgenden Fehler fuer die letzte Zeile. >>value required as left operand of assignment Weis jemand was ich falsch mache? Gruss
student schrieb: > ich versuche mich gerade in AVR-GCC-Tutorial einzuarbeiten mit AVR > studio. Es klapp soweit alles gut. Ausser mit folgenden Code Zeilen. Ich > will eigentlich nur den Bit auf der Stelle K100 eines Bytes LSO_DATA zu > invertiren. > >>>#define LS0_DATA 0x00 >>>#define K100 5 >>>LS0_DATA ^= (1<<K100); > > Wenn ich kompeliere dann bekomme ich staendig folgenden Fehler fuer die > letzte Zeile. > >>>value required as left operand of assignment > > Weis jemand was ich falsch mache? Du mißverstehst #define. Das ist nur eine textuelle Ersetzung. Du hast programmiert: 0x00 ^= (1<<5); Und das ist offensichtlich Blödsinn. Viele Grüße, Simon
Zumal LSO_DATA auch keinen Speicher zugewiesen wurde, also ist der Ausdruck "LSA_DATA ^= (1<<K100)" irgendwie witzlos :D LG
student schrieb: > will eigentlich nur den Bit auf der Stelle K100 eines Bytes LSO_DATA zu > invertiren. > Datum: 17.08.2011 03:46 Das erklärt einiges... Probiers mal so:
1 | char LS0_DATA = 0x00; |
2 | #define K100 5
|
3 | |
4 | LS0_DATA ^= (1<<K100); |
Und jetzt überleg mal, warum LSO_DATA bei mir ein gültiger lvalue ist und bei dir nicht...
student schrieb: > ich versuche mich gerade in AVR-GCC-Tutorial einzuarbeiten mit AVR > studio. Es klapp soweit alles gut. Ausser mit folgenden Code Zeilen. Ich > will eigentlich nur den Bit auf der Stelle K100 eines Bytes LSO_DATA zu > invertiren. Die folgenden Zeilen sind überhaupt kein Code. student schrieb: > Weis jemand was ich falsch mache? Du kannst kein C. Besorg' dir ein C-Buch und arbeite erstmal das durch. Sonst wird das nie was. mfg.
Und ganz wichtig: Vorne zu lesen anfangen. Nicht mitten drinn, bei einem Kapitel das dich interessiert. Dann kommt es auch nicht zu diesen Fehleinschätzungen, was #define eigentlich macht.
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.