Mempelajari arsitektur chip Timer/Counter 8253, enam mode operasinya, pemrograman Control Word Register, perhitungan frekuensi output, serta pengenalan singkat chip antarmuka lainnya seperti 8251 USART dan ADC/DAC.
Capaian Pembelajaran Bab Ini
Setelah mempelajari bab ini, mahasiswa mampu menjelaskan arsitektur internal Timer/Counter 8253 dan fungsinya sebagai sumber clock dan delay; menghitung Control Word untuk berbagai konfigurasi counter dan mode; menghitung frekuensi dan durasi output untuk setiap mode; serta menulis program Assembly 8086 untuk menginisialisasi dan mengakses counter 8253 melalui instruksi IN dan OUT.
Pada bab sebelumnya kita menggunakan instruksi LOOP untuk membuat delay. Namun metode ini memiliki kelemahan serius: selama delay berlangsung, CPU terpakai 100% menunggu tanpa melakukan pekerjaan berguna. Untuk sistem yang membutuhkan timing yang presisi dan bersifat periodik, diperlukan chip timer yang bekerja secara independen dari CPU.
Delay dengan LOOP (Software Timer)
❌CPU "terjebak" selama delay — tidak bisa mengerjakan tugas lain
❌Tidak menghasilkan sinyal clock output periodik
❌Tidak presisi — dipengaruhi interrupt dan variasi clock
✓Sederhana, tidak perlu chip tambahan
Delay dengan 8253 (Hardware Timer)
✓CPU bebas mengerjakan tugas lain sambil timer berjalan
✓Menghasilkan sinyal clock periodik presisi di pin OUT
✓Bisa menghasilkan interrupt saat timer selesai
⚠Membutuhkan chip tambahan (8253) dan sedikit rangkaian
Aplikasi Timer 8253 dalam Sistem PC
▶Clock System (Counter 0): Menghasilkan interrupt IRQ0 dengan frekuensi 18.2 Hz — dasar waktu sistem (jam, tanggal, tick).
▶DRAM Refresh (Counter 1): Menghasilkan sinyal refresh periodik untuk memori DRAM.
▶Baud Rate Generator (Counter 2): Menghasilkan clock untuk chip komunikasi serial 8251 (RS-232).
14.2 Pengenalan Timer/Counter 8253
Intel 8253 (juga dikenal sebagai 8254 pada versi yang lebih baru) adalah chip Programmable Interval Timer yang berisi 3 counter 16-bit independen. Setiap counter dapat dioperasikan dalam 6 mode berbeda untuk menghasilkan berbagai bentuk sinyal timing.
Spesifikasi
Nilai
Jumlah Counter
3 buat (Counter 0, 1, 2)
Lebar Counter
16 bit per counter
Rentang Hitungan (Binary)
0000h – FFFFh (1 – 65536)
Rentang Hitungan (BCD)
0000 – 9999
Mode Operasi
6 mode (Mode 0 – Mode 5)
Frekuensi Clock Maks
~2.6 MHz (versi standar 8253)
Tegangan Operasi
+5V
Jumlah Pin
24 pin (DIP)
14.3 Arsitektur Internal 8253
Bus Data D0–D7
→
Data Bus Buffer — antarmuka 8-bit ke bus data sistem
Read/Write Logic
Mengontrol akses berdasarkan CS, WR, RD, A0, A1
Counter 0
16-bit counter CLK0, GATE0, OUT0
OL: CR0, CE0
Counter 1
16-bit counter CLK1, GATE1, OUT1
OL: CR1, CE1
Counter 2
16-bit counter CLK2, GATE2, OUT2
OL: CR2, CE2
OL = Output Latch, CR = Control Register, CE = Counting Element
Gambar 14.1: Diagram blok internal 8253. Setiap counter memiliki Clock Input, Gate Input, dan Output sendiri.
14.4 Pin-Pin Penting 8253
Pin
Nama
Deskripsi
D0–D7
Data Bus
Bus data 8-bit bidireksional untuk transfer data ke/dari CPU
CLK0–CLK2
Clock Input
Input clock untuk masing-masing counter (setiap rising edge menurunkan counter 1)
Sinyal output dari masing-masing counter. Bentuk sinyal tergantung mode.
A0, A1
Address
Memilih counter/CWR: 00=C0, 01=C1, 10=C2, 11=CWR
CS
Chip Select
Aktif rendah. CS=0: chip aktif dan merespons operasi
RD
Read
Aktif rendah. Membaca nilai counter yang dipilih (latched)
WR
Write
Aktif rendah. Menulis nilai awal ke counter/CWR yang dipilih
VCC
Power
+5V
GND
Ground
0V
14.5 Tiga Counter 16-Bit
Setiap counter terdiri dari tiga komponen internal: Counting Element (CE, yang benar-benar menurun), Control Register (CR, menyimpan mode operasi), dan Output Latch (OL, menyimpan nilai output saat ini). Penting: yang dibaca oleh CPU saat IN adalah Output Latch, bukan nilai counter real-time.
Counter 0
CLK0, GATE0, OUT0
Biasa: System Timer (IRQ0, 18.2 Hz)
Counter 1
CLK1, GATE1, OUT1
Biasa: DRAM Refresh
Counter 2
CLK2, GATE2, OUT2
Biasa: Speaker/Buzz (atau Baud Rate Gen.)
Catatan Penting: Membaca Counter vs Membaca Output Latch. Saat CPU mengeksekusi IN AL, port_counter, yang dibaca adalah nilai di Output Latch, BUKAN nilai aktual counter (Counting Element). Output Latch diperbarui pada momen tertentu tergantung mode: saat counter mencapai nol (Mode 0, 2, 4), saat pulsa one-shot selesai (Mode 1), atau saat menurun melalui nilai setengah (Mode 3). Ini berarti nilai yang dibaca mungkin "ketinggalan" dari nilai counter real-time.
14.6 Control Word Register
Seperti 8255, chip 8253 juga memiliki Control Word Register (CWR) 8-bit yang dikonfigurasi melalui port A1A0=11. Satu penulisan CWR hanya mengkonfigurasi satu counter. Untuk mengkonfigurasi ketiga counter, diperlukan tiga penulisan CWR berturut-turut.
Format Control Word 8253
7
X
SC1
6
X
SC0
5
X
RW1
4
X
RW0
3
X
M2
2
X
M1
1
X
M0
0
B/B
BCD
SC1
SC0
Counter yang Dipilih
0
0
Counter 0
0
1
Counter 1
1
0
Counter 2
1
1
—
RW1
RW0
Operasi
0
0
Latch nilai counter saat ini ke Output Latch (read)
1
0
Load nilai awal ke counter (write, reset ke nilai baru)
0
1
— (tidak digunakan)
1
1
— (tidak digunakan)
14.7 Binary vs BCD (Bit 0)
Bit ke-0 dari Control Word menentukan format penghitungan counter:
Binary (Bit 0 = 0)
Hitungan biner normal: 0000h – FFFFh
Rentang: 1 – 65536 hitungan
Lebih umum digunakan
BCD (Bit 0 = 1)
Hitungan desimal: 0000 – 9999
Setiap 4 bit mewakili 1 digit desimal (0–9)
Digunakan untuk aplikasi yang membutuhkan desimal (misal: jam digital)
Catatan Penting untuk Nilai 0000h. Dalam mode binary, nilai 0000h secara otomatis diinterpretasikan sebagai 65536 (bukan 0). Jadi jika Anda meng-load 0000h, counter akan menurun dari 65536, bukan 0. Dalam mode BCD, 0000 diperlakukan sebagai 0. Perbedaan ini penting saat menghitung frekuensi.
14.8–14.12 Enam Mode Operasi 8253
Berikut ringkasan keenam mode dengan bentuk gelombang output dan karakteristik utamanya.
Mode
Nama
GATE=0
Auto-reload
Output Saat Menurun
Output Saat Nol
0
Interrupt on Terminal Count
Pause
Ya
Tinggi
Rendah 1 clock
1
Programmable One-Shot
Tidak ada efek
Tidak
Tinggi
Rendah 1 clock
2
Rate Generator
Reset output
Ya
Tinggi
Rendah 1 clock
3
Square Wave Generator
Pause
Ya
Tinggi (N/2), lalu Rendah (N/2)
— (kontinu)
4
Software Triggered Strobe
Tidak ada efek
Tidak
Tinggi
Rendah 1 clock
5
Hardware Triggered Strobe
Trigger!
Tidak
Tinggi
Rendah 1 clock
Bentuk Gelombang Output (skala: 1 blok = N/2 clock)
Mode 0
Pulsa rendah di akhir setiap siklus N
Mode 1
Satu pulsa tunggal setelah trigger
Mode 2
Pulsa rendah teratur, f = f_in / N
Mode 3
Gelombang kotak simetris, f = f_in / 2N
Gambar 14.2: Perbandingan bentuk gelombang output Mode 0, 1, 2, dan 3. Mode 4 dan 5 memiliki bentuk sama dengan Mode 0 dan 1, hanya berbeda pada cara trigger.
14.13 Pemetaan Alamat Counter 8253
Sama seperti 8255, pin A0 dan A1 memilih counter atau Control Word Register. Alamat = base_address + offset dari A1A0.
A1
A0
Yang Dipilih
Operasi
Alamat (base=40h)
0
0
Counter 0
Read latch / Load counter
40h
0
1
Counter 1
Read latch / Load counter
41h
1
0
Counter 2
Read latch / Load counter
42h
1
1
Control Word Register
Tulis Control Word saja
43h
Catatan Penting: Urutan Inisialisasi. Pada sistem PC standar, Counter 0 biasanya sudah dikonfigurasi oleh BIOS saat boot. Jika Anda mengubah konfigurasi Counter 0, clock system dan fungsi waktu DOS bisa terganggu. Dalam praktikum di lab, biasanya aman mengkonfigurasi ulang semua counter sesuai kebutuhan eksperimen.
14.14 Perhitungan Frekuensi dan Durasi
Rumus berikut digunakan untuk menghitung output timer 8253. N adalah nilai awal counter (65536 jika 0000h, atau sesuai yang di-load), fclk adalah frekuensi clock input.
Rumus per Mode
Mode 0 — Interrupt on Terminal Count: f_out = f_clk / N(frekuensi pulsa di akhir setiap siklus N) T_siklus = N / f_clk(durasi satu siklus penuh)
Mode 1 — Programmable One-Shot: T_pulse = N / f_clk(durasi pulsa rendah = N clock)
Mode 2 — Rate Generator: f_out = f_clk / N (sama seperti Mode 0, tapi pulsa lebih simetris)
Mode 3 — Square Wave Generator: f_out = f_clk / (2 × N) (frekuensi setengah dari Mode 0 — karena siklus penuh butuh N + N clock)
Inilah mengapa IBM PC menghasilkan ~18.2 interrupt per detik dari timer 8253!
14.15 Contoh Program: Inisialisasi dan Membaca Counter
Assembly 8086 — Base address 40h
; ========================================================; Konfigurasi 8253:; Counter 0: Mode 3 (Square Wave), Binary, load 1000; Counter 1: Mode 0 (Terminal Count), Binary, load 5000; Counter 2: Mode 3 (Square Wave), Binary, load 200; Base address = 40h; ========================================================.model small
.stack100h.codemulai:; === Langkah 1: Konfigurasi Counter 0 (Mode 3, Load, Binary) ===; SC1=00(C0), RW=11(Load), M2=011(M3), BCD=0(Binary)MOVAL, 00110110bOUT43h, AL; Load nilai awal Counter 0 (1000)MOVAL, 0E8hOUT40h, ALMOVAL, 03hOUT40h, AL; Catatan: 8253 menerima low byte dulu, lalu high byte; === Langkah 2: Konfigurasi Counter 1 (Mode 0, Load, Binary) ===; SC=01(C1), RW=11(Load), M=000(M0), BCD=0MOVAL, 01110000bOUT43h, AL; Load nilai awal Counter 1 (5000 = 1388h)MOVAL, 88hOUT41h, ALMOVAL, 13hOUT41h, AL; === Langkah 3: Konfigurasi Counter 2 (Mode 3, Load, Binary) ===; SC=10(C2), RW=11(Load), M=011(M3), BCD=0MOVAL, 10110110bOUT43h, AL; Load nilai awal Counter 2 (200 = C8h)MOVAL, 0C8hOUT42h, ALMOVAL, 00hOUT42h, AL; === Langkah 4: Baca nilai saat ini dari Counter 0 ===INAL, 40h; AL berisi sisa hitungan counter saat ini; Akhiri programMOVAH, 4ChINT21hend mulai
Kode 14.1: Inisialisasi tiga counter 8253 dengan mode dan nilai awal berbeda-beda. Perhatikan bahwa data 16-bit ditulis dalam 2 kali OUT (low byte dulu, lalu high byte).
⚠ Penting: Urutan Penulisan Data 16-bit. Karena bus data 8253 hanya 8 bit, nilai counter 16-bit harus ditulis dalam dua tahap: low byte (bit 0–7) dahulu, lalu high byte (bit 8–15). Jika terbalik, counter akan menerima nilai yang salah!
14.16 Chip Antarmuka Lainnya
Selain 8255 (I/O paralel) dan 8253 (timer), berikut beberapa chip antarmuka yang sering dipelajari bersamaan dalam konteks sistem mikroprosesor:
Chip
Fungsi
Koneksi ke CPU
Keterangan
8255
Programmable Peripheral Interface
Bus data + A0/A1 + CS/RD/WR
I/O paralel 24 pin, 3 mode operasi. Sudah dibahas di Bab 13.
8253/8254
Programmable Interval Timer
Bus data + A0/A1 + CS/RD/WR
3 counter 16-bit, 6 mode. Sedang dibahas di bab ini.
8251
USART (Serial Communication)
Bus data + CS/RD/WR + TX/RX + CLK
Konversi paralel↔serial. Mendukung sinkron/asinkron. Digunakan untuk RS-232.
8279
Programmable Keyboard/Display
Bus data + CS/RD/WR + CLK + IRQ
Mengelola keyboard matriks dan display 7-segment secara hardware. Tidak membebani CPU.
ADC 0808/0809
Analog-to-Digital Converter
Bus data + CS/RD/WR + analog input
Mengkonversi sinyal analog (0–5V) ke digital (8 bit). Digunakan bersama 8255.
DAC 0808
Digital-to-Analog Converter
Bus data + analog output
Mengkonversi data digital ke sinyal analog. Digunakan bersama 8255 untuk kontrol motor, audio, dsb.
8237
DMA Controller
(via bus sistem, bukan port I/O langsung)
Mentransfer data langsung antara I/O dan memori tanpa intervensi CPU. Sangat cepat untuk transfer blok data besar.
Mengapa Masih Belajar 8255 dan 8253?
Meskipun chip-chip ini "lawas" dan sudah digantikan oleh perangkat modern (ASIC, SoC, FPGA), mempelajarinya memberikan pemahaman fundamental tentang bagaimana CPU berkomunikasi dengan dunia luar: pemilihan port (address decoding), instruksi IN/OUT, konfigurasi mode (control word), handshake, dan timing. Konsep-konsep ini tetap relevan di era modern — prinsipnya sama, hanya implementasi fisik yang berubah.
14.17 Soal Latihan
Kerjakan soal-soal berikut untuk menguji pemahaman Anda. Klik "Lihat jawaban" setelah mencoba menjawab sendiri.
Soal 1. Mengapa mikroprosesor 8086 membutuhkan chip timer eksternal seperti 8253, padahal 8086 sudah memiliki instruksi LOOP yang bisa membuat delay?
▶ Lihat jawaban
Instruksi LOOP membuat delay dengan cara menghabiskan siklus CPU — selama delay, CPU tidak bisa melakukan pekerjaan lain (wasted CPU cycles). Chip timer 8253 bekerja secara independen dari CPU: setelah diinisialisasi, counter menurun secara otomatis tanpa intervensi CPU. CPU bisa menjalankan tugas lain sambil menunggu timer selesai. Selain itu, 8253 menghasilkan sinyal clock periodik yang berguna untuk clock system, baud rate generator, dan one-shot pulse — hal yang tidak bisa dilakukan LOOP.
Soal 2. Jelaskan perbedaan antara Mode 0 (Interrupt on Terminal Count) dan Mode 1 (Programmable One-Shot) pada 8253.
▶ Lihat jawaban
Mode 0 (Interrupt on Terminal Count): Counter menurun terus menerus setelah mencapai nol — output tetap tinggi, lalu pulsa ke rendah pada hitungan terakhir, lalu counter otomatis reload dari nilai awal dan mengulangi siklusnya tanpa henti. Berguna untuk clock periodik.
Mode 1 (Programmable One-Shot): Counter menghasilkan satu pulsa tunggal (output rendah selama satu periode clock) setelah di-trigger oleh sinyal gate. Setelah selesai, output kembali tinggi dan counter berhenti sampai di-trigger lagi. Berguna untuk delay tunggal yang presisi.
Soal 3. Tulis nilai Control Word untuk mengkonfigurasi Counter 0 pada Mode 3 (Square Wave Generator), Counter 1 pada Mode 0, dan baca/load Counter 2 (Mode 0). Clock input menggunakan binary count.
▶ Lihat jawaban
Langkah menentukan Control Word:
1. Bit 7-6 (SC1-SC0): Pilih Counter 2 = 10 2. Bit 5-4 (RW1-RW0): Baca/Load = 11 3. Bit 3-1 (M2-M1-M0): Mode 0 = 000 4. Bit 0 (BCD/Binary): Binary = 0
Hasil: 10110000b = B0h
Catatan: Ini adalah Control Word pertama yang ditulis. Setelah Counter 2 di-load, kita perlu menulis Control Word lagi untuk Counter 0 (Mode 3) dan Counter 1 (Mode 0) karena hanya satu counter yang bisa dikonfigurasi per satu penulisan Control Word.
Soal 4. Jika frekuensi input clock 8253 adalah 1.19318 MHz dan Counter 0 diisi dengan nilai 65536 (0000h), berapa frekuensi output yang dihasilkan di Mode 3 (Square Wave Generator)?
▶ Lihat jawaban
Pada Mode 3, output adalah gelombang kotak dengan frekuensi setengah dari frekuensi input clock dibagi nilai counter:
Inilah frekuensi clock system PC standar IBM (18.2 detik per pulsa). Karena 65536 = 216 dan nilai 0000h dalam 16-bit dianggap sebagai 65536 pada 8253, ini adalah nilai default yang menghasilkan tick clock ~18.2 Hz.
Soal 5. Apa fungsi pin CLK, GATE, dan OUT pada masing-masing counter 8253? Jelaskan perannya dalam Mode 0.
▶ Lihat jawaban
CLK (Clock Input): Menerima sinyal clock yang akan diturunkan oleh counter. Setiap pulsa naik (rising edge) pada CLK menurunkan counter sebanyak 1. Pada Mode 0, clock bisa berasal dari osilator kristal atau sumber clock lainnya.
GATE (Gate Input): Mengontrol apakah counter diizinkan menurun. Pada Mode 0, jika GATE = 0 (rendah), counter dihentikan (paused) tetapi nilai saat ini dipertahankan. Jika GATE = 1 (tinggi), counter menurun normal. GATE bisa digunakan untuk menghentikan/menjalankan timer secara eksternal.
OUT (Output): Pada Mode 0, OUT tetap tinggi selama counter menurun, lalu menjadi rendah selama satu periode clock input tepat ketika counter mencapai nol, lalu kembali tinggi dan counter me-reload otomatis.
14.18 Kuis Bab 14
Uji pemahaman Anda. Pilih satu jawaban yang paling tepat. Setelah memilih, jawaban benar akan ditandai dan penjelasan muncul.
1. Chip 8253 memiliki berapa buah counter independen?
8253 memiliki 3 counter independen 16-bit (Counter 0, Counter 1, Counter 2), masing-masing dengan pin CLK, GATE, dan OUT sendiri. Setiap counter dapat dikonfigurasi ke mode yang berbeda secara independen.
2. Berapa lebar (jumlah bit) setiap counter pada 8253?
Setiap counter pada 8253 memiliki lebar 16 bit, sehingga nilai maksimum yang bisa di-load adalah 65535 (FFFFh) dalam mode binary atau 9999 dalam mode Binary-Coded Decimal (BCD).
3. Pada Mode 3 (Square Wave Generator), jika counter diisi nilai 1000 dan clock input 1 MHz, frekuensi output adalah...
Mode 3 menghasilkan gelombang kotak dengan frekuensi = f_in / (2 × N) = 1.000.000 / (2 × 1000) = 500 Hz. Faktor pembagi 2 muncul karena satu siklus penuh gelombang kotak membutuhkan counter menurun dari N ke 0 (setengah siklus tinggi) lalu reload dan menurun lagi (setengah siklus rendah).
4. Apa yang terjadi jika GATE = 0 pada Mode 0?
Pada Mode 0, GATE = 0 menyebabkan counter dihentikan (paused) — nilai counter tidak berubah. Ketika GATE kembali ke 1, counter melanjutkan penurunan dari nilai yang dihentikan. GATE tidak mereset counter.
5. Bit 0 pada Control Word 8253 berfungsi untuk...
Bit 0 (BCD/Binary) menentukan format hitungan: 0 = Binary (hitungan biner normal 0000h–FFFFh), 1 = BCD (Binary-Coded Decimal, hitungan 0000–9999). Ini berpengaruh pada bagaimana nilai di-interpretasikan oleh counter.
6. Mode 4 (Software Triggered Strobe) menghasilkan output berupa...
Mode 4: output tetap tinggi saat counter menurun. Ketika counter mencapai nol, output menjadi rendah selama SATU periode clock input, lalu kembali tinggi. Counter berhenti (tidak auto-reload). Untuk menghasilkan pulsa lagi, counter harus di-load ulang melalui port I/O.
7. Jika base address 8253 adalah 40h, alamat Counter 1 adalah...
Alokasi alamat 8253: A1A0=00→Counter 0 (40h), A1A0=01→Counter 1 (41h), A1A0=10→Counter 2 (42h), A1A0=11→Control Word Register (43h). Sama seperti konvensi 8255.
8. Fungsi utama chip 8251 (USART) adalah...
8251 (Universal Synchronous/Asynchronous Receiver/Transmitter) adalah chip antarmuka yang mengkonversi data paralel dari bus sistem menjadi data serial (dan sebaliknya) untuk komunikasi serial seperti RS-232.