Он вообще умножать на 256 (или делать << 8) не будет, он возьмет нужный байт и все. Но, если Вам надо через union, то вот:
typedef union
{
unsigned int rez16;
unsigned char rez8[2];
}typeRez;
unsigned int Izm_ADC( void )
{
typeRez Rezult;
ADC_CLR; // clear ready ADC
ADC_START; // start ADC
while( !(ADC_COMPLETE) ); // надо бы еще выход по таймауту
ADC_CLR; // clear ready ADC
Rezult.rez8[ 0 ] = ADCL; // IAR-endian
Rezult.rez8[ 1 ] = ADCH;
return (Rezult.rez16);
}//uint Izm_ADC(void)