Finalmente, y gracias a vuestra ayuda, he conseguido que funcione.
La solución que me ha funcionado ha sido la de los punteros, y el código ha quedado así:
Definiciones
Codigo:
typedef struct RATON_Byte1{
unsigned BotonIzdo :1;
unsigned BotonDcho :1;
unsigned BotonCentral :1;
unsigned Control :1;
unsigned SentidoX :1;
unsigned SentidoY :1;
unsigned OverflowX :1;
unsigned OverflowY :1;
} Tipo_Byte1_Raton;
Tipo_Byte1_Raton *RATON_Byte1;
Uso de la estructura
Codigo:
RATON_Byte1=&DatosRecibidos[0];
if (!RATON_Byte1->SentidoX)
{ bla, bla, bla ...}
Sisco, he probado la opción que indicas pero no consigo asignar un Char a la estructura, da error al compilar. Date cuenta que en tu ejemplo, la asignación de PORTB la haces sobre un char, no sobre una estructura.
También he probado la opción del typecast anunciada por wqtrp pero falla al compilar.
Y bien, ¿qué es eso de las uniones?, ¿una especie de "alias"?