Anda di halaman 1dari 5

MODE OPERASI TIMER/COUNTER

Oleh : Sumarna, Jurdik Fisika, FMIPA, UNY


E-mail : sumarna@uny.ac.id

1. Mode 0 : Timer/Counter 13 bit.


Gambar berikut menunjukkan konfigurasi operasi timer/counter mode 0. Salah satu
timer di dalam mode 0 merupakan counter 8 bit dengan prescaler dibagi 32. Register
13 bit ini terdiri dari 8 bit pada seluruh THX dan 5 bit rendah pada TLX. Sedangkan
3 bit tinggi pada TLX tidak ditetapkan dan harus diabaikan.

OSC 12

C/T = 0 TLX THX


(5 bit) (8 bit) TFX
TX
C/T = 1
TRX
Interupsi
GATE

INTX

Gambar : Timer/Counter Mode 0

Counter 13 bit dapat mencacah naik hingga 213 = 8192, dari 0 sanpai dengan 8191.
Timer/Counter 8051 merupakan pencacah naik yang menambah 1 (increment)
nilainya dari nilai awal (initial). Nilai yang telah dicacah sama dengan nilai cacahan
maksimum dikurangi nilai awal. Sebagai contoh, jika sejumlah 5000 yang harus
dicacah, nilai awal dari timer/counter dalam mode 0 harus di-preset pada :

8192 5000 = 3192

Dalam hal demikian, counter tersebut mulai mencacah dari nilai preset 3192 dan
terjadi overflow setelah 5000 pulsa detak. Overflow akan men-set bit TFX yang
sesuai pada register TCON dan counter tersebut kembali ke nol. Jika diinginkan
pencacahan ulang dari nilai preset sebelumnya, nilai preset tersebut harus diisikan
ulang dengan software. Flag overflow TFX di-clear oleh hardware ketika CPU
mengeksekusi routine pelayanan interupsi dari timer/counter.

Untuk mem-preset nilai cacahan awal kepada TLX dan THX, nilai preset dalam
biner harus dihitung dan 5 bit rendah diisikan ke dalam TLX serta 8 bit tinggi ke
dalam THX. Sebagai contoh, untuk cacahan 5000, nilai awalnya dihitung dengan :

8192 5000 = 3192


3192D = 0110001111000B

1
Sehingga :
TLX = 11000
THX = 01100011

Karena TLX merupakan prescaler terbagi 32 dalam mode 0, nilai preset dari TLX
dan THX dapat dihitung secara langsung dengan persamaan berikut :

THX = Quotient dari nilai cacahan awal dibagi 32


TLX = Remainder dari nilai cacahan awal dibagi 32
Atau :
THX = nilai cacahan awal / 32
TLX = nilai cacahan awal .MOD. 32

Di mana / merepresentasikan pembagian integer, dan MOD merepresentasikan


sisanya (remainder). Oleh karena itu, contoh di atas dapat dicapai dengan instruksi
berikut :
MOV TL0,#(8192 5000).MOD.32
MOV TH0,#(8192 5000)/32

Assembler tersebut akan menghitung dan mengisikan hasilnya ke dalam TH0 dan
TL0. Ingat bahwa titik desimal (.) harus ditambahkan sebelum dan sesudah MOD.
Sebagai contoh, instruksi berikut :

MOV TL1,#(8192 2500).MOD.32


MOV TH1,#(8192 2500)/32

Men-set counter 1 untuk mencacah 2500 pulsa.

2. Mode 1 : Counter 16 bit.


Operasi mode 1 adalah sama dengan mode 0, kecuali bahwa register timer-nya akan
berjalan untuk 16 bit seluruhnya. Counter 16 bit tersebut dapat mencacah naik
hingga 216 = 65536, 0 sampai dengan 65535. Sebagaimana dijelaskan sebelumnya,
nilai preset dari TLX dan THX dihitung sebagai :

TLX = nilai cacahan awal MOD 256


THX = nilai cacahan awal / 256

Dalam kode assembly, nilai awal dari counter 0 dapat di-preset dengan :

MOV TL0,#(65536 5000).MOD.256


MOV TH0,#(65536 5000)/256

Operator > dan < adalah berguna dalam penghitungan nilai awal. Operator >
dan < digunakan untuk mendapatkan berturut-turut byte tinggi dan byte rendah
dari counter 16 bit. Instruksi di atas dapat dituliskan sebagai :

2
MOV TL0,#<(65536 5000)
MOV TH0,#>(65536 5000)

Konfigurasi Timer/Counter mode 1 ditunjukkan pada gambar berikut :

OSC 12

C/T = 0 TLX THX


(8 bit) (8 bit) TFX
TX
C/T = 1
TRX
Interupsi
GATE

GATE

Gambar : Timer/Counter Mode 1

3. Mode 2 : Counter 8 bit Isi-Ulang Otomatis


Gambar berikut menunjukkan konfigurasi Timer/Counter pada mode 2. Mode 2
mengkonfigurasi register timer sebagai counter 8 bit (TLX) dengan isi-ulang
otomatis. Nilai cacahan maksimumnya 28 = 256, 0 sampai dengan 255. Overflow
dari TLX tidak hanya men-set TFX, tetapi juga mengisi ulang dengan isi dari THX
yang di-preset dengan software. Pengisian ulang meninggalkan THX tidak berubah.
Operasi mode 2 adalah sama untuk timer/counter 0 dan 1.

OSC 12

C/T = 0 TLX
(8 bit) TFX
TX
C/T = 1 Isi
TRX Interupsi
Ulang
THX
GATE (8 bit)
INTX

Gambar : Timer/Counter Mode 2

Dalam mode 2, nilai awal dihitung dengan

Nilai awal = 256 nilai cacahan

3
Sebagi contoh, suatu instruksi MOV TH1,#(256 100) menentukan timer 1 untuk
mencacah 100 pulsa. Karena nilai THX dan TLX di-reset sesudah power 8051 hidup
atau reset software, maka nilai cacahan awal dari YHX dan TLX harus di-preset
secara awal (initially).

4. Mode 3 : Dua Counter 8 bit Individual


Konfigurasi operasi timer/counter pada mode 3 ditunjukkan pada gambar berikut.
Timer 1 dalam mode 3 secara langsung mempertahankan cacahannya. Akibatnya
adalah sama dengan men-set TR1 = 0. Timer 0 dalam mode 3 membangun TL0 dan
TH0 sebagai dua counter yang terpisah. TL0 menggunakan kendali bit timer 0,
yakni C/ T , GATE, TR0, INT 0 , dan TF0. TH0 dikunci ke dalam fungsi timer
(siklus mesin pencacahan) dan mengambil alih kegunaan dari TR1 dan TF1 dari
timer 1. Kemudian, TH0 sekarang mengendalikan interupsi timer 1.

OSC 12

C/T = 0 TLX TFX


TX (8 bit)
C/T = 1
TRX Interupsi

GATE

INTX
Interupsi
OSC 12 THX
(8 bit) TFX

TR1

Gambar : Timer/Counter Mode 3

Nilai cacahan awal TH0 dan TL0 dihitung dengan :

TH0 = 256 nilai cacahan


TL0 = 256 nilai cacahan

Sebagai contoh, instruksi berikut menunjukkan TL0 timer 0 mencacah 50 pulsa dan
TH0 mencacah 100 pulsa.

MOV TL0,#(250 50)


MOV TH0,#(256 100)

4
Mode 3 disediakan untuk keperluan aplikasi sebuah timer atau counter 8 bit
tambahan (ekxtra). Dengan timer 0 dalam mode 3, 8051 dapat terlihat seperti
memiliki 3 timer/counter, dan 8052 seperti memiliki 4 timer/counter. Ketika timer 0
dalam mode 3, timer 1 dapat dihidupkan atau dimatikan dengan mensaklarnya
keluar dan masuk mode 3 sendiri, atau dapat tetap digunakan dengan port serial
sebagai generator baud rate, atau dalam kenyataannya, dalam banyak aplikasi yang
tidak memerlukan interupsi. Sebagai terlihat dapam gambar, instruksi SETB TR1
men-start TH0 dan instruksi CLR TR1 menghentikan TH0.

Untuk menggunakan Timer/Counter, ikuti prosedur berikut :


Dalam program utama :
1. Tetapkan register IE untuk meng-enable interupsi timer/counter.
2. Tetapkan register IP untuk menentukan tingkat prioritas interupsi timer/counter
(jika diperlukan).
3. Tetapkan register TMOD untuk menentukan mode operasi dan kendali jalan (run
control).
4. Men-set nilai awal dari THX dan TLX.
5. Men-strat timer/counter (SETB TRX).

Dalam routine pelayanan interupsi :


1. Hentikan (stop) timer/counter.
2. Proseslah suatu tugas dari routine pelayanan interupsi.
3. Isi ulang (reload) nilai awal dari THX dan TLX.
4. Start kembali (re-start) timer/counter.
5. Kembali ke program utama.

Anda mungkin juga menyukai