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 :)
PB0 = Bit 0 von Port B. Im Include-File steht #define PB0 0 bei dir also effektiv 0 = 0x1F; Was Du meinst: PORTA = 0x1F; PORTB = 0x1F; ...
super, danke, das bringt mich schonmal weiter. wenn ich nun aber schreibe PORTB = 0x1F kommt das gleiche wieder :(
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 ;)
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 :(
Dann verrate uns mal, was der Präprozessor von DDRB übrig lässt. Entweder Du überredest den Compiler den entsprechenden Zwischentext auszuspucken, oder Du suchst in den Include-Files danach.
du meinst das: /* Data Register, Port B */ #define PB7 7 #define PB6 6 #define PB5 5 #define PB4 4 #define PB3 3 #define PB2 2 #define PB1 1 #define PB0 0 ??
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.
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.
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 (\).
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.