Estou com um problema aqui, com relação as estruturas de campos de bits no CodeVision, e gostaria de saber se alguém já passou por isso ou poderia me ajudar.
Precisava enviar para um shift-register 1 byte. Este byte corresponde à 8 relés. Cada bit, corresponde à um relé individual.
Definí a estrutura:
- Código: Selecionar todos
struct estrutura1
{
unsigned char RL1:1;
unsigned char RL2:1;
unsigned char RL3:1;
unsigned char RL4:1;
unsigned char RL5:1;
unsigned char RL6:1;
unsigned char RL7:1;
unsigned char RL8:1;
};
struct estrutura1 RELES;
Se eu seto/reseto qualquer um dos bits dessa estrutura através da atribuição:
- Código: Selecionar todos
RELES.RL3 = 1;
RELES.RL5 = 0;
O CodeVision aceita. Só que na hora de transmitir, eu tenho uma função que recebe um unsigned char:
- Código: Selecionar todos
void send_data ( unsigned char dado )
Quando eu faço a chamada da função, o CodeVision aceita:
- Código: Selecionar todos
send_data ( RELES );
Só que o danado envia pra função um valor completamente diferente do que eu atribuí pra variável !!??

Aonde é que está a barbeiragem ???
Alguém pode me ajudar ??
Já resolví o problema usando uma variável byte comum e um monte de defines pra setar/resetar os relés. Tá funcionando, mas eu queria saber aonde é que eu estou errando nessa parada, aí ! Eu nunca havia trabalhado com campos de bits. Affff.... No Keil era beeeeemmm mais fácil !!!



Grato por qualquer ajuda.
[]'s
RETI.