Du solltest in der union ein in32 dazudefinieren.

union {
int12 LANG;
char bB[3];
} mixit;

mixit.bB[0] = LSB
mixit.bB[2] = MSB

if (mixit.LANG & 0x800000) .,.....
oder mixit.LANG <<= 12;

das eigentliche MSB des int32 kannst du ignorieren.