OSC 12
INTX
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 :
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 :
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 :
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 :
Dalam kode assembly, nilai awal dari counter 0 dapat di-preset dengan :
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)
OSC 12
GATE
OSC 12
C/T = 0 TLX
(8 bit) TFX
TX
C/T = 1 Isi
TRX Interupsi
Ulang
THX
GATE (8 bit)
INTX
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).
OSC 12
GATE
INTX
Interupsi
OSC 12 THX
(8 bit) TFX
TR1
Sebagai contoh, instruksi berikut menunjukkan TL0 timer 0 mencacah 50 pulsa dan
TH0 mencacah 100 pulsa.
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.