// 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;
}
$abcdeabcde151015202530fghijfghij