waktu timer0 = TOSC*(256-TCNT0)*N
TOSC= 1/FOSC → pada aplikasi ini saya menggunakan kristal 12 MHz, sehingga:
TOSC = 1/12Mhz = 0,0000000833 detik
timer yang dihasilkan diatas sebenarnya hanya 10 ms saja karna batas timer 0 disini hanya 8bit atau 255 saja. Nah untuk membuat waktu tunda pas 1 second kalian tinggal melakukan perulangan selama 100 kali saja , jauh lebih simple bukan.
saya menggunakan kristal 12 MHz dan menggunakan skala clock N = 1024, maka didapat:
0.01 = 0,0000000833*(256-TCNT0)*1024
TCNT0= 138 = 8A (dalam hexa)
8A dalam hexa diberikan agar timer0 bernilai 10ms.
Ikuti langkah di bawah ini saja dan buka code wizard kalian dengan setingan clock 12Mhz.
Nah untuk mengetahui hasil dari simulasinya kalian hanya perlu melihat dan mempraktekan simulasi dibawah berikut :
Untuk lebih jelas tentang penjelasan program dan selangkapnya tentang program , saya akan memberikan cuplikan programnya
#include <mega32.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdlib.h>
#include <stdio.h>
#include <delay.h>
unsigned char screen[32];
unsigned char counter=0;
int pencacah=0;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x8A;
counter++;
if (counter>=100)
{
pencacah++;
counter=0;
}
}
untuk lebih singkat dan jelasnya kalian bisa download langsung di sini
Source program timer0
download simulasi proteus timer0
0 komentar:
Post a Comment