PDA

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.

Downad
05.01.2007, 15:33
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

bL1nK
23.01.2007, 21:24
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.