Neojag
Power Member
Já programo C para PCs há uns anos (se bem que os meus conhecimentos não são particularmente elevados). Entretanto comecei a programar para microcontroladores e deparo-me várias vezes com a necessidade de configurar apenas certos bits de um registo de 8 bits. Tenho utilizado uma sintaxe do tipo
meh &= 0xF0 //Limpa os últimos quatro bits e deixa os primeiros inalterados
meh |= 0x13 //Deixa os primeiros inalterados e configura os últimos quatro para 0011
Entretanto em código já feito tenho-me deparado com uma sintaxe que nunca vi (por exemplo, para ler os pinos de uma determinada porta de um ATMega). Do género:
btnState = ~PINB & (1<<3);
DDRB |= 1<<DDB4;
Alguém me pode explicar que diabo é que isto faz?
Obrigado!
meh &= 0xF0 //Limpa os últimos quatro bits e deixa os primeiros inalterados
meh |= 0x13 //Deixa os primeiros inalterados e configura os últimos quatro para 0011
Entretanto em código já feito tenho-me deparado com uma sintaxe que nunca vi (por exemplo, para ler os pinos de uma determinada porta de um ATMega). Do género:
btnState = ~PINB & (1<<3);
DDRB |= 1<<DDB4;
Alguém me pode explicar que diabo é que isto faz?
Obrigado!