Veja o exemplo abaixo:
- Código: Selecionar todos
typedef union {
byte Byte;
struct {
byte PTAD0 :1; /* Port A Data Register Bit 0 */
byte PTAD1 :1; /* Port A Data Register Bit 1 */
byte PTAD2 :1; /* Port A Data Register Bit 2 */
byte PTAD3 :1; /* Port A Data Register Bit 3 */
byte PTAD4 :1; /* Port A Data Register Bit 4 */
byte PTAD5 :1; /* Port A Data Register Bit 5 */
byte :1;
byte :1;
} Bits;
struct {
byte grpPTAD :6;
byte :1;
byte :1;
} MergedBits;
} PTADSTR;
extern volatile PTADSTR _PTAD @0x00000000;
#define PTAD _PTAD.Byte
#define PTAD_PTAD0 _PTAD.Bits.PTAD0
#define PTAD_PTAD1 _PTAD.Bits.PTAD1
#define PTAD_PTAD2 _PTAD.Bits.PTAD2
#define PTAD_PTAD3 _PTAD.Bits.PTAD3
#define PTAD_PTAD4 _PTAD.Bits.PTAD4
#define PTAD_PTAD5 _PTAD.Bits.PTAD5
#define PTAD_PTAD _PTAD.MergedBits.grpPTAD
Ele foi extraido do fonte do CodeWarrior da Freescale.
Em sua aplicação você poderia referir-se a cada um dos bits da variável (PTAD_PTAD0, PTAD_PTAD1, etc ou _PTAD.Bits.PTAD0, _PTAD.Bits.PTAD1, etc) ou aos 8 bits de uma vez (PTAD ou _PTAD.Byte)
O
byte com
b minúsculo já foi devidamente definido antes deste código. Você pode substituir por
char.
A
Union faz com que os 8 bits da
Struct sejam compartilhados pelo
Byte. Neste caso um novo tipo de dado está sendo criado, mas poderia apenas ser uma declaração de uma única variável.
Se ainda não conhecia estes termos (
Struct,
Union e
typedef), sugiro que dê uma estudada neles, pois são um poderoso recurso de
C.
Espero ter ajudado.
Laercio[/quote]
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!