invalid lvalue

Gast #236900
Lesenswert?

hallo,
immer wenn ich folgenden code compilieren will:



#include <io.h>
#include "..\lib\mydefs.h"
#include "..\lib\lcd.h"
#include "..\lib\stepper.h"
#include "..\lib\rc5.h"
#include "..\lib\uart.h"
#include "..\lib\sensor.h"

int main(void)
{

// ports auf empfang setzen

PB0 = 0x1F;
PB1 = 0x1F;
PB2 = 0x1F;
PB3 = 0x1F;
PB4 = 0x1F;


  return 0;
}

komm die fehlermeldung:

"invalid lvalue in assignment" bei jeder port-zeile. wo liegt der
fehler ?

vielen dank für eure hilfe :)
Gast #236903
Lesenswert?

Dir ist schon bewusst, dass wenn du PORTB schreibst auf den ganzen Port
(8Bit) zugreifst. Deine zuweisung sah zuvor eher nach bitzuweisungen
aus (PB0, PB1.... auch wenn das 0x1F dann sinnlos wäre).

PORTB = 0x1F;
müsste eigentlich funktionieren, wenn du im makefile dar richtige
device angegeben hast.
zuvor solltest du allerdings das DDR für den entsprechenden Port
setzten. wie du mit dem kommentar angedeutet hast.
wie das geht kannst du millionenfach im internet lesen.
Viel Glück.

PS: ganz schön viele includes dafür, dass du netmal sowas ohne hilfe
hinbekommst ;)
Gast #236904
Lesenswert?

meine ganze intention von anfang an war es die datenrichtung auf empfang
zu setzen. hab da was ordentlich missverstanden, deswegen steht da oben
der bockmist.

schreibe ich jetzt aber vermeintlich korrekt:

DDRB = 0x1F;

kommt wieder der lvalue fehler :(
Gast #236907
Lesenswert?

Herrje, hatte ich PB0 geschrieben, oder vielleicht doch DDRB? Versuch
nicht drüber nachzudenken was ich vielleicht gemeint haben könnte aber
nicht zu fragen wagte, sondern schau einfach nach was ich koknret
gefragt habe. Also als was DDRB definiert ist.
Gast #236908
Lesenswert?

wenn du mir sagst wo ich das sehe ? :(

sry, aber ich betrete hier gerade absolutes neuland. tut mir leid wenn
ich euch mit meiner dummheit überschütte aber ich bin auf euch
angewiesen. danke.
Gast #236909
Lesenswert?

Welches C-Buch hast du? Da sollte an und für sich drinstehen, wie der
Präprozessor arbeitet und wie solche Fehlermeldungen zu verstehen sind.
Wie A.K. gesagt hat, sag entweder dem Compiler, den Zwischentext
auszuspucken oder such in den .h-Dateien nach DDRB.

bzw, um wenigstens etwas Portabilität zu bewahren, benutz in den
Pfadangaben der #includes bitte normale Schrägstriche (/), keine
Backslashs (\).

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