// Definir los pines del LED y el botón
#define LED_PIN 7
#define BUTTON_PIN 2
// Función para inicializar el pin del LED como salida
void setupLED() {
DDRD |= (1 << LED_PIN);
}
// Función para inicializar el pin del botón como entrada con resistencia pull-up
void setupButton() {
DDRD &= ~(1 << BUTTON_PIN);
PORTD |= (1 << BUTTON_PIN);
}
// Función para activar o desactivar el LED
void setLED(bool value) {
if (value) {
PORTD |= (1 << LED_PIN);
} else {
PORTD &= ~(1 << LED_PIN);
}
}
// Función para manejar la interrupción del botón
ISR(PCINT2_vect) {
if (PIND & (1 << BUTTON_PIN)) {
setLED(true);
} else {
setLED(false);
}
}
void setup() {
// Inicializar el pin del LED y el botón
setupLED();
setupButton();
// Habilitar la interrupción del pin del botón
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18);
// Habilitar las interrupciones globales
sei();
}
void loop() {
// No se requiere código en el loop
}
int main() {
setup();
while (true) {
loop();
}
return 0;
}