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!
uint8_t wert1; uint8_t wert2; return wert1 << 8 + wert2; oder return wert1 * 256 + wert2; (ein bischen Mathe ist nicht verboten)
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; |
typedef union { uint16_t i16; struct { uint8_t i8l; uint8_t i8h; }; } convert16to8;
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.