TUJUAN
- Mahasiswa memahami fungsi timer dan counter pada mikrokontroller
- Mahasiswa memahami rangkaian interface untuk aplikasi timer dan counter
- Mahasiswa dapat memanfaatkan fungsi counter untuk mencacah pulsa
- Mahasiswa dapat memanfaatkan fungsi timer untuk membangkitkan clock dengan periode tertentu.
Fungsi Counter
Pada keluarga MCS-51 terdapat dua buah timer/ counter 16 bit, yang dapat dikonfigurasikan sebagai timer atau counter, 8 bit, 13 bit atau 16 bit sesuai dengan mode yang dipilih. Gambar berikut merupakan contoh aplikasi Counter 8 bit dengan menggunakan mode 3.

Fungsi Counter
Percobaan 9.1. Aplikasi Mode 3 sebagai counter 8 bit dengan output LED
Pada percobaan ini, pulsa diambil melalui clock generator yang dibangkitkan oleh IC 555 yang mempunyai frekuensi 1 Hz, hasil cacahan biner pada register counter akan ditampilkan pada LED.

Aplikasi Mode 3 sebagai counter 8 bit dengan output LED
Lakukan beberapa langkah percobaan sebagai berikut:
- Hubungkan 1 buah kabel antara P3.5 dengan output clock IC 555
- Hubungkan jumper konektor LED_EN
- Hubungkan modul Microcontroller Trainer dengan power supply +5V
- Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
- Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
- Ketik program berikut ini: (download file prog91a.asm)
org 0h
Start: Mov TMOD,#01110000b ; mode 3 counter 8 bit counter 1
Setb TR1 ; TR1 = 1, start counting
Get: Mov A, TL1 ; A = TL1
CPL A ; A = NOT A
Mov P0, A ; P0 = A
Sjmp Get ; Looping Forever
End
- Simpanlah program yang anda ketik dan beri nama : prog91a.asm
- Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
- Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
- Lakukan pengamatan pada LED ? dan lengkapi tabel berikut.
| INPUT Clock | DISPLAY LED | | | | | | | |
|-------------|-------------|----|----|----|----|----|----|----|
| | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 |
| 1 | | | | | | | | |
| 2 | | | | | | | | |
| 3 | | | | | | | | |
| 4 | | | | | | | | |
| : | | | | | | | | |
| 20 | | | | | | | | |
Percobaan 9.2. Aplikasi Timer 1, Mode 3 sebagai counter 8 bit dengan output 7 Segmen
Pada percobaan ini, pulsa diambil melalui clock generator yang dibangkitkan oleh IC 555 yang mempunyai frekuensi 1 Hz, hasil cacahan biner pada register counter akan ditampilkan pada 7 Segmen. Lakukan beberapa langkah percobaan sebagai berikut:
- Hubungkan 1 buah kabel antara P3.5 dengan output clock IC 555
- Hubungkan jumper konektor 7Segmen_EN
- Hubungkan modul Microcontroller Trainer dengan power supply +5V
- Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
- Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
- Ketik program berikut ini: (download file prog92a.asm)
Org 0h
Mov TMOD,#01110000b ; mode 3 counter 8 bit timer 1
Setb TR1 ; TR1 = 1, start counting
Get: Mov A, TL1 ; A = TL1
Call Bin2Dec
Call Display7Segmen
Sjmp Get ;Looping Forever
;
Bin2Dec:
mov b,#100d
div ab
mov hundreds,a
mov a,b
mov b,#10d
div ab
mov tens,a
mov ones,b
ret
;
Display7Segmen:
clr P3.5
clr P3.6
clr P3.7
mov A, Hundreds
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
call delay
;
setb P3.5
clr P3.6
clr P3.7
mov A, Tens
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
call delay
;
clr P3.5 ;
setb P3.6
clr P3.7
mov A, Ones
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
call delay
ret
;
Data7segmen:
db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
;
end
- Simpanlah program yang anda ketik dan beri nama : prog92a.asm
- Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
- Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
- Lakukan pengamatan pada display 7 segmen ? dan lengkapi tabel berikut.
| Clock ke | Display 7 Segmen |
|----------|------------------|
| 1 | ? |
| 2 | ? |
| 3 | ? |
| 4 | ? |
| 5 | ? |
| : | : |
| 20 | ? |
Fungsi Timer
Pada keluarga MCS-51 terdapat dua buah timer/ counter 16 bit, yang dapat dikonfigurasikan sebagai timer atau counter, 8 bit, 13 bit atau 16 bit sesuai dengan mode yang dipilih. Gambar berikut merupakan contoh aplikasi Counter 16 bit dengan menggunakan mode 1.

Fungsi Timer
Percobaan 9.3. Aplikasi Timer 1, sebagai timer 16 bit dengan output LED
Pada percobaan ini, clock akan dibangkitkan dengan menggunakan fungsi timer 16 bit, dengan periode 1 detik, Ton = 0,5 detik dan Toff = 0,5 detik, dengan tampilan LED.
Pada mode ini, dengan kristal 12MHz maka timer akan overflow setiap 65.536 udetik. Pada percobaan ini, untuk membangkitkan interupsi setiap 1000 udetik maka data yang harus diisikan pada register TL1 dan TH1 adalah sebagai berikut:
65536 - 10000 = 55536 d or D8F0h
Maka interupsi TF1 akan segera dibangkitkan setiap 1000 x 1 udetik = 0,01 detik, pada pemrograman ini, RO diimplementasikan sebagai counter software, Register R0 akan increment setiap Timer 1 overflow. Jika register R7 telah mendeteksi nilai 50 maka port P0.0 ( LED D0 ) akan nyala selama = 0,01 x 50 detik = 0,5 detik.
Lakukan beberapa langkah percobaan sebagai berikut:
- Lepas kabel yang menghubungkan antara P3.5 dengan output clock IC 555
- Hubungkan jumper konektor LED_EN
- Hubungkan modul Microcontroller Trainer dengan power supply +5V
- Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
- Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
- Ketik program berikut ini: (download file prog93a.asm)
Org 0h
Start: Setb P0.0 ;P0.0 = 1
call Delay ;call delay time
Clr P0.0 ;P0.0 = 0
call delay ;call delay time
Sjmp Start ;Looping Forever
;
Delay: Mov R0,#0 ;R0 = 0
Mov TMOD,#00010000b ;Mode 1, Fungsi =Timer 1 16 bit
Load: Mov TH1, #0D8h ;TH1 = D8h
Mov TL1, #0F0h ; TL1 = F0h
Setb TR1 ; TR1 = 1, Start Running
OFlow: JNB TF1, OFlow ; jump to OFlow if TF1 =0
Clr TR1 ; TR1 = 0
Clr TF1 : TF1 = 0
Inc R0 ; R0 = R0+1
CJNE R0,#50,Load
Ret
;
End
- Simpanlah program yang anda ketik dan beri nama : prog93a.asm
- Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
- Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
- Lakukan pengamatan pada nyala LED
- Lakukan modifikasi pada program tersebut untuk membangkitkan frekuensi 10 Hz, 100 Hz, dan 500 Hz dan lakukan pengamatan pada layar osciloscope.