Me gustaría encender el LED de la placa (PB5) cuando presiono su botón (PB7).
DDRB = 0xFF; // set all B-ports as output
DDRB &= ~(1<<7); // change PB7 to input
while (1)
{
if (PINB & (1<<7))
PORTB |= (1<<5); // when button is pressed, turn on the LED
else
PORTB &= ~(1<<5); // when button is not pressed, turn off the LED
}
Sin embargo, PINB & (1<<7)
devuelve 1 cuando yo excepto 0, y 0 cuando presiono el botón. Podría agregar un no operador y estaría bien, pero me gustaría saber lo que entiendo mal. ¿Por qué el octavo bit de PINB
se lee como 0 cuando presiono el botón?