Hi,
ich möchte eine 16 bit variable in zwei 8 bit varialblen aufteilen. Kann mir jemand sagen wie ich 16bit in high und low bit aufteilen kann.
MfG Martin
Druckbare Version
Hi,
ich möchte eine 16 bit variable in zwei 8 bit varialblen aufteilen. Kann mir jemand sagen wie ich 16bit in high und low bit aufteilen kann.
MfG Martin
Input = low;
Input >>=8;
Input =high;
So sollte es gehen.
und ich wollte es über die Bitoperatoren lösen
byte = 16 bit variable
low = byte & 0xFF00
high = byte & 0x00FF >>8
Danke für die hilfe, so funktioniert es jetzt.
MfG Martin
ich würds mit union machen
so könntest ne variable initialisieren wenn du bereits ne uint16 hast dann einfach castenCode:typdef union {
uint8_t byte[2];
uint16_t word;
} byte_t
byte_t variable;
variable.word = 0xAF;
variable.byte[0] = 0xF;
variable.byte[1] = 0xA;
und dann wie oben, ähnlich wie bei ner struct auf die elemente zugreifen.Code:(byte_t *) variable16bit;
ps: ich bin mir jetzt nicht sicher mit byte[0] ob der das LSB nimmt denke aber schon.
Wobei es etwas missverständlich ist, die "byte_t" zu nennen, weil ja insgesamt 16 Bits drinne sind.Zitat:
Zitat von bL1nK
Code:#include <inttypes.h>
typdef union
{
uint8_t asByte[2];
uint16_t asWord;
} data16_t;
data16_t variable;
variable.asWord = 0x1234;
variable.asByte[0] = 0x34;
variable.asByte[1] = 0x12;
Das ist architekturabhängig, s.g. Endianess. Für AVR (bzw. avr-gcc) ist das der Fall. Wenn man also Kommunikation macht, muss man da schon aufpassen.Zitat:
Zitat von bL1nK