Es gibt keine Variable mit 4bits, das kleinste in ANSI-C ist ein char mit 8 bits. Bei µC wird dann meist aich noch eine zusätzliche Variable bit eingeführt, welcher, wundersamerweise (), 1 bit lang ist.
Zu deiner Frage, die Antwort versteckt sich hinter und-operatoren, mit denen du die 12-bit weite Variable zuerschneiden und hinter shift-operationen um die obereb 8 bit herauslesen zu können.
Code:
unsigned short x=0x0ABC;
unsigned char hbyte=0x00; // soll am Ende 0xBC enthalten
unsigned char lbyte=0x00; // soll am Ende 0x0A enthalten
lbyte=x&0x00FF; // lösche die obereb Bits weg und schreibe das Ergebnis in die erste Variable (und sollten Warnungen kommen, ignorieren)
hbyte=((x>>8)&0x0F); // shifte die obereb 8 bits um 8 nach oben und lösche den oberen nibble
Übrigen, wenn es um ATmega und programmieren geht, ist das hier das falsche Forum .
lg
Mobius
€dit: Wie gesagt, es gibt keine 12bit Variable, da der ATmega einen 8bit weiter µC ist (denk ich mal, dass der net 16Bitig ist), also kannst du nur Variablen mit einem _ganzen_ vielfachen von 8 verwenden und dieses Kriterium erfüllt eine Variable mit 12bits net . Da nimmt man eine 16 bit und lösche dir oberen 4 bit weg ( x&0x0FFF), anders geht es nicht und. (außer du baust dir selber einen µC bei dem du die weite des Datenbusses auf 12Bit begrenzt, mit einem FPGA wirst du nur noch einige Monate entwicklungszeit haben , aber dann kannst du wieder keine 16bit weiten Variablen verwenden )
Lesezeichen