Minggu 14 Interfacing

Bab 14: Timer/Counter 8253 & Antarmuka Lainnya

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.

14.1 Mengapa Dibutuhkan Chip Timer Eksternal

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.

SpesifikasiNilai
Jumlah Counter3 buat (Counter 0, 1, 2)
Lebar Counter16 bit per counter
Rentang Hitungan (Binary)0000h – FFFFh (1 – 65536)
Rentang Hitungan (BCD)0000 – 9999
Mode Operasi6 mode (Mode 0 – Mode 5)
Frekuensi Clock Maks~2.6 MHz (versi standar 8253)
Tegangan Operasi+5V
Jumlah Pin24 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

PinNamaDeskripsi
D0–D7Data BusBus data 8-bit bidireksional untuk transfer data ke/dari CPU
CLK0–CLK2Clock InputInput clock untuk masing-masing counter (setiap rising edge menurunkan counter 1)
GATE0–GATE2Gate InputMengontrol penghitungan: enable/disable/pause. Fungsinya tergantung mode (lihat tabel mode)
OUT0–OUT2OutputSinyal output dari masing-masing counter. Bentuk sinyal tergantung mode.
A0, A1AddressMemilih counter/CWR: 00=C0, 01=C1, 10=C2, 11=CWR
CSChip SelectAktif rendah. CS=0: chip aktif dan merespons operasi
RDReadAktif rendah. Membaca nilai counter yang dipilih (latched)
WRWriteAktif rendah. Menulis nilai awal ke counter/CWR yang dipilih
VCCPower+5V
GNDGround0V

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
SC1SC0Counter yang Dipilih
00Counter 0
01Counter 1
10Counter 2
11
RW1RW0Operasi
00Latch nilai counter saat ini ke Output Latch (read)
10Load nilai awal ke counter (write, reset ke nilai baru)
01— (tidak digunakan)
11— (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.

ModeNamaGATE=0Auto-reloadOutput Saat MenurunOutput Saat Nol
0Interrupt on Terminal CountPauseYaTinggiRendah 1 clock
1Programmable One-ShotTidak ada efekTidakTinggiRendah 1 clock
2Rate GeneratorReset outputYaTinggiRendah 1 clock
3Square Wave GeneratorPauseYaTinggi (N/2), lalu Rendah (N/2)— (kontinu)
4Software Triggered StrobeTidak ada efekTidakTinggiRendah 1 clock
5Hardware Triggered StrobeTrigger!TidakTinggiRendah 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.

A1A0Yang DipilihOperasiAlamat (base=40h)
00Counter 0Read latch / Load counter40h
01Counter 1Read latch / Load counter41h
10Counter 2Read latch / Load counter42h
11Control Word RegisterTulis Control Word saja43h

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)
Mode 4 & 5 — Strobe:
T_pulse = 1 / f_clk (lebar pulsa = 1 periode clock input, tetap)

Contoh Perhitungan: System Timer PC (Mode 3)

f_clk = 1.19318 MHz, N = 65536 (0000h), Mode 3

f_out = 1.193.180.000 / (2 × 65.536)

f_out = 9.10 Hz

T_siklus = 1 / 9.10 ≈ 0.110 detik = 109.9 ms (≈ 18.2 pulsa/detik)

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
.stack 100h

.code
mulai:
    ; === Langkah 1: Konfigurasi Counter 0 (Mode 3, Load, Binary) ===
    ; SC1=00(C0), RW=11(Load), M2=011(M3), BCD=0(Binary)
    MOV AL, 00110110b     
    OUT  43h, AL           

    ; Load nilai awal Counter 0 (1000)
    MOV  AL, 0E8h            
    OUT  40h, AL           
    MOV  AL, 03h             
    OUT  40h, 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=0
    MOV AL, 01110000b     
    OUT  43h, AL

    ; Load nilai awal Counter 1 (5000 = 1388h)
    MOV AL, 88h             
    OUT  41h, AL
    MOV AL, 13h             
    OUT  41h, AL

    ; === Langkah 3: Konfigurasi Counter 2 (Mode 3, Load, Binary) ===
    ; SC=10(C2), RW=11(Load), M=011(M3), BCD=0
    MOV  AL, 10110110b     
    OUT  43h, AL

    ; Load nilai awal Counter 2 (200 = C8h)
    MOV  AL, 0C8h
    OUT  42h, AL
    MOV  AL, 00h             
    OUT  42h, AL

    ; === Langkah 4: Baca nilai saat ini dari Counter 0 ===
    IN   AL, 40h           
    ; AL berisi sisa hitungan counter saat ini

    ; Akhiri program
    MOV  AH, 4Ch
    INT  21h

end 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:

(via bus sistem, bukan port I/O langsung)
ChipFungsiKoneksi ke CPUKeterangan
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 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:

fout = fin / (2 × N)
fout = 1.19318 MHz / (2 × 65536)
fout = 1.19318.000 / 131.072
fout9.10 Hz

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?

2. Berapa lebar (jumlah bit) setiap counter pada 8253?

3. Pada Mode 3 (Square Wave Generator), jika counter diisi nilai 1000 dan clock input 1 MHz, frekuensi output adalah...

4. Apa yang terjadi jika GATE = 0 pada Mode 0?

5. Bit 0 pada Control Word 8253 berfungsi untuk...

6. Mode 4 (Software Triggered Strobe) menghasilkan output berupa...

7. Jika base address 8253 adalah 40h, alamat Counter 1 adalah...

8. Fungsi utama chip 8251 (USART) adalah...