Variablen zerlege ich immer so:

Code:
void MeineFunktion(unsigned short Addr)
{
  unsigned char high, low;

  low = Addr & 0xFF;
  high = (Addr >> 8) & 0xFF;
}

wobei man das "& 0xFF" eigentlich auch weglassen könnte.
(schaden tuts aber auch nicht, und ich finds übersichtlicher)