AT89S51 dilengkapi dengan dua perangkat Timer/Counter yang masing-masing dinamakan Timer 0 dan Timer 1. Pencacah biner untuk Timer 0 dibentuk dengan register Timer 0 Low byte (TL0) dan register Timer 0 High byte (TH0). Pencacah biner untuk Timer 1 dibentuk dengan register Timer 1 Low byte (TL1) dan register Timer 1 High byte (TH1). Untuk mengatur kerja Timer/Counter dipakai dua register tambahan yang dipakai bersama oleh Timer 0 dan Timer 1. Register tersebut adalah Timer Mode Control (TMOD) dan Timer Control (TCON). Bentuk dan isi dari register TMOD dapat dilihat pada gambar 2.7.
Sementara itu, fungsi bit-bit TMOD dapat dilihat
pada tabel 2.5.
Tabel 2.6 berikut ini menjelaskan konfigurasi mode Timer/Counter dari fungsi bit register TMOD.
1. Mode 0
Pencacah biner dibentuk dengan TLx (TL0 atau TL1) sebagai pencacah biner 5 bit. Limpahan dari pencacah biner 5 bit dihubungkan ke THx (TH0 atau TH1) membentuk untaian pencacah biner 13 bit. Limpahan dari pencacah 13 bit ini ditampung di flip-flop TFx (TF0 atau TF1) pada register TCON. Gambar 2.8 memperlihatkan Timer/Counter yang bekerja pada mode 0.
Pencacah biner dibentuk dengan TLx (TL0 atau TL1) sebagai pencacah biner 5 bit. Limpahan dari pencacah biner 5 bit dihubungkan ke THx (TH0 atau TH1) membentuk untaian pencacah biner 13 bit. Limpahan dari pencacah 13 bit ini ditampung di flip-flop TFx (TF0 atau TF1) pada register TCON. Gambar 2.8 memperlihatkan Timer/Counter yang bekerja pada mode 0.
Sama halnya dengan mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8 bit sehingga kapasitas pencacah biner yang terbentuk adalah 16 bit. Gambar 2.9 memperlihatkan Timer/Counter yang bekerja pada mode 1.
3. Mode 2
TLx dipakai sebagai pencacah biner 8 bit dan THx dipakai untuk menyimpan nilai yang diisikan ulang ke TLx setiap kali kedudukan TLx melimpah (berubah dari FFH ke 00H). Gambar 2.10 memperlihatkan Timer/Counter yang bekerja pada mode 2.
TLx dipakai sebagai pencacah biner 8 bit dan THx dipakai untuk menyimpan nilai yang diisikan ulang ke TLx setiap kali kedudukan TLx melimpah (berubah dari FFH ke 00H). Gambar 2.10 memperlihatkan Timer/Counter yang bekerja pada mode 2.
4. Mode 3
Pada mode 3 TL0, TH0, TL1, dan TH1 dipakai untuk membentuk tiga untaian pencacah. Pertama, untaian pencacah biner 16 bit tanpa fasilitas pemantauan sinyal limpahan yang dibentuk dengan TL1 dan TH1. Kedua, TL0 dipakai sebagai pencacah biner 8 bit dengan TF0 sebagai sarana pemantau limpahan. Ketiga, TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1 sebagai sarana pemantau limpahan. Gambar 2.11 memperlihatkan Timer/Counter yang bekerja pada mode 3.
Pada mode 3 TL0, TH0, TL1, dan TH1 dipakai untuk membentuk tiga untaian pencacah. Pertama, untaian pencacah biner 16 bit tanpa fasilitas pemantauan sinyal limpahan yang dibentuk dengan TL1 dan TH1. Kedua, TL0 dipakai sebagai pencacah biner 8 bit dengan TF0 sebagai sarana pemantau limpahan. Ketiga, TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1 sebagai sarana pemantau limpahan. Gambar 2.11 memperlihatkan Timer/Counter yang bekerja pada mode 3.
Mode 3 merupakan gabungan dari 2 pencacahan yaitu pencacahan 16 bit dan pencacahan 8 bit. TL1 dan TH1 membentuk susunan pencacahan 16 bit, sedangkan pencacah 8 bit disusun oleh TL0 dan TH0 Limpahan dari pencacahan 8 bit TL0 ditampung di TF0 yang terdapat pada alamat bit TCON.5 dan limpahan 8 bit TH0 ditampung di TF1 yang terdapat pada alamat bit TCON.7.
Bentuk dan isi dari register TCON dapat dilihat pada gambar 2.12.
Sisa 4 bit dari register TCON (bit 4…bit 7) dibagi menjadi dua bagian secara simetris yang dipakai untuk mengatur Timer 0/Timer 1 sebagai berikut.
- Bit TFx (TF0 atau TF1) merupakan bit penampung limpahan. TFx akan menjadi 1 setiap kali pencacah biner yang terhubung padanya melimpah.
- Bit TRx (TR0 atau TR1) merupakan bit pengatur saluran sinyal denyut. Bila bit 0 sinyal denyut tidak disalurkan ke pencacah biner, pencacah akan berhenti mencacah.