MAKALAH
“Timer atau Counter 0 dan 1”
Oleh :
Rizky Dwi N (1431110061 ) Satrio Teguh Yulianto (1431110023)
D3 TEKNIK ELEKTRO – JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI MALANG
KATA PENGANTAR
Puji syukur saya ucapkan kehadirat Tuhan Yang Maha Esa, karena dengan karunia-Nya saya dapat menyelesaiakan makalah yang berjudul “Timer atau Counter 0 dan 1”. Meskipun banyak hambatan yang saya alami dalam proses pengerjaannya, tapi saya berhasil menyelesaikan makalah ini tepat pada waktunya.
Makalah dengan judul “Timer atau Counter 0 dan 1” menjelaskan tentang Timer /Counter sebagai suatu peripheral yang tertanam didalam microcontroller yang berfungsi pewaktu. Dengan peripheral ini pengguna microcontroller dapat dengan mudah menentukan kapan suatu perintah dijalankan (delay), tentu saja fungsi timer tidak hanya untuk penundaan perintah saja, timer juga dapat berfungsi sebagai oscilator, PWM, ADC, dan lain-lain. Dengan Timer/Counter tersebut diharapkan dapat membantu dan memudahkan pekerjaan manuisa.
Tidak lupa saya sampaikan terimakasih kepada dosen pembimbing yang telah membantu dan membimbing saya dalam mengerjakan makalah ini. Saya juga mengucapkan terimakasih kepada teman-teman yang sudah memberi kontribusi baik langsung maupun tidak langsung dalam pembuatan makalah ini.
Tentunya ada hal-hal yang ingin saya berikan kepada masyarakat dari hasil makalah ini. Karena itu saya berharap semoga makalah ini dapat menjadi sesuatu yang berguna bagi kita bersama. Saya menyadari bahwa dalam menyusun makalah ini masih jauh dari kesempurnaan, untuk itu saya sangat mengharapkan kritik dan saran yang bersifat membangun guna sempurnanya makalah ini. Saya berharap semoga makalah ini bisa bermanfaat bagi penulis khususnya dan bagi pembaca pada umumnya.
Malang, 06 April 2016
DAFTAR ISI
Contents
KATA PENGANTAR...ii DAFTAR ISI...iii BAB I...1 PENDAHULUAN...1 1.1 Latar Belakang...1 1.2 Rumusan Masalah...2 1.3Tujuan...2 BAB II...3 PEMBAHASAN...3 2.1 PENGERTIAN TIMER/COUNTER...32.2 Contoh Mikrokontroler untuk Timer/Counter...4
2.3 CONTOH SEDERHANA PROGRAM TIMER...10
BAB III...14 PENUTUP...14 3.1 Kesimpulan...14 3.2 Saran...14 DAFTAR PUSTAKA...15
Contents
BAB I PENDAHULUAN 1.1 Latar Belakang
Timer /Counter adalah suatu peripheral yang tertanam didalam microcontroller yang berfungsi pewaktu. Dengan peripheral ini pengguna microcontroller dapat dengan mudah menentukan kapan suatu perintah dijalankan (delay), tentu saja fungsi timer tidak hanya untuk penundaan perintah saja, timer juga dapat berfungsi sebagai oscilator, PWM, ADC, dan lain-lain.
Cara kerja timer adalah dengan cara memberikan prescaling (membagi frekuensi) pada clock yang terpasang pada microcontroller sehingga timer dapat berjalan dengan frekuensi yang diinginkan. Dalam contoh microcontroller yang saya bahas disini saya hanya menggunakan microcontroller Atmel-AVR ATmega16 karena hanya microcontroller jenis ini yang saya punya.
Didalam ATmega16 dan beberapa microcontroller AVR lainnya sudah terdapat 3 buah timer, yaitu TIMER0 (8 bit), TIMER1 (16 bit)dan TIMER2 (8 bit). Perbedaan timer yang 8 bit dan timer 16 terdapat pada maksimal waktu yang dapat dijangkau, semakin besar bit suatu timer semakin besar waktu yang dapat dicapai. Sebagai contoh TIMER1 yang memiliki kapasitas hingga 16 bit dapat menjangkau waktu hingga 67 detik lebih pada clock 1MHz berbeda dengan TIMER0 dan 2 yang memiliki kapasitas hanya 8 bit sehingga hanya dapat menjangkau maksimal 0,2 detik pada clock 1MHz namun ini bukan merupakan kekurangan.
Timer dioperasikan dengan mengubah nilai register yang berhubungan dengan peripheral timer, yaitu TCCRx, TCNTx, dan TIMSK. Fungsi register TCCRx adalah sebagai clock selector dan prescaler, output mode, waveform generation unit, dan Force Output Compare. Fungsi register TCNT adalah sebagai penyimpan nilai timer yang diinginkan. Fungsi register TIMSK adalah untuk menentukan timer mana yang akan kita gunakan apakah TIMER0, TIMER1,atau TIMER2.
1.2 Rumusan Masalah
1.1.1 Apakah yang dimaksud dengan Timer/ Counter ? 1.1.2 Apakah contoh Mikrokontroler untuk Timer/Counter?
1.1.3 Bagaimanakah contoh Program sederhana dari Timer/Counter?
1.3Tujuan
1.1.4 Mahasiswa dapat mengetahui apa yang dimaksud dengan Timer/Counter 1.1.5 Mahasiswa dapat megetahui contoh Mikrokontroler untuk Timer/Counter 1.1.6 Mahasiswa dapat mengetahui contoh Program sederhana dari
BAB II PEMBAHASAN
2.1 PENGERTIAN TIMER/COUNTER
Pada dasarnya, Timer/Counter merupakan seperangkat pencacah (counter) biner yang terhubung langsung ke saluran data mikrokontroler, sehingga mikrokontroler bisa membaca kondisi pencacah dan bila diperlukan mikrokontroler dapat pula merubah kondisi pencacah tersebut. Seperti layaknya pencacah biner, saat sinyal detak (clock) yang diberikan sudah melebihi kapasitas pencacah, maka pencacah akan memberikan sinyal overflow atau limpahan. Sinyal
overflow ini merupakan suatu hal yang penting dalam pemakaian Timer/Counter.
Terjadinya overflow ini akan dicatat dalam suatu register tertentu.
Konsep dasar Timer/Counter ditampilkan dalam bentuk blok diagram di bawah ini:
Gambar 8.1. Konsep Kerja Timer/Counter
Sinyal detak yang diberikan ke pencacah dibedakan menjadi dua macam, yaitu sinyal detak dengan frekuensi tetap yang sudah diketahui besarnya dan sinyal detak dengan frekuensi yang bisa bervariasi. Jika sebuah pencacah bekerja dengan frekuensi tetap, maka dikatakan pencacah tersebut bekerja sebagai Timer
Pencacah Biner
Merubah Kedudukan Pencacah Membaca Kedudukan Pencacah
Sumber Detak yang
Bisa Diatur Overflow
atau pewaktu, karena kondisi pencacah tersebut setara dengan waktu yang bisa ditentukan secara pasti. Sedangkan jika sebuah pencacah bekerja dengan frekuensi yang bervariasi, dikatakan
pencacah tersebut bekerja sebagai Counter atau pencacah, karena kondisi pencacah tersebut menyatakan banyaknya pulsa detak yang sudah diterima. Untai kedua pencacah tersebut merupakan pencacah biner naik (count up binary
counter).
2.2 Contoh Mikrokontroler untuk Timer/Counter
Mikrokontroler 8051 dilengkapi dengan dua perangkat Timer/Counter, yaitu Timer0 dan Timer1. Untuk dapat mengakses Timer/Counter digunakan register-register khusus yang tersimpan dalam Special Function Register (SFR). Register-register tersebut adalah TMOD, TCON, TH1, TL1, TH0 dan TL0.
Register TH1, TL1, TH0 dan TL0 merupakan SFR yang dipakai untuk membentuk pencacah biner Timer1 dan Timer0. Kapasitas keempat register tersebut masing-masing 8 bit dan bisa disusun menjadi 4 (empat) macam mode pencacah yang akan dijelaskan kemudian.
Sedangkan TMOD adalah register untuk menentukan kerja dari Timer0 atau Timer1. Susunan register TMOD adalah sebagai berikut:
TMOD: TIMER/COUNTER MODE CONTROL REGISTER. NOT BIT ADDRESSABLE.
Gambar 8.2. Register TMOD
Nibble atau 4-bit kiri digunakan untuk setting Timer atau Counter 1 sedangkan
Nibble atau 4-bit kanan digunakan untuk Timer atau Counter 0. Keterangan masing-masing bit adalah sebagai berikut,
GATE : Bit ini dipakai untuk menentukan kendali ON/OFF timer. Jika bit ini LOW, maka kendali dilakukan secara software atau program,
Timer1 akan ON selama bit TR1 pada Register TCON bernilai HIGH. Tetapi jika bit ini HIGH, berarti ON/OFF Timer atau Counter bergantung pada kondisi pin INT, Timer 1 akan ON selama pin INT1 bernilai HIGH.
C/T : Bit ini dipakai untuk menentukan jenis operasi. Jika bit ini HIGH, berarti alat ini digunakan sebagai Counter, tetapi jika bit ini LOW, alat ini digunakan sebagai Timer.
M1 M0 : Adalah pasangan bit untuk menentukan 1 dari 4 mode operasi. Kombinasi M1M0 akan menentukan mode operasi Timer/Counter. Mode dan kombinasi M1M0J diperlihatkan pada Tabel 8.1 di bawah ini.
Tabel 8.1. Mode Timer/Counter
MODE M1 M0 NAMA MAKSIMUM
0 0 0 Timer 13 bit 8,192 pulsa 1 0 1 Timer 16 bit 65,536 pulsa 2 1 0 Timer Isi Ulang 8 bit 256 pulsa
3 1 1 Timer Split
-Jika pasangan ini bernilai 00 berarti Timer/Counter bekerja pada mode 0 dengan kapasitas maksimum 13-bit atau 8192 pulsa. Jika M1M0 = 01 atau mode 1, maka kapasitas maksimumnya 16-bit atau 65536 pulsa. Sedangkan Mode 2 merupakan mode auto reload atau isi ulang dengan kapasitas 8-bit atau 256 pulsa. Pada mode 2 ini, selama Timerx running, isi register TLx terus bertambah. Jika TLx overflow, maka TFx aktif dan TLx diisi ulang dengan data yang berada pada THx.
Register lain yang berhubungan dengan kerja Timer/Counter adalah register TCON. Register ini berisi bit-bit kendali untuk mengatur kerja Timer/Counter. Berikut ini susunan register TCON.
TCON: TIMER/COUNTER CONTROL REGISTER. BIT ADDRESSABLE.
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Bit TF1 dan TR1 untuk mengendalikan Timer/Counter1 sedangkan bit TF0 dan TR0 digunakan untuke mengatur Timer/Counter0. Bit TFx atau Timer Flag
overflow adalah bit indikator terjadinya overflow atau meluap pada Timer/Counter
x. Jika terjadi overflow bit ini menjadi HIGH. Bit ini dikembalikan ke kondisi LOW dengan 2 cara, yaitu software atau hardware. Secara software bit ini dapat dikembalikan ke LOW dengan instruksi CLR TFx, sedangkan secara hardware, bit ini akan dikembalikan ke LOW setelah pengambilan alamat interupsi dari
interrupt vector, tentu saja cara hardware ini harus melibatkan operasi interupsi.
Sedangkan bit TRx adalah pengendali gerbang masuk pulsa, jika TRx HIGH maka pulsa diizinkan masuk pencacah. Sejak saat ini, pencacah akan mulai menghitung cacahannya, baik sebagai Timer atau Counter.
Bit-bit yang lain dari register TCON ini akan dibahas pada modul berikutnya mengenai Interrupt.
Misalnya jika diinginkan untuk menggunakan Timer/Counter 0 sebagai Timer 16-bit. Maka bit-bit setting yang kita berikan untuk TMOD adalah data biner “xxxx 0001”. Tanda x atau don’t care berarti bahwa bit-bit tersebut tidak terkait dengan Timer/Counter 0. Bit ke-3 berisi 0 yang berarti pencacah menggunakan detak awal dari program, bukan dari eksternal input. Bit ke-2 diisi 0 yang maksudnya operasi yang dilakukan adalah Timer. Sedangkan bit ke-1 dan ke-0 atau M1M0 berisi 01, yang berarti pengaturan Timer menggunakan Mode 1 dengan pencacah 16 bit. Gambar di bawah ini adalah diagram operasi Timer 16-bit dari pengaturan yang telah dilakukan.
Sebelum penjelasan diagram tersebut, perhatikanlah ilustrasi berikut ini. Bayangkan sebuah odometer pada kendaraan bermotor. Odometer ini berukuran 6 digit dengan digit paling kanan berupa kelipatan 100 meter. Tulisan 002341 pada odometer ini menandakan bahwa kendaraan tersebut telah berjalan sejauh 234,1 km sejak angka pada odometer di-set 000000. Jika kendaraan terus bergerak konstan dengan kecepatan 100 m/s, maka angka pada odometer akan bertambah satu setiap detik. Hal ini akan berlanjut terus sampai odometer mencapai angka 999999, kemudian 000000. Peralihan dari bilangan 999999 ke 000000 disebut keadaan overflow atau meluap.
Jika kendaraan bergerak konstan, maka perubahan display odometer akan berlangsung teratur, sehingga kita dapat menggunakannya sebagai Timer atau stopwatch. Misalkan pada saat start, display odometer menunjukkan angka 996400. Maka pada saat overflow kendaraan tersebut telah berjalan sejauh 360 km atau 3600 detik.
Prinsip kerja Timer digital mirip dengan cara kerja odometer, sehingga kita dapat menggunakan analogi odometer dengan Timer Digital. Angka yang tertera pada display odometer dapat dianalogikan dengan angka yang berada pada pasangan register TH dan TL. Bertambahnya angka pada display odometer disebabkan oleh bergeraknya kendaraan, sedangkan bertambahnya isi THx TLx disebabkan oleh bit TRx. Jika TRx HIGH, maka pasangan register THx TLx akan bertambah setiap satu siklus mesin, 12 kali periode kristal. Jika prosesor menggunakan kristal 12 MHz, maka selama TRx HIGH, isi pasangan register THx TLx akan bertambah 1 setiap 1 s. Jika keadaan ini berlangsung terus, maka suatu saat pasangan THx TLx akan mengalami overflow, pada saat itu bit TFx akan menjadi HIGH.
Contoh berikut ini menggambarkan prinsip pemrograman Timer/Counter. Jika diinginkan Timer 0 sebagai stopwatch durasi 10 ms, maka telah dirancang program yang ditulis dengan nama file timer1.asm. Kemudian, hasil listingnya berupa file timer1.lst adalah sebagai berikut:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
===================================================== Line I Addr Code Source
1: $MOD51
2: ORG 0H
3: 0000 75 89 11 MOV TMOD,#00010001B ;Pengaturan Timer 4: 0003 C2 8C CLR TR0 ;Timer0 Off 5: 0005 75 8C D8 MOV TH0,#0D8H ;Pengaturan TH0 dan TL0 6: 0008 75 8A F0 MOV TL0,#0F0H ;10000 pulsa sebelum overflow 7: 000B D2 8C SETB TR0 ;Timer0 On 8: 000D 30 8D FD JNB TF0,$ ;Tunggu sampai pencacah overflow 9: 0010 C2 8D CLR TF0 ;Nonaktifkan kembali Timer0 10: 11: END
Pada program diatas, baris ke-3 merupakan pengaturan Timer pada register TMOD1. Pada pengaturan tersebut, ditentukan menggunakan Timer0, detak pencacah dari program dan menggunakan Mode 1. Kemudian, untuk memastikan bahwa Timer belum bekerja, harga TR0 pada register TCON direset ke 0, sebagaimana tertulis pada baris ke-4. Baris ke-5 dan ke-6 menentukan harga -10000 (10000 pulsa sebelum overflow). Nilai -10000 desimal diubah terlebih dahulu ke heksadesimal, menjadi D8F0H. Kemudian nilai ini dibagi ke dalam dua lokasi, D8H disimpan ke lokasi memori tinggi (TH0) dan F0H disimpan ke lokasi memori rendah (TL0). Setelah itu, pencacahan dimulai
dengan menset harga TR0 menjadi 1, seperti tercantum pada baris ke-7. Pada saat ini, pencacahan telah dimulai. Program loop ke diri sendiri dibuat pada baris ke-8 untuk menunggu sehingga pencacahan mencapai overflow. Ketika telah mencapai
overflow, Timer Flag (TF) dinonaktifkan kembali. Secara keseluruhan, program
ini akan menghasilkan sebuah timer selama 10000 pulsa (atau setara dengan 10 ms).
Program diatas, mengharuskan programmer menghitung nilai negatif dari rencana pencacahan dalam bilangan terlebih dahulu. Hal ini tentu saja merepotkan. Maka, kemudian assembler ASM51 memberikan jalan yang lebih mudah. Yaitu dengan melakukan pengisian TH dan TL langsung dengan bilangan desimalnya. Dengan cara ini, program diatas ditulis kembali menjadi file timer2.asm. Kemudian listing programnya, timer2.lst, adalah sebagai berikut: ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
===================================================== Line I Addr Code Source
1: $MOD51
2: ORG 0H
3: 0000 75 89 11 MOV TMOD,#00010001B ;Pengaturan Timer
4: 0003 C2 8C CLR TR0 ;Timer0 Off
5: 0005 85 D8 8C MOV TH0,#HIGH-10000 ;Pengaturan TH0 dan TL0
6: 0008 85 F0 8A MOV TL0,#LOW-10000 ;10000 pulsa sbelum overflow
8: 000D 30 8D FD JNB TF0,$ ;Tunggu sampai pencacah overflow
9: 0010 C2 8D CLR TF0 ;Nonaktifkan kembali Timer0 10:
11: END
12:
Sebenarnya, program ini sama dengan program sebelumnya, kecuali pada baris ke-5 dan ke-6. Terjadi sedikit perbedaan, namun menghasilkan bilangan yang sama yaitu nilai heksadesimal dari -10000.
2.3 CONTOH SEDERHANA PROGRAM TIMER
Program berikut ini merupakan contoh sederhana penggunaan Timer. Pada contoh ini akan dirancang suatu penghasil pulsa dengan frekuensi tertentu. Rangkaian
minimum program terdiri dari mikrokontroler dan keluaran untuk menghasilkan pulsa yang diinginkan, seperti yang tampak pada Gambar 8.5 di bawah ini.
Gambar 8.5. Rangkaian Penghasil Pulsa
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51 PULSA
Program ditulis dengan nama pulsa.asm. Setelah tak ada kesalahan, maka akan dihasilkan listing programnya dengan nama pulsa.lst, sebagai berikut:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
===================================================== Line I Addr Code Source
1: $MOD51
2: ORG 0H
3: 0000 75 89 11 MOV TMOD,#00100000B ;Pengaturan Timer1 4: 0003 85 FF 8D MOV TH1,HIGH-10;Pengaturan Harga TH1 dan TL1
5: 0006 85 F6 8B MOV TL1,LOW-10 ;10 pulsa sebelum overflow 6: 0009 D2 8E SETB TR1 ;Timer1 On
7:
8: 000B ULANG:
9: 000B 30 8F FD JNB TF1,$ ;Tunggu, hingga pencacah overflow
10: 000E B2 90 CPL P1.0 ;Keadaan P1.0 toggle 11: 0010 C2 8F CLR TF1 ;Timer1 Off dan isi ulang 12: 0012 80 F7 SJMP ULANG ;Ulangi terus 13:
14: END
15:
Pada program diatas, baris ke-3 merupakan pengaturan Timer pada register TMOD1. Pada pengaturan tersebut, ditentukan menggunakan Timer1, detak pencacah dari program dan menggunakan Mode 2 isi ulang 8 bit. Baris ke-4 dan ke-5 menentukan harga -10 (10 pulsa sebelum overflow) dalam format yang
mudah, yang disimpan ke lokasi memori tinggi (TH1) dan lokasi memori rendah (TL0). Setelah itu, pencacahan dimulai dengan menset harga TR1 menjadi 1, seperti tercantum pada baris ke-6. Pada saat ini, pencacahan telah dimulai.
Program loop ke diri sendiri dibuat pada baris ke-9 untuk menunggu sehingga pencacahan mencapai overflow. Ketika telah mencapai overflow, keluaran P1.0 dibuat toggle (berubah dari keadaan sebelumnya). Kemudian, Timer Flag (TF1) dinonaktifkan kembali dan mengisi ulang kembali ke harga TH1 dan TL1. Kejadian ini akan terus diulang-ulang tanpa henti (SJMP menghasilkan loop ke ULANG), untuk menghasilkan keluaran yang terus berubah-ubah sesuai dengan lamanya Timer. Karena Timer diset selama 10 pulsa (atau 10 µs) maka keluaran 1 dan 0 akan terjadi pada P1.0 selama masing-masing 10 µs. Berarti, periode pulsa secara keseluruhan adalah 20 µs atau pulsa memiliki frekuensi 50 KHz.
Program di atas dapat digambarkan secara diagram alir sebagai berikut:
Gambar 8.6. Diagram Alir Program Penghasil Pulsa
Secara keseluruhan, program ini akan menghasilkan sebuah pulsa dengan perioda 20 µs atau memiliki frekuensi 50 KHz. Pulsa yang dihasilkan ditampilkan pada gambar di bawah ini.
MULAI INISIALISASI TIMER 10 µS TIMER ON TIMER 10 µS TOGGLE OUTPUT P1.0
TIMER OFF & ISI ULANG
Gambar 8.6. Pulsa dengan Perioda 20 µs atau Frekuensi 50 KHz
10 µs
10 µs 20 µs
BAB III PENUTUP
3.1 Kesimpulan
Timer /Counter adalah suatu peripheral yang tertanam didalam microcontroller yang berfungsi pewaktu. Dengan peripheral ini pengguna microcontroller dapat dengan mudah menentukan kapan suatu perintah dijalankan (delay).
Mikrokontroler 8051 dilengkapi dengan dua perangkat Timer/Counter, yaitu Timer0 dan Timer1. Untuk dapat mengakses Timer/Counter digunakan register-register khusus yang tersimpan dalam Special Function Register (SFR). Register-register tersebut adalah TMOD, TCON, TH1, TL1, TH0 dan TL0. 3.2 Saran
Sebagai mahasiswa teknik elektronika, sebaiknya perlu mengetahui dan memahami apa itu timer/counter, contoh mikrokontroler untuk timer/counter, dan contoh dari program timer/counter agar kelak bisa dimanfaatkan sebagaimana mestinya untuk memudahkan dan membantu pekerjaan manusia.
DAFTAR PUSTAKA
http://dosen.narotama.ac.id/wp-content/uploads/2012/12/modul-8-TIMER-atau-COUNTER.doc