Archiv verlassen und diese Seite im Standarddesign anzeigen : 16bit in high and low bit aufteilen
MartinFunk
05.01.2007, 13:29
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
Hubert.G
05.01.2007, 15:16
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
MartinFunk
05.01.2007, 15:56
Danke für die hilfe, so funktioniert es jetzt.
MfG Martin
ich würds mit union machen
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;
so könntest ne variable initialisieren wenn du bereits ne uint16 hast dann einfach casten
(byte_t *) variable16bit;
und dann wie oben, ähnlich wie bei ner struct auf die elemente zugreifen.
ps: ich bin mir jetzt nicht sicher mit byte[0] ob der das LSB nimmt denke aber schon.
SprinterSB
23.01.2007, 23:59
ich würds mit union machen
Wobei es etwas missverständlich ist, die "byte_t" zu nennen, weil ja insgesamt 16 Bits drinne sind.
#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;
ps: ich bin mir jetzt nicht sicher mit byte[0] ob der das LSB nimmt denke aber schon.
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.