int timer = 0;
bool state = 0;
int intervalo = 100;
void setup (){
pinMode(13, OUTPUT ); // Inicializa el pin del LED como salida
TCCR0A = (1 << WGM01); // Establece el modo CTC del timer0
OCR0A = 0xF9; // Establece el valor para 1ms
TIMSK0 |= (1 << OCIE0A); // Establece la solicitud de interrupción cuando el valor del temporizador coincide con el valor en OCR0A
sei (); // Habilita las interrupciones
TCCR0B |= (1 << CS01 ); // Establece el prescaler a 1/64 de reloj
TCCR0B |= (1 << CS00);
}
void loop (){
// De esta manera puedes contar 1 segundo porque la solicitud de interrupción es cada 1ms
if (timer >= intervalo ){
state = !state;
timer = 0;
}
digitalWrite(13, state); // Enciende o apaga el LED
}
ISR(TIMER0_COMPA_vect) { // Esta es la solicitud de interrupción
timer++;
}