WinAVR Bitzuweisung

Gast #1041466
Lesenswert?

Hallo Zusammen,

ich versuche gerade, da die Lizenz von ISP ablauft auf WinAVR
umzusteigen. Soweit ok, nur tritt hier ein Fehler auf
Bitzuweisung.
1
#define LCDDATA0  PB0
2
#define LCDDATA1  PB1
3
#define LCDDATA2  PB2
4
#define LCDDATA3  PB3
5
#define LCDDATA4  PB4
6
#define LCDDATA5  PB5
7
#define LCDDATA6  PB6
8
#define LCDDATA7  PB7
9

10
data = 0x38;
11

12
LCDDATA0 = data;
13
LCDDATA1 = data >>1;
14
LCDDATA2 = data >>2;
15
LCDDATA3 = data >>3;
16
LCDDATA4 = data >>4;
17
LCDDATA5 = data >>5;
18
LCDDATA6 = data >>6;
19
LCDDATA7 = data >>7;
1
LCDDATA1 = data >> 1

ergibt immer einen Fehler, kann ich das einfach
mit
1
LCDDATA2 |= (2 << data)

übersetzen, und ebenso dann auch
1
LCDDATA0 = data;

zu
1
LCDDATA0 |= (0 << data)

???

Wohl nicht oder. Weiß jemand wie hier die richtige Syntax für
WINAVR wäre?

Danke & Viele Grüße aus Neuss
ABSimon
Gast #1041471
Lesenswert?

>LCDDATA1 = data >> 1

Ja, muss ja eine Fehler geben.
LCDATA1 ist ja mit PB0 gleichgesetzt.

Und PB0 wurde mit 0 definiert. Also steht da:

>LCDDATA1 = data >> 1

    0     = 0x38>>1 = 0x19

Und das stimmt ja nicht.
Gast #1041550
Lesenswert?

Hi,

hatte ich vergessen, vorab wird
1
DDRB  = 0b11111111;
2
PORTB = 0b11111111;

gesetzt. Dieser Fehler wird ausgegeben:
1
error: lvalue required as left operand of assignment

"Linker Wert erforderlich beim linken Zuweisungs-Operanden."

Kennt das jemand, was mache ich falsch, wie werden ansonsten
bei Variablen einzelne Bits anderen Variablen zugewiesen.

Danke & Viele Grüße
ABSimon

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren