Ir para o conteúdo
msr

Dúvidas com alguns "operadores"

Mensagens Recomendadas

msr    0
msr

Olá,

Tenho visto algumas linhas de código que nao tenho entendido. Se me pudessem esclarecer, agradecia. Aqui vao elas:

uint8_t pidTimer:1;
uint8_t dummy:7;

TCCR0A = (1<<CS00);

TIFR  |= _BV(OCIE0)|_BV(TOIE0);

UBRR0H = (BAUD_RR >> 8) & 0xff;

Será que me podem explicar o que é feito (de forma genérica) em cada uma destas linhas?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Baderous    31
Baderous

uint8_t pidTimer:1;
uint8_t dummy:7;

Isto define pidTimer como uma variável do tipo uint8_t, mas só será formada por 1 bit, assim como dummy só será formada por 7 bits. São os chamados bit fields.

TCCR0A = (1<<CS00);

Realiza o shift aritmético à esquerda do 1.

TIFR  |= _BV(OCIE0)|_BV(TOIE0);

Realiza o OR (bit a bit) entre TIFR, _BV(OCIE0) e _BV(TOIE0)

http://en.wikipedia.org/wiki/Bitwise_operation

UBRR0H = (BAUD_RR >> 8) & 0xff;

Faz o shift aritmético à direita e depois realiza o AND bit a bit entre o resultado e o 0xff.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade