#include <avr/io.h>
#include <avr/interrupt.h>

#define F_CPU 16500000L

#define LED_PIN     PB1
#define LED_TOGGLE  PINB |= (1 << PINB1); // Alterna entre liga e desliga o LED

volatile int divider = 0;

ISR(TIMER0_COMPA_vect) {
    if (divider == 0) {
        LED_TOGGLE
    }
    divider++;
    divider %= 100;
}

void initTimer0()
{
    // Limpa os registradores
    TCCR0A = 0;
    TCCR0B = 0;
    TCNT0 = 0;

    // Define o valor do OCR, onde:
    // F_CPU / ((OCR0A + 1) * 1024) => 16500000 / ((160 + 1) * 1024) = 100,08 Hz
    OCR0A = 160;

    // CTC
    TCCR0A |= (1 << WGM01);

    // Prescaler 1024
    TCCR0B |= (1 << CS02) | (1 << CS00);

    // Output Compare Match
    TIMSK |= (1 << OCIE0A);

    // Habilita a interrupção
    sei();
}

int main(void) {
    // Inicializa as configurações do timer0
    initTimer0();

    while (1) {
        // Loop infinito
    }

    return (0);
}
ATTINY8520PU