#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void interrupcoes_externas_int_configura(void) {
EICRA = 0x02; // ISC3[1:0]=00 ISC2[1:0]=00 ISC1[1:0]=00 ISC0[1:0]=10
EICRB = 0x00; // ISC7[1:0]=00 ISC6[1:0]=00 ISC5[1:0]=00 ISC4[1:0]=00
EIMSK = 0x01; // INT7=0 INT6=0 INT5=0 INT4=0 INT3=0 INT2=0 INT1=0 INT0=1
sei(); // habilita as interrupções globalmente
}
// Subrotina de interrupção para INT0
ISR(INT0_vect) {
// Troque o estado do LED (inverte o bit)
PORTB ^= (1 << PB0);
}
int main(void) {
// Configurar o pino de LED (PB0) como saída
DDRB |= (1 << DDB0);
// PD0 é configurado como entrada
DDRD &= ~(1 << DDD0);
// Usamos o resistor de pull-up interno de PD0
PORTD |= (1 << DDD0);
interrupcoes_externas_int_configura();
while (1) {
// Seu código principal pode continuar aqui
}
return 0;
}