The original problem was to combine individual bytes into a word, rather than split a word into individual bytes. However, the macro approach seems a good one.
#define conv2word(hi,lo) (word)hi*256+(word)lo
e.g.word wordval;wordval = conv2word(ATD1RH,ATD1RL);
The compiler seems to optimise the code better using multiplication rather than a left-shift process.
Retrieving data ...