invalid lvalue

Gast #236900
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
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
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
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.
Gast
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

??
Gast
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
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
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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.