#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB |= (1 << DDB5); // PB5 (13) OUTPUT
DDRD &= ~(1 << DDD2); // PD2 (2) INPUT
char valor; // estado atual do botão
char estado = 0; // estado atual do led
char anterior = 0; // estado anterior do botão
while (1) {
valor = (PIND & (1 << PIND2)) == (1 << PIND2);
if (valor == 1 && anterior == 0) { // Transição usando borda de subida
if (estado == 1) // Inversão do estado do LED
estado = 0;
else
estado = 1;
}
if (estado == 1)
PORTB |= (1 << PORTB5);
else
PORTB &= ~(1 << PORTB5);
anterior = valor;
_delay_ms(50);
}
}