Man kann ohne Schiebeoperationen auskommen, indem man direkt in den RAM über Pointer schreibt:
Das sieht furchtbar aus, funktioniert aberCode:#define SaveU16(u16,MSB,LSB) *(((uint8_t*)(&u16))+0)=LSB; *(((uint8_t*)(&u16))+1)=MSB;
Im Code verwenden mit
Das ist schön kompakt und ist im Hauptprogramm gut lesbar,Code:SaveU16(Ergebnis,MSByte,LSByte);
ABER: Das funktioniert nur auf 8-Bit Mikrocontrollern, die selber mit Little Endian arbeiten (bei Big Endian müssen +0, +1 getauscht werden), UND das ist nicht ohne weiteres portierbar.
Grüße,
Bernhard
Lesezeichen