Дело не в модулях.
Первая проблема: неправильная адресация массива, нужно _TAPRC[0].
Вторая проблема: см. код. Но проблема присвоение адреса одной переменной другой через третью пока не решена, помоему проще брать напрямую адрес _MsgBuf.
Для модуля раскидайте функции и объявления.
Код
typedef struct
{
unsigned char lbyte;
unsigned char hbyte;
} word_t;
word_t _TAPRC[1];
unsigned char _CRT;
unsigned char _MsgBuf = 0x88;
unsigned char *_pRMsg;
unsigned char cnt=0; //variable for count the recieved byte
unsigned char xxx = 0x55;
void demo()
{
_TAPRC[0].lbyte = 0x77; // <--------------
_TAPRC[0].hbyte = 0x09; // <--------------
}
void uartGetMsg (unsigned char *pMsg, unsigned char *count) //function returns the addres of received message
{
pMsg = &_MsgBuf;
*count = _CRT; // <--------------
}
void main(void)
{
_CRT = 10;
demo();
_pRMsg = &xxx;
uartGetMsg(_pRMsg, &cnt); //find the address of the message
//uartGetMsg(&xxx, &cnt);
demo();
}