Forum: Compiler & IDEs Bit-Verschiebung


von Mauro (Gast)


Lesenswert?

nAbend, ich habe 2 bedeutende Bits auf PortC, die ich von allen anderen
Ports trennen will.
D.h.

ich habe PortC: xxXX.xxxx, XX will ich alleine haben, und zwar nach
rechts an den Anfang:  0000.00XX
Der Rest Nullen. Da dachte ich so:

uint8_t status(void)
{
  uint8_t data;
  data = ((PINC>>4) & 0x03); // 0000.00XX
  return data;
}

Wenn ich dann aber irgend ein tempo damit beschreiben will:

temp = status;

meint der Compiler folgende Warnung:

warning: assignment makes integer from pointer without a cast


Was läuft da nicht richtig? Ist es die Verschiebung/Rotation << >> ?

von Rolf Magnus (Gast)


Lesenswert?

Wenn du eine Funktion aufrufen willst, mußt du den
Funktionsaufrufoperator benutzen. Dein
1
temp = status;

nimmt die Adresse der Funktion status und weist sie temp zu. Versuch
mal:
1
temp = status();

von Peter (Gast)


Lesenswert?

Du hast die Klammer vergessen..!

temp = status();

MfG Peter

von Mauro (Gast)


Lesenswert?

aaaa..ich tret mich mal

danke ;-)

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
Noch kein Account? Hier anmelden.