CodeVision - Campo de bits

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

CodeVision - Campo de bits

Mensagempor Maurício » 02 Jan 2007 04:32

Salve, pessoal !!
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 !!?? :shock:

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 !!! :shock: :lol: :lol:

Grato por qualquer ajuda.

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Voltar para AVR

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x