Anda di halaman 1dari 1

#include <mega16.

h>
unsigned int x=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xF8;
x++;
}
void tunda(unsigned int waktu)
{
TIMSK=0x01; //inisialisasi untuk mengaktifkan interrupt timer0
while (x<waktu){} //padasaat nilai x lebih kecil dari waktu maka tidak melak
ukan apa-apa
x=0; //jika nilai x lebih besar dari waktu maka nilai x reset jadi 0 (nol)
TIMSK=0x00; //inisialisasi untuk menon aktifkan interrupt timer0
}
void main(void)
{
PORTA=0x00;
DDRA=0x03; //setting PORTA.1 dan PORTA.2 sebagai output
TCCR0=0x05; //setting timer0 dengan prescaler 1024
TCNT0=0xF8; //nilai timer value dari hasil perhitungan timer 8 bit
OCR0=0x00; //pin OCR0 tidak di aktifkan
TIMSK=0x01; //inisialisasi untuk pengaktifan interrupt timer0
#asm("sei") //variabel global interrupt
while (1) //loop forever
{
PORTA.0=1; //led pada PORTA.0 aktif
tunda(1000); // tunda 1000ms
PORTA.0=0; //led pada PORTA.0 mati
tunda(1000); //tunda 1000ms
}
}

Anda mungkin juga menyukai