Anda di halaman 1dari 5

5.

Timer / Counter
Mikrokontroler MCS-51 memiliki 2 buah timer/counter pada jenis 8051,
sedangkan pada jenis 8052 terdapat 3 buah timer/counter. Timer/counter
tersebut memiliki lebar data 16 bit. Perbedaan fungsi timer/counter terletak
pada pulsa yang dicacah. Jika yang dicacah adalah pulsa clock internal,
maka fungsi yang dijalankan adalah sebagai timer, sedangkan jika yang
dicacah adalah pulsa eksternal, maka fungsinya adalah counter.

Timer/counter digunakan misalnya untuk menghitung rentetan pulsa, atau


pembangkitan delay (jeda) waktu yang presisi, pengukuran lebar pulsa,
maupun penentuan frekuensi pulsa. Semua fungsi-fungsi tersebut
sebenarnya bisa dikerjakan melalui manipulasi software. Akan tetapi
pekerjaan prosesor pusat akan menjadi terkungkung pada rutin-rutin
tersebut sehingga aplikasi-aplikasi lain menjadi sulit untuk dilaksanakan.
Karenanya akan lebih meringankan jika beban pekerjaan digantikan oleh
hardware timer/counter sebagaimana yang tersedia secara internal.

Pemakaian timer/counter diatur melalui register TMOD dan TCON.


Register data counter terdiri dari masing-masing dua byte, yaitu :
TH0 dan TL0 untuk Timer 0,
TH1 dan TL1 untuk Timer 1,
TH2 dan TL2 untuk Timer 2.

Mikrokontroler MCS51

40

5.1. Mode Operasi


Timer/counter dapat dioperasikan dalam 4 mode. Pengaturan mode ini
melalui bit-bit M1 dan M0 pada register TMOD (lihat pada bab mengenai
register). Fungsi timer mencacah pulsa clock internal dengan frekuensi
1/12 frekuensi osilator, sedangkan fungsi counter mencacah pulsa clock
eksternal melalui pin

T0, T1 atau T2. Untuk lebih mudahnya pada

pembahasan selanjutnya istilah timer/counter cukup disingkat sebagai


timer saja

Mode 0 :
Pada mode ini timer 1 bekerja dengan lebar data 13 bit, terdiri dari 8 bit
tinggi pada register TH1 dan 5 bit rendah pada register TL1. Bit tertinggi
sejumlah 3 pada register TL1 tidak dipergunakan dan isinya acak. Pada
saat pencacahan mencapai data 07FFh (semua bit pada register timer 13 bit
adalah 1) maka pada pencacahan berikutnya data pencacahan menjadi
0000h (terjadi overflow). Di saat kondisi ini terjadi timer 1 men-set flag
interrupt TF1 pada register TCON. Untuk mengaktifkan pencacahan pada
timer 1, ada dua metode yang bisa dilakukan yaitu :
Sinyal trigger start timer oleh hardware :
bit GATE pada register TMOD diset '1' dan bit TR1 pada register
TCON diaktifkan. Timer/counter 1 aktif jika pin INT

1 dalam

kondisi high.
Sinyal trigger start timer oleh software :
bit GATE pada register TMOD diclear. Timer/counter 1 aktif jika
TR1 pada register TCON diaktifkan.

Mikrokontroler MCS51

41

Pengaturan yang dilakukan pada timer 0

adalah identik dengan timer 1

seperti di atas.

Mode 1 :
Pada mode ini timer bekerja dengan lebar data 16 bit. Pengaturan
dan metode kerjanya sama dengan mode 0.
Mode 2 :
Pada mode ini timer 1 bekerja dengan lebar data 8 bit pada register
TL1. Register TH1 diisi dengan data yang akan otomatis dimuat ke
TL1 sebagai harga awal setelah terjadi overflow. Overflow
sebagaimana pada mode 0 dan 1 akan men-set bit TF1 pada register
TCON. Pengaturan yang dilakukan pada timer 0

adalah identik

dengan timer 1 seperti di atas.


Mode 3 :
Timer 1 pada mode 3 berada pada posisi hold (menggenggam)
register pencacahannya dan berhenti bekerja. Sedangkan timer 0
bekerja sebagai dua buah timer 8 bit, masing-masing adalah TH0 dan
TL0. Pengaturan timer TL0 adalah melalui bit TR0, dan bit TF0 akan
di -set jika terjadi overflow. Pada timer TH0 pengaturannya adalah
melalui bit TR1, dengan bit TF1 akan di-set jika overflow.
Jika timer 0 bekerja dengan mode 3, maka timer 1 dapat bekerja dengan
mode 0,1, atau 2 kecuali dengan kondisi TF1 tidak dapat di-set oleh timer
1 jika terjadi overflow, karena TF1 diset oleh timer TH0.

5.2. Tentang Timer 2


Mikrokontroler MCS51

42

Timer/counter 2 hanya terdapat pada jenis 8052.

Pemilihan mode

timer/counter dapat dilakukan dengan mengatur bit C/-T2 pada register


T2CON. Timer ini memiliki 3 mode operasi: capture, auto-load, dan
baud-rate generator. Pemilihan mode operasi melalui register T2CON
sebagaimana tabel berikut :

Tabel 5.1. Pengaturan Mode Operasi Timer 2


RCLK OR TCLK CP/-RL2 TR2
MODE
0
0
1
16-bit auto-reload
0
1
1
16-bit capture
1
X
1
baud rate generator
X
X
0
(off)
16-bit auto-reload :
Mode ini memiliki dua pilihan bergantung pada isi bit EXEN2. Pilihan
pertama adalah untuk EXEN2=0. Pada saat transisi data 16 bit yang
kesemuanya '1' (data 0FFFFh) menjadi data yang kesemuanya '0'
(0000h) pada Timer 2 yaitu terjadi overflow, maka TF2 pada register
T2CON akan diset. Pada saat yang sama isi register RCAP2H akan
dimuat sebagai harga awal TH2 dan isi register RCAP2L akan dimuat
sebagai harga awal TL2.

Pada kondisi EXEN2=1

timer 2 bekerja seperti di atas dengan

tambahan bahwa transisi 1 ke 0 pada pin T2EX juga akan


menyebabkan pemuatan kembali data 16 bit dari register RCAP2H ke
TH2 dan RCAP2L ke TL2, sekaligus men-set bit EXF2 pada register
T2CON.

Mikrokontroler MCS51

43

16-bit capture :
Mode ini memiliki dua pilihan bergantung pada isi bit EXEN2. Pilihan
pertama adalah untuk EXEN2=0. Pada saat transisi data 16 bit yang
kesemuanya '1' (data 0FFFFh) menjadi data yang kesemuanya '0'
(0000h) pada Timer 2 yaitu terjadi overflow, maka TF2 pada register
T2CON akan diset.

Pada kondisi EXEN2=1

timer 2 bekerja seperti di atas dengan

tambahan bahwa transisi 1 ke 0 pada pin T2EX juga akan


menyebabkan pemuatan data 16 bit dari register TH2 ke RCAP2H
dan

TL2 ke RCAP2L, sekaligus men-set bit EXF2 pada register

T2CON.
baud-rate generator:
pembahasan mengenai ini telah ada pada pembahasan mengenai serial
port pada bab sebelumnya.
off :
Mode ini menghentikan operasi timer 2.

Mikrokontroler MCS51

44