#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
void TimerInit();
int hitungan = 0;
ISR (TIMER1_OVF_vect)
{
if(hitungan < 59)
{
hitungan += 1;
}
else
{
hitungan = 0;
}
PORTA = ~(hitungan); //output nilai hitungan ke PORTA
TCNT1 = -15625;; //reset counter
}
int main(void) {
DDRA = 0xFF; //Port A sebagai Output
PORTA = ~(hitungan); //Output nilai awal hitungan ke PORTA
TimerInit(); // inisialisasi timer
sei(); //enable global interupt
while(1)
{
sleep_mode(); //sleep
}
}
void TimerInit(void) {
TCCR1B |= (1 << CS12) | (1 << CS10); //Seting prescaler 1024
TIMSK1 |= (1 << TOIE1); //Enable overflow interrupt
TCNT1 = -15625; //setting counter agar 1 detik (15625 hitungan sebelum overflow)
}