Versuchs mal so:

byte_a = (uint8_t)daten;
byte_b = (uint8_t)( daten >> 8 );

Es könnte nämlich sein, dass er optimieren will, und daten schon umwandelt, bevor er den rechts-shift macht...

mfg
zerush