Forum: Mikrocontroller und Digitale Elektronik 2 8bits variabeln in 16bit variable


von Mokhtar (Gast)


Lesenswert?

Hallo,

  Ich habe einen Problem beim Labor-vorbereitung(Mikroprozessor), ich 
muss eine funktion "unsigned int getElevatorPosition() definieren die 
aktuelle Position eines Aufzugs in 16bit-Zahl zurückliefern, die 
Implemetierung liest die Werte in PortC und D und kombiniert sie! Also 
mein Problem wie kann ich 2 variablen von 8bits in 16bits 
kombienieren??!!
  BITTE UM HILFE!

von Karl H. (kbuchegg)


Lesenswert?

uint8_t wert1;
 uint8_t wert2;

  return wert1 << 8 + wert2;

oder

  return wert1 * 256 + wert2;

(ein bischen Mathe ist nicht verboten)

von Frickler (Gast)


Lesenswert?

1
uint8_t a;
2
uint8_t b;
3
uint16_t result;
4
5
result = (a << 8) | b;
6
result = (b << 8) | a;
7
result = (a << 8) + b;
8
result = (b << 8) + a;
9
result = (a * 256) | b;
10
result = (b * 256) | a;
11
result = a * 256 + b;
12
result = b * 256 + a;

von Sam .. (sam1994)


Lesenswert?

typedef union {
        uint16_t i16;
        struct {
                uint8_t i8l;
                uint8_t i8h;
        };
} convert16to8;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Samuel K. schrieb:
> typedef union {...}
Ja, dazu solltest du aber vorher wissen, wie diese Union tatsächlich auf 
dem gewünschten Zielsystem implementiert wird (wg. Little- bzw. 
Big-Endian)...

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.