#define DDR_OUTPUT 0x01
#define LED_ENABLE() PORTB |= 1 << PORTB0
#define LED_DISABLE() PORTB &= ~(1 << PORTB0)
int main(void)
{
DDRB = DDR_OUTPUT;
while (1) {
if (PIND & (1 << PIND2)) {
LED_ENABLE();
} else {
LED_DISABLE();
}
}
}
На кнопку подано напряжение 5V. Когда зажима ее, открывается "канал" к параллельной части кнопки, и ток должен течь по красному проводу в PIND2. В коде я проверяю, если в этом пине единичка (то есть достигнут определенный уровень напряжения на этом пине), включи лампочку, иначе выключи.
Когда программа запускается, получается так, что PIND2 уже имеет 1 (условно), и лампочка горит всегда, хотя я еще не зажал кнопку.
Вот сама схема