Man kann ohne Schiebeoperationen auskommen, indem man direkt in den RAM über Pointer schreibt:
Code:
#define SaveU16(u16,MSB,LSB) *(((uint8_t*)(&u16))+0)=LSB; *(((uint8_t*)(&u16))+1)=MSB;
Das sieht furchtbar aus, funktioniert aber
Im Code verwenden mit
Code:
SaveU16(Ergebnis,MSByte,LSByte);
Das ist schön kompakt und ist im Hauptprogramm gut lesbar,
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