Forum: Compiler & IDEs Trennen einer Variablen


von StartER (Gast)


Lesenswert?

Hallo!
Wie kann ich eine 16Bit Variable (z.B.0xFFFF) in zwei 8 Bit Variablen
trennen?? Möchte sie über einen 8 Bit Port ausgeben.

ganz nach dem Motto:
Variable = 0xFFFF;
PORTA = Variable;


Danke für eure Hilfe!

von Benedikt (Gast)


Lesenswert?

Am effektivsten über eine Strucktur mit 2 chars und 1 int
Am einfachsten mit Port1=Variable&255, Port2=Variable>>8

von StartER (Gast)


Lesenswert?

das habe ich leider jetzt nicht ganz verstanden! :-(

von Rick Dangerus (Gast)


Lesenswert?

HiByte = (Variable >> 8);
PORTA = HiByte;

LowByte = (unsigned char) Variable;
PORTA = LowByte;

Rick

von StartER (Gast)


Lesenswert?

schon klar...einfach mal nachdenken! danke!

von MSE (Gast)


Lesenswert?

Mit union:

union TInt16 {
  unsigned int u;
  unsigned char b[2];
};


Du kannst dann folgendes machen:

TInt16 otto;
otto.u = 0xf01a;
PORTA = otto.b[1];
PORTB = otto.b[0];

Gruß, Michael

von Christoph _. (chris)


Lesenswert?

> Du kannst dann folgendes machen:
> union ...

Das ist allerdings nicht mehr portabel (Little Endian vs. Big Endian),
weswegen die Lösung mit dem Shiften vermutlich doch besser geeignet
ist.

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.