Operasi TIMER/COUNTER MCS-51 memp. dua buah timer yaitu Timer/Counter 0 dan Timer/Counter 1 yang keduanya dapat berfungsi sebagai timer atau counter dan dapat diatur melalui perangkat lunak. Sebagai Timer memp. sumber clock dengan frekwensi tertentu yang sdh pasti ( secara kontinyu), sedangkan jika sbg counter mendapat sumber clock dari pulsa yang akan dihitung.
Timer/pewaktu digunakan untuk aplikasi menghitung lamanya suatu kejadian Counter/penghitung digunakan untuk aplikasi menghitung jumlah kejadian dalam periode tertentu
Kedua Timer/Counter pada MCS-51 masing-masing mempunyai 16 bit counter yang mampu untuk diatur keaktifannya maupun mode operasinya, direset dan diset dengan nilai tertentu.
Apabila Timer/Counter diaktifkan pada frekwensi kerja mikrokontroler 12 MHz, maka Timer/Counter akan melakukan perhitungan waktu sekali setiap 1 mikrodetik ( 1 uS ) secara independen dan tidak tergantung daripada pelaksanaan suatu instruksi.
Tidak dapat dialamati secara bit MCS-51 mempunyai enam buah Special Function Register yang dapat digunakan untuk mengatur fungsi Timer yaitu: TMOD, TH0, TL0, TH1, TL1 dan TCON Timer Mode Register ( TMOD ) Register TMOD berupa register 8 bit yang berlokasi di 89H Tidak dapat dialamati secara bit T I M E R 1 T I M E R 0 Gate(1) C/T (1) M1 (1) Mo (1) Gate (0) C/T (0) M1 (0) M0 (0) 89H Gate : Timer akan berjalan jika bit ini di set dan INT0 ( Timer 0 ) dan INT1 ( Timer 1 ) berkondisi high ( 1) C/T : 1 = Counter 0 = Timer M1 & M0 : untuk memilih mode timer
TH0 : Timer 0 High Byte berlokasi di 8AH 2. Register THx dan TLx Timer 0 dan Timer 1 masing-masing terdiri atas 16 bit timer yang tersimpan dalam 2 buah regiater yaitu THx untuk Timer High Byte dan TLx untuk Timer Low Byte. TH0 : Timer 0 High Byte berlokasi di 8AH TL0 : Timer 0 Low Byte berlokasi di 8BH TH1 : Timer 1 High Byte berlokasi di 8CH TL1 : Timer 1 Low Byte berlokasi di 8DH
3. Timer Control Register ( TCON ) Register TCON mempunyai 4 bit yg berhubungan langsung dengan Timer yaitu : TCON.4 , TCON.5 , TCON.6 , TCON.7 Sedangkan 4 bit yang lain berhubungan dengan interrupt yaitu : TCON.3 , TCON.2 , TCON.1 , TCON.0 Dapat diakses secara bit ( bit addressable ) Register T I M E R Register Interrupt 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON.7 (TF1) : Timer 1 Overflag yang akan diset jika timer overflow Bit ini dapat di-clear oleh software atau hardware. TCON.6 (TR1): 1 = Timer 1 Aktif 0 = Timer 1 Nonaktif TCON.5 (TF0) : Timer 1 Overflag yang akan diset jika timer overflow Bit ini dapat di-clear oleh software atau hardware. TCON.4 (TR0) : 1 = Timer 0 Aktif 0 = Timer 0 Nonaktif
Mode Timer Timer MCS-51 mempunyai 4 buah mode kerja timer dimana setiap mode timer mempunyai masing-masing fungsi. Penentuan mode kerja dari timer dilakukan dengan inisialisasi pada Register TMOD pada bit pemilih mode yaitu bit M1 dan bit M0 Kombinasi M0 dan M1 adalah sebagai berikut: M1 M0 Mode Operasi 0 0 0 Timer 13 bit ( THx=8 bit , TLx= 5 bit ) 0 1 1 T/C 16 bit ( THx=8 bit , TLx= 8 bit ) 1 0 2 Timer auto reload 8 bit ( pengisian otomatis ) 1 1 3 TL0 adalah T/C 8 bit yang dikontrol oleh kontrol bit Timer 0 TH0 adalah Timer yang dikontrol oleh kontrol bit Timer 1
Periode waktu Timer/Counter Secara umum Periode waktu Timer/Counter ditentukan oleh persaman berikut: a. Sebagai T/C 8 bit T = (255 -TLx) * 1 siklus mesin Dimana TLx adalah isi register TL0 atau TL1 b. Sebagai T/C 16 bit T = (65535 - THxTLx) * 1 siklus mesin Dimana : THx adalah isi register TH0 atau TH1 TLx adalah isi register TL0 atau TL1
Contoh Delay Hardware 1 detik dengan menggunakan Timer Mode 1 dengan output berupa ON/OFF LED yg dihubungkan dng P1.0 ORG 4000H LJMP START HERE: JNB TF1,HERE ; DJNZ R0,ULANG DELAY_1_DTK: RET MOV R0,#20 ; ULANG: START: CLR TF1 CPL P1.0 CLR TR1 LCALL DELAY_1_DTK MOV TMOD,#10H LJMP START MOV TH1,#3CH END MOV TL1,#0AFH SETB TR1