Timer/ Counter merupakan sarana input yang kurang dapat perhatian pemakai mikrokontroler, dengan sarana input ini mikrokontroler dengan mudah bisa dipakai untuk mengukur lebar pulsa, membangkitkan pulsa dengan lebar yang pasti, dipakai dalam pengendalian tegangan secara PWM (Pulse Width Modulation) dan sangat diperlukan untuk aplikasi remote control dengan infra merah.
Pada dasarnya sarana input yang satu ini merupakan seperangkat pencacah biner (binary counter) yang terhubung langsung ke saluran-data mikrokontroler, sehingga mikrokontroler bisa membaca kedudukan pancacah, bila diperlukan mikrokontroler dapat pula merubah kedudukan pencacah tersebut.
Seperti layaknya pencacah biner, bilamana sinyal denyut (clock) yang diumpankan sudah melebihi kapasitas pencacah, maka pada bagian akhir untaian pencacah akan timbul sinyal limpahan, sinyal ini merupakan suatu hal yang penting sekali dalam pemakaian pencacah. Terjadinya limpahan pencacah ini dicatat dalam sebuah flip-flop tersendiri.
Di samping itu, sinyal denyut yang diumpankan ke pencacah harus pula bisa dikendalikan dengan mudah. Hal-hal yang dibicarakan di atas diringkas dalam Gambar 1.
MCS-51 mempunyai dua buah register timer/ counter 16 bit, yaitu Timer 0 dan Timer 1. Keduanya dapat dikonfigurasikan untuk beroperasi sebagai timer atau counter, seperti yang terlihat pada gambar di bawah.
Gambar 1.9. Konsep dasar Timer/Counter sebagai sarana input
Sinyal denyut yang diumpankan ke pencacah bisa dibedakan menjadi 2 macam, yang pertama yalah sinyal denyut dengan frekuensi tetap yang sudah diketahui besarnya dan yang kedua adalah sinyal denyut dengan frekuensi tidak tetap.
Jika sebuah pencacah bekerja dengan frekuensi tetap yang sudah diketahui besarnya, dikatakan pencacah tersebut bekerja sebagai timer, karena kedudukan pencacah tersebut setara dengan waktu yang bisa ditentukan dengan pasti.
Jika sebuah pencacah bekerja dengan frekuensi yang tidak tetap, dikatakan pencacah tersebut bekerja sebagai counter, kedudukan pencacah tersebut hanyalah menyatakan banyaknya pulsa yang sudah diterima pencacah.
Jika sebuah pencacah bekerja dengan frekuensi yang tidak tetap, dikatakan pencacah tersebut bekerja sebagai counter, kedudukan pencacah tersebut hanyalah menyatakan banyaknya pulsa yang sudah diterima pencacah.
Timer memiliki tiga fungsi umum, yaitu:
1) Menghitung waktu antara dua kejadian (event)
2) Menghitung jumlah kejadian itu sendiri
3) Membangkitkan baud rate untuk port serial.
Sebuah timer bekerja dengan mencacah. Tidak tergantung pada fungsi sebagai timer,
counter, atau generator baud rate, sebuah timer akan selalu ditambah satu oleh
mikrokontroler.
Menggunakan Timer Untuk Mengukur Waktu
Fungsi timer yang utama adalah untuk mengukur waktu. Saat sebuah timer
digunakan untuk mengukur waktu, dia akan bertambah satu setiap satu siklus mesin. Setiap
siklus mesin membutuhkan 12 pulsa kristal. Maka, apabila sebuah 89C51 dengan kristal
11,059 MHz, maka timer setiap detiknya akan berharga:
11.059.000/12=921.583
Dengan kata lain, terdapat 921.583 kali pencacahan dalam setiap detiknya. Tidak seperti
instruksi- instruksi yang bisa memakan satu hingga empat siklus mesin, sebuah timer
selalu konsisten bertambah satu setiap satu kali siklus mesin. Sehingga, jika diinginkan
sebuah timer yang berharga 50.000, berarti memakan waktu sebesar:
50.000/921.583=0,0542
Dengan kata lain, diperlukan waktu 0,052 detik untuk mendapatkan timer yang telah
berharga 50.000. Melalui cara serupa, apabila diinginkan mendapatkan pewaktu 0,05 detik,
maka dibutuhkan timer yang m
encacah hingga:
0,05 x 921.583=46.079,15
Ini berarti kita perlu memonitor cacahan dari timer hingga mencapai harga 46.079.
Walaupun tidak benar-benar presisi karena menghilangkan hitungan 0,15; namun cukup
mendekati dan dapat ditoleransi.