Abstrak
Timer, counter, and interrupt are fitur of Bit 7 – FOC0 : Force Output Compare
microprocessor ATmega8535. Atmega8535 have 3
timer are timer 0 (8 bits), timer 1 (16 bits), and timer 2 Bit 6, 3 – WGM01/0 : Waveform Generation Mode
(8 bits). The scale or setting its we need oscilator clock
Bit 5,4 – COM01/0 : Compare Match Output
and seeting prescaler (8,64,256, or 1024)/ In this
module we will do practice about tts. First, we make Mode
delay using timer/counter in Atmega 8535. Next, we set Bit 2,0 – CS02/0 : Clock Select
clock with external clock source., make appication of
interrupt with timer/counter. Finally, we will use of
external interrupt. From this module have objective to Konfigurasi Mode Operasi [1]
understand about timer/counter and interrupt.
2. STUDI PUSTAKA
- - -
:
Bit 1 – OCIE0 : Timer/Counter 0 Output Compare Match 4. HASIL DAN ANALISIS
Interrupt Enable
2.A Delay dengan Timer/Counter
Bit 0 – TOIE0 : Timer/Counter 0 Overflow Interrupt
Enable Tugas 2.A.1
Kode program bahasa C pada Code Vision AVR untuk
mendesain fungsi delay dengan Timer/Counter. Delay
yang diset adalah sebesar 1 sekon.
1s
Keuntungan dari menggunakan delay dengan
Timer/counter adalah bahwa proses pencacahan untuk
delay dapat dilakukan dengan frequency yang berbeda-
beda dengan penyesuaian prescaler dan nilai bit OCR.
Tugas 2.A.2
Untuk memnuat program delay function dengan
Timer/Counter awalnya kami menset ‘enable’ untuk Kode program bahasa C pada Code Vision AVR untuk
interrupt nya dengan counter menset TIMSK bernilai mendesain fungsi delay dengan Timer/Counter. Delay
‘1’ (TIMSK=(TOIE1)). Agar mencacah dari nol hingga yang diset adalah sebesar ((n mod 9) +1)sekon, dengan
n merupakan nomor kelompok.
maksimum, kami menset nilai register TCNT1 sama
dengan ‘0’ (TCNT1H=0 dan TCNT1L=0). Kami
menginginkan delay sebesar 1 sekon. Untuk mengatur
jumlah siklus clock selama 1 sekon dengan frequency
clock = 16 MHz dan prescaler 256 kami menentukan
nilai dari OCR1.
fCLK I/O
OCR = t delay ×
N
16 MHz
OCR = 1 × = 6250010 = 0xF424
256
OCR1AL = 24
OCR1AL = 24
8s
(a) (b)
(c)
Gambar 3 Hasil Pada Kit Praktikum Tugas B.1
8
Analisa: time
Hasil pada kit praktikum sesuai dengan desain s
kode program pada CV AVR. Pertama niali TCCR
sebagai clock external .
TCCR0= 0b00000110;
Kondisi diatas menunjukkan falling edge clock
Nilai TCNT0 dan OCR0 nilainya diatur.
TCNT0= 123;
OCR0=125;
Nilai TCNT dan OCR selalu dibandingkan. Nilai
TCNT akan selalu bertambah (+1) setiap penekanan
push botton sebanyak 1 kali. Nilai TCNT tidak boleh
melebihi nilai OCR. Apabila melebihi maka
DAFTAR PUSTAKA
[1] Jackstar H. S., Panduan Penulisan Laporan,
Jacks Publishing, Bandung, 2008.
[2] Modul Praktikum Sistem Mikroprosessor,
ITDel, Sitoluama, 2018.
Analisa:
Hasil pada kit praktikum sesuai dengan desain
kode program pada CV AVR. Pertama niali TCCR
sebagai clock external .
TCCR0= 0b00000110;
Kondisi diatas menunjukkan falling edge clock
Nilai TCNT0 dan OCR0 nilainya diatur.
TCNT0= 118;
OCR0=125;
Nilai TCNT dan OCR selalu dibandingkan. Nilai
TCNT akan selalu bertambah (+1) setiap
penekanan push botton sebanyak 1 kali. Nilai TCNT
tidak boleh melebihi nilai OCR. Apabila melebihi
maka
kembali ke kondisi clear bit (PORTA=0xAA). Pada
saat 8 kali penekanan (TCNT0=OCR0=125) maka
nilai PORTA= 0xAA berubah menjadi PRTA=0x55,
dan dengan delay 0,5 sekon akan kembali lagi ke
kondisi clear bits(PORTA=0xAA). Clock external
adlah penekanan push button.
5. KESIMPULAN
Dari Praktikum yang telah dilakukan kami
memperoleh kesimpulan:
TugasA1.c
#include <mega8535.h>
void init_tim(void);
void Delay(void);
int main()
{
DDRA = 0x00;
init_tim();
while (1) {
PORTA = 0x0F;
Delay();
PORTA = 0xF0;
Delay();
}
return 0;
}
void init_tim(void)
{
// mode operasi CTC, sumber clock prescaller 256
TCCR1A = 0;
TCCR1B = 0b00001100;
// overflow interrupt disable
TIMSK |= (0<<TOIE1);
}
void Delay(void)
{
// overflow interrupt enable
TIMSK |= BV(TOIE1);
// penentuan nilai awal timer
TCNT1H = 0;
TCNT1L = 0;
// penentuan nilai compare untuk delay 1 detik
OCR1AH = 0xF4;
OCR1AL = 0x24;
// menunggu hingga compare match, nilai TCNT1 = OCR1A
while (!((TIFR) & (1 << (OCF1A))));
// meng-nol-kan flag
TIFR |= BV(OCF1A);
//overflow interrupt disable
TIMSK |= BV(TOIE1);
}
int main()
{
DDRA = 0x00;
init_tim();
while (1) {
PORTA = 0x0F;
Delay();
PORTA = 0xF0;
Delay();
}
return 0;
}
void init_tim(void)
{
// mode operasi CTC, sumber clock prescaller 1024
TCCR1A = 0;
TCCR1B = 0b00001101;
// overflow interrupt disable
TIMSK |= (0<<TOIE1);
}
void Delay(void)
{
// overflow interrupt enable
TIMSK |= BV(TOIE1);
// penentuan nilai awal timer
TCNT1H = 0;
TCNT1L = 0;
// penentuan nilai compare untuk delay 8 detik
OCR1AH = 0xF4;
OCR1AL = 0x24;
// menunggu hingga compare match, nilai TCNT1 = OCR1A
while (!((TIFR) & (1 << (OCF1A))));
// meng-nol-kan flag
TIFR |= BV(OCF1A);
//overflow interrupt disable
TIMSK |= BV(TOIE1);
}
char str[10];
void main(void)
{
DDRB.0=0;
PORTB.0=1;
lcd_init(16);
lcd_clear();
lcd_putsf("Counter 0=");
TCCR0=0B110;
while(1)
{
sprintf(str,"%i",TCNT0);
lcd_gotoxy(10,0);
lcd_puts(str);
}
}
Tugas B2.c
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>
char str[10];
void main(void)
{
DDRB.0=0;
PORTB.0=1;
lcd_init(16);
lcd_clear();
lcd_putsf("Counter 0=");
TCCR0=0B110;
while(1)
{
sprintf(str,"%i",TCNT0);
lcd_gotoxy(10,0);
lcd_puts(str);
}
}