Minggu 13 Interfacing

Bab 13: Antarmuka I/O: PPI 8255

Mempelajari arsitektur chip antarmuka PPI (Programmable Peripheral Interface) 8255, tiga mode operasinya, pemrograman Control Word Register, serta cara menghubungkan dan mengendalikan perangkat I/O menggunakan instruksi IN dan OUT pada 8086.

Capaian Pembelajaran Bab Ini

Setelah mempelajari bab ini, mahasiswa mampu menjelaskan arsitektur internal PPI 8255 dan fungsinya sebagai jembatan antara CPU dan perangkat luar; menghitung Control Word untuk berbagai konfigurasi port; membedakan Mode 0, Mode 1, dan Mode 2; serta menulis program Assembly 8086 yang menginisialisasi dan mengakses port 8255 melalui instruksi IN dan OUT.

13.1 Mengapa Dibutuhkan Chip Antarmuka I/O

Mikroprosesor 8086 dirancang sebagai CPU umum — pin-pinnya sebagian besar digunakan untuk bus alamat (20 pin), bus data (16 pin), dan sinyal kontrol. Ini menyisakan sangat sedikit pin yang bisa langsung digunakan untuk berkomunikasi dengan perangkat luar seperti LED, switch, motor, sensor, atau display.

Chip antarmuka I/O seperti PPI 8255 dibutuhkan untuk menjembatani kesenjangan ini. Chip ini terhubung ke bus sistem di satu sisi dan ke perangkat luar di sisi lain, menyediakan port I/O yang dapat diprogram tanpa memerlukan rangkaian logika diskrit yang kompleks.

Tanpa Chip Antarmuka

  • Perlu banyak IC logika (decoder, buffer, latch)
  • Rangkaian tidak fleksibel — ubah perangkat = ubah rangkaian
  • Tidak mendukung handshaking
  • Membutuhkan banyak pin CPU

Dengan PPI 8255

  • Satu chip menyediakan 24 pin I/O
  • Fleksibel — konfigurasi via software (Control Word)
  • Mendukung 3 mode termasuk handshaking
  • Hanya perlu 8 pin data + beberapa pin kontrol dari CPU

13.2 Pengenalan PPI 8255

PPI 8255 (Programmable Peripheral Interface) adalah chip antarmuka I/O yang diproduksi oleh Intel, dirancang khusus untuk digunakan bersama mikroprosesor keluarga 8085/8086. Chip ini merupakan salah satu IC antarmuka yang paling banyak digunakan dalam sistem mikroprosesor dan masih menjadi materi dasar dalam pembelajaran interfacing.

SpesifikasiNilai
Jumlah Port I/O3 port (Port A, Port B, Port C)
Total Pin I/O24 pin (8 + 8 + 8)
Lebar Bus Data8 bit (D0–D7)
Mode Operasi3 mode (Mode 0, Mode 1, Mode 2)
Tegangan Operasi+5V
TeknologiNMOS (versi asli)
Jumlah Pin40 pin (DIP)
Kompatibel8085, 8086, 8088, Z80, dan lainnya

13.3 Arsitektur Internal 8255

Secara internal, chip 8255 terdiri dari beberapa blok fungsional utama:

Bus Data
D0–D7
Data Bus Buffer — antarmuka 8-bit ke bus data sistem
Internal Architecture
Read/Write
Control Logic
RD, WR, CS, A0, A1, RESET
Group A
Control
Port A + PC Upper
Mode 0/1/2
Group B
Control
Port B + PC Lower
Mode 0/1
→ ke perangkat luar →
Port A
PA0–PA7 (8 bit)
Port B
PB0–PB7 (8 bit)
Port C
PC0–PC7 (8 bit)
Bisa dipisah 4+4

Gambar 13.1: Diagram blok arsitektur internal PPI 8255. Port dibagi menjadi Group A (Port A + PC upper) dan Group B (Port B + PC lower).

13.4 Pin-Pin Penting 8255

PinNamaDeskripsi
D0–D7Data BusBus data 8-bit bidireksional, terhubung ke bus data sistem
PA0–PA7Port A8 pin I/O, mendukung semua mode
PB0–PB7Port B8 pin I/O, mendukung Mode 0 dan Mode 1
PC0–PC7Port C8 pin I/O, bisa dipisah 4+4; sebagian menjadi sinyal kontrol di Mode 1/2
A0, A1Port SelectMemilih port: 00=Port A, 01=Port B, 10=Port C, 11=Control Word Register
CSChip SelectAktif rendah. CS=0: chip aktif; CS=1: chip diabaikan
RDReadAktif rendah. RD=0: CPU membaca data dari port yang dipilih
WRWriteAktif rendah. WR=0: CPU menulis data ke port yang dipilih
RESETResetAktif tinggi. Menghapus semua port register dan men-set Mode 0 input
VCCPower+5V
GNDGround0V

13.5 Tiga Port I/O

Port A

  • 8 bit (PA0–PA7)
  • Mendukung Mode 0, 1, dan 2
  • Output: latched (data tersimpan)
  • Input: latched (Mode 1/2) atau buffered (Mode 0)
  • Digabung dengan PC4–PC7 sebagai Group A

Port B

  • 8 bit (PB0–PB7)
  • Mendukung Mode 0 dan 1 saja
  • Output: latched
  • Input: latched (Mode 1) atau buffered (Mode 0)
  • Digabung dengan PC0–PC3 sebagai Group B

Port C

  • 8 bit (PC0–PC7)
  • Bisa dipisah: PC Upper (PC4–PC7) dan PC Lower (PC0–PC3)
  • Di Mode 0: semuanya I/O biasa
  • Di Mode 1/2: sebagian menjadi sinyal handshaking
  • Bit individual bisa di-set/reset via Control Word

Apa itu "Latched" vs "Buffered"? Latched berarti data yang ditulis/disimpan akan tetap ada di pin port sampai data baru ditulis — port "mengingat" nilai terakhir. Buffered (unlatched input) berarti data hanya tersedia sesaat saat sinyal RD aktif — port tidak menyimpan data, hanya meneruskannya. Ini penting untuk memahami perilaku baca di berbagai mode.

13.6 Control Word Register

Control Word Register (CWR) adalah register 8-bit internal yang menentukan konfigurasi seluruh chip 8255. CWR diakses ketika A1=1 dan A0=1. Nilai CWR ditulis menggunakan instruksi OUT.

Format Control Word (Bit 7 = 1: Mode Set)
7
1
Mode Set
6
0
Mode A (hi)
5
0
Mode A (lo)
4
0/1
Port A I/O
3
0/1
PC Upper I/O
2
0
Mode B
1
0/1
Port B I/O
0
0/1
PC Lower I/O

Gambar 13.2: Format bit Control Word Register 8255 untuk Mode Set (D7=1).

BitNama0 = Input1 = Output
D7 Mode Set Bit Harus selalu 1 untuk mode set
D6–D5 Mode Port A 00 = Mode 0 01 = Mode 1, 1X = Mode 2
D4 Arah Port A Input Output
D3 Arah PC Upper (PC4–PC7) Input Output
D2 Mode Port B 0 = Mode 0 1 = Mode 1
D1 Arah Port B Input Output
D0 Arah PC Lower (PC0–PC3) Input Output

Contoh Perhitungan Control Word

Contoh 1: Semua port output, Mode 0
10000000b = 80h
D7=1, D6-5=00(M0), D4=0(out), D3=0(out), D2=0(M0), D1=0(out), D0=0(out)
Contoh 2: Port A input, Port B output, PC upper input, PC lower output, Mode 0
10010010b = 92h
D7=1, D6-5=00(M0), D4=1(in), D3=1(in), D2=0(M0), D1=0(out), D0=1(in)
Contoh 3: Port A output Mode 0, Port B input Mode 1, PC upper output, PC lower otomatis (handshaking)
10000110b = 86h
D7=1, D6-5=00(M0), D4=0(out), D3=0(out), D2=1(M1), D1=1(in), D0=X(otomatis di M1)

13.7 Bit Set/Reset Feature

Fitur unik Port C: setiap bit individual Port C (PC0–PC7) bisa di-set ke 1 atau di-reset ke 0 tanpa mempengaruhi bit lainnya. Ini berguna untuk mengontrol sinyal on/off individual (misalnya satu LED atau satu relay).

Format Bit Set/Reset (D0 = 0)
7
0
0 (BSR)
6
X
X (don't care)
5
X
X (don't care)
4
X
X (don't care)
3
BSR
Bit Select (0–7)
2
BSR
Bit Select (0–7)
1
BSR
Bit Select (0–7)
0
S/R
Set/Reset
Contoh: Set PC3 = 1, lalu Reset PC3 = 0
; Set PC3 = 1 (bit select = 011, set/reset = 1)
    MOV  AL, 00000111b     ; D0=1(set), D3-1=011(PC3)
    OUT  CWR_PORT, AL    ; kirim ke control register

; Reset PC3 = 0 (bit select = 011, set/reset = 0)
    MOV  AL, 00000110b     ; D0=0(reset), D3-1=011(PC3)
    OUT  CWR_PORT, AL    ; kirim ke control register

Kode 13.1: Menggunakan Bit Set/Reset untuk mengontrol individual bit Port C tanpa mempengaruhi bit lain.

13.8 Mode 0: Simple I/O

Mode 0 adalah mode paling sederhana. Setiap port berfungsi sebagai input atau output tanpa sinyal handshaking. Data ditulis langsung ke port output atau dibaca langsung dari port input. Cocok untuk perangkat sederhana yang selalu siap.

Contoh Perangkat Output (Mode 0)

  • • LED dan rangkaian indikator
  • • Display 7-segment (tanpa handshaking)
  • • Relay dan solenoid
  • • Motor DC (via driver)
  • • Buzzer

Contoh Perangkat Input (Mode 0)

  • • Switch dan push button
  • • DIP switch
  • • Sensor digital (output HIGH/LOW)
  • • Encoder rotari sederhana
  • • Comparator (output digital)

13.9 Mode 1: Strobed I/O

Mode 1 menambahkan sinyal handshaking menggunakan bit-bit Port C. Sinyal ini mengkoordinasikan transfer data antara 8255 dan perangkat luar, memastikan data ditransfer hanya saat perangkat penerima siap.

SinyalArahDigunakan UntukArti
OBFOutput (dari 8255)Output strobeOutput Buffer Full — data siap dibaca oleh perangkat luar
ACKInput (ke 8255)Output acknowledgePerangkat luar sudah menerima data
STBInput (ke 8255)Input strobePerangkat luar menempatkan data di port input
IBFOutput (dari 8255)Input buffer fullData sudah ada di port input, siap dibaca CPU
INTROutput (dari 8255)Interrupt requestMinta perhatian CPU bahwa transfer selesai

Bit Port C yang Dipakai di Mode 1

Port A di Mode 1 (Output):
PC7=OBF, PC6=ACK, PC3=INTR
(PC4, PC5 tetap bisa dipakai I/O)
Port B di Mode 1 (Output):
PC1=OBF, PC2=ACK, PC0=INTR
Port A di Mode 1 (Input):
PC4=STB, PC5=IBF, PC3=INTR
(PC6, PC7 tetap bisa dipakai I/O)
Port B di Mode 1 (Input):
PC2=STB, PC1=IBF, PC0=INTR

13.10 Mode 2: Bi-directional Bus

Mode 2 hanya tersedia untuk Port A. Dalam mode ini, Port A berfungsi sebagai bus bidirectional — bisa menerima dan mengirim data menggunakan 8 jalur data yang sama, dengan 5 sinyal handshaking dari Port C.

SinyalPin Port CFungsi
OBFAPC7Output Buffer Full (data output siap)
ACKAPC6Acknowledge dari perangkat luar
STBAPC4Strobe — perangkat luar menaruh data input
IBFAPC5Input Buffer Full — data input siap dibaca
INTRAPC3Interrupt Request

Catatan: PC0–PC2 tetap tersedia untuk Mode 0/1 (Port B). Mode 2 biasanya digunakan untuk antarmuka dengan perangkat duplex seperti printer yang bisa mengirim dan menerima data.

13.11 Pemetaan Alamat Port

Pin select A0 dan A1 pada 8255 dihubungkan ke dua bit terendah bus alamat (A0 dan A1 dari CPU, bukan pin Port A). Alamat port = base_address + offset dari A1A0.

A1A0Port yang DipilihAlamat (jika base=60h)Alamat (jika base=40h)
00Port A60h40h
01Port B61h41h
10Port C62h42h
11Control Word Register63h43h

Catatan Penting: Base address ditentukan oleh rangkaian decoder eksternal yang menghasilkan sinyal CS (Chip Select). Nilai base address tidak ditentukan oleh chip 8255 itu sendiri, melainkan oleh bagaimana decoder dihubungkan ke bus alamat. Nilai 60h, 40h, atau lainnya adalah konvensi yang ditentukan oleh perancang sistem. Dalam soal ujian, base address biasanya sudah diberikan.

13.12 Instruksi IN dan OUT

8086 menggunakan instruksi khusus IN dan OUT untuk berkomunikasi dengan port I/O, bukan instruksi MOV. Ini karena 8086 memiliki ruang alamat I/O terpisah dari ruang alamat memori.

Sintaks IN dan OUT
; Baca dari port I/O ke register
IN   AL, port_alamat     ; baca 1 byte dari port ke AL
IN   AX, port_alamat     ; baca 1 word dari port ke AX

; Tulis dari register ke port I/O
OUT  port_alamat, AL     ; tulis 1 byte dari AL ke port
OUT  port_alamat, AX     ; tulis 1 word dari AX ke port

; port_alamat bisa berupa immediate (0–FFh) atau via register DX
IN   AL, 60h             
IN   AL, DX               FFh)
OUT  60h, AL             
OUT  DX, AL              

⚠ Kesalahan Umum: Menggunakan MOV untuk Akses Port

MOV AL, [60h] membaca dari memori di alamat 60h, BUKAN dari port I/O. Untuk mengakses port I/O, harus menggunakan IN AL, 60h. Ini adalah perbedaan fundamental arsitektur 8086 yang sering membuat mahasiswa bingung.

13.13 Contoh Program: Inisialisasi 8255 dan Kendali LED

Assembly 8086 — Base address 60h
; ========================================================
; Konfigurasi: Port A = output, Port B = input
;               Port C = output, Mode 0 semua
; Base address PPI 8255 = 60h
; ========================================================

; Alamat port:
;   Port A           = 60h (A1=0, A0=0)
;   Port B           = 61h (A1=0, A0=1)
;   Port C           = 62h (A1=1, A0=0)
;   Control Word Reg = 63h (A1=1, A0=1)

.model small
.stack 100h

.code
mulai:
    ; === Langkah 1: Inisialisasi 8255 ===
    ; Control Word: 10000010b = 82h
    ; D7=1(mode set), D6-5=00(M0), D4=0(PA out)
    ; D3=0(PCU out), D2=0(M0), D1=1(PB in), D0=0(PCL out)
    MOV  AL, 10000010b
    OUT  63h, AL           ; kirim control word ke CWR

    ; === Langkah 2: Nyalakan semua LED di Port A ===
    MOV  AL, 0FFh           ; semua bit = 1 (LED nyala)
    OUT  60h, AL           ; tulis ke Port A

    ; === Langkah 3: Matikan semua LED di Port A ===
    MOV  AL, 00h            ; semua bit = 0 (LED mati)
    OUT  60h, AL           ; tulis ke Port A

    ; === Langkah 4: Pola LED bergantian ===
    MOV  BL, 01h           
    MOV  CX, 8             

led_walk:
    MOV  AL, BL           ; AL = pola LED saat ini
    OUT  60h, AL           ; tampilkan ke Port A

    ; Delay sederhana (tanpa prosedur delay)
    PUSH CX
    MOV  CX, 0FFFFh
delay1:
    LOOP delay1
    POP  CX

    SHL  BL, 1            
    LOOP led_walk

    ; Akhiri program
    MOV  AH, 4Ch
    INT  21h

end mulai

Kode 13.2: Inisialisasi 8255 (Mode 0) dan LED walking pattern di Port A. Pola BL berubah: 01h→02h→04h→08h→10h→20h→40h→80h.

13.14 Contoh Program: Baca Switch, Tampilkan ke LED

Program ini membaca status 8 switch yang terhubung ke Port B, lalu menampilkannya ke 8 LED di Port A. Ini adalah aplikasi klasik Mode 0 yang mendemonstrasikan input dan output secara bersamaan.

Diagram Koneksi: 8 Switch → 8255 → 8 LED
8 Switch
SW1–SW8
+5V / GND
Port B (Input)
PB0–PB7
alamat 61h
|
PPI 8255
Mode 0
CWR=82h @ 63h
|
Port A (Output)
PA0–PA7
alamat 60h
8 LED
LED1–LED8
+Resistor 330Ω
Assembly 8086
.model small
.stack 100h

.code
mulai:
    ; === Inisialisasi 8255 ===
    ; Port A = output (LED), Port B = input (switch)
    ; Port C = output, semua Mode 0
    MOV  AL, 10000010b     
    OUT  63h, AL

    ; === Baca switch dari Port B ===
    IN   AL, 61h           ; baca Port B ke AL
    ; Sekarang AL berisi status 8 switch:
    ;   Bit 0 = SW1, Bit 1 = SW2, ... Bit 7 = SW8
    ;   1 = switch tertutup (ON), 0 = switch terbuka (OFF)

    ; === Tampilkan ke LED di Port A ===
    OUT  60h, AL           
    ; LED yang terhubung ke bit yang bernilai 1 akan menyala

    ; === Opsional: invert jika switch active-low ===
    ; Jika switch memberikan 0 saat ditekan (active-low):
    NOT  AL                
    OUT  60h, AL           

    MOV  AH, 4Ch
    INT  21h

end mulai

Kode 13.3: Membaca switch dari Port B dan menampilkan ke LED di Port A. Perhatikan penggunaan IN untuk baca dan OUT untuk tulis.

Catatan: Active-High vs Active-Low. Rangkaian switch bisa dirancang active-high (switch tertutup = 1, LED nyala) atau active-low (switch tertutup = 0, LED nyala perlu instruksi NOT). Pastikan memahami jenis rangkaian yang digunakan sebelum menulis program. Pada praktikum, konfigurasi rangkaian biasanya sudah ditentukan oleh modul praktikum.

13.15 Soal Latihan

Kerjakan soal-soal berikut untuk menguji pemahaman Anda. Klik "Lihat jawaban" setelah mencoba menjawab sendiri.

Soal 1. Mengapa mikroprosesor 8086 membutuhkan chip PPI (Programmable Peripheral Interface) 8255 untuk berkomunikasi dengan perangkat luar? Mengapa tidak langsung terhubung?

Lihat jawaban

Ada beberapa alasan: (1) Pin I/O 8086 terbatas — sebagian besar pin digunakan untuk bus alamat, data, dan kontrol, menyisakan sangat sedikit pin untuk I/O langsung. (2) Kompatibilitas tegangan/arus — perangkat luar (LED, motor, sensor) memiliki karakteristik elektrik yang berbeda dari pin CPU. 8255 berfungsi sebagai buffer/tier antarmuka. (3) Fleksibilitas pemrograman — mode operasi 8255 dapat dikonfigurasi melalui software (control word), sehingga satu chip bisa melayani berbagai jenis perangkat tanpa mengubah rangkaian hardware. (4) Handshaking — 8255 mendukung sinyal kontrol (strobe, acknowledge) yang diperlukan oleh banyak perangkat.

Soal 2. Jelaskan fungsi masing-masing Port A, Port B, dan Port C pada chip 8255. Berapa bit masing-masing dan apa perbedaan kemampuannya?

Lihat jawaban

Port A: 8-bit (PA0–PA7). Port paling serbaguna — bisa beroperasi di semua 3 mode (Mode 0 I/O, Mode 1 strobed I/O, Mode 2 bidirectional). Memiliki pull-up internal yang kuat.

Port B: 8-bit (PB0–PB7). Bisa beroperasi di Mode 0 dan Mode 1, tetapi tidak bisa di Mode 2. Juga memiliki pull-up internal.

Port C: 8-bit (PC0–PC7). Bisa digunakan sebagai dua port 4-bit terpisah (PC-upper = PC4–PC7, PC-lower = PC0–PC3) di Mode 0. Pada Mode 1 dan Mode 2, sebagian atau seluruh bit Port C digunakan secara otomatis sebagai sinyal kontrol handshaking (OBF, ACK, STB, IBF, INTR). Bit yang tersisa tetap bisa dipakai sebagai I/O biasa.

Soal 3. Tuliskan nilai Control Word untuk konfigurasi berikut: Port A sebagai output, Port B sebagai input, Port C upper sebagai output, Port C lower sebagai input. Gunakan Mode 0 untuk semua port.

Lihat jawaban

Langkah menentukan Control Word:

1. Bit 7 (Mode Set Bit) = 1 (wajib, menandakan ini adalah mode set)
2. Bit 6-5 (Mode Port A) = 00 (Mode 0)
3. Bit 4 (Direction Port A) = 0 (Output)
4. Bit 3 (Direction Port C Upper) = 0 (Output)
5. Bit 2 (Mode Port B) = 0 (Mode 0)
6. Bit 1 (Direction Port B) = 1 (Input)
7. Bit 0 (Direction Port C Lower) = 1 (Input)

Hasil: 10000011b = 83h

Soal 4. Pada sistem dengan alamat base port 8255 sebesar 60h, berapa alamat I/O untuk Port A, Port B, Port C, dan Control Word Register? Bagaimana cara mengaksesnya?

Lihat jawaban

Alamat port ditentukan oleh pin A0 dan A1 yang dihubungkan ke dua bit terendah dari bus alamat:

A1 A0 = 00: Port A → 60h + 0 = 60h
A1 A0 = 01: Port B → 60h + 1 = 61h
A1 A0 = 10: Port C → 60h + 2 = 62h
A1 A0 = 11: Control Word Register → 60h + 3 = 63h

Cara mengakses menggunakan instruksi IN dan OUT:
OUT 63h, AL (kirim control word ke register kontrol)
OUT 60h, AL (tulis ke Port A)
IN AL, 61h (baca dari Port B)

Soal 5. Apa perbedaan antara Mode 0, Mode 1, dan Mode 2 pada PPI 8255? Kapan masing-masing mode digunakan?

Lihat jawaban

Mode 0 (Simple I/O): Transfer data tanpa handshaking. Data langsung ditulis/dibaca tanpa sinyal kontrol. Digunakan untuk perangkat sederhana yang selalu siap menerima/mengirim data (LED, switch, 7-segment statis).

Mode 1 (Strobed I/O): Transfer data dengan handshaking menggunakan sinyal kontrol dari Port C (OBF, ACK, STB, IBF, INTR). Digunakan ketika perangkat memerlukan sinyal "siap" sebelum data ditransfer (printer, ADC, keyboard matriks).

Mode 2 (Bi-directional Bus): Hanya untuk Port A. Port A berfungsi ganda sebagai input DAN output sekaligus, dengan 5 sinyal handshaking dari Port C. Digunakan untuk perangkat duplex yang bisa mengirim dan menerima data (antarmuka duplex, bus bersama).

Soal 6. Tulis program Assembly 8086 yang menginisialisasi 8255 (base address 40h) dengan Port A sebagai output, Port B sebagai input, Port C sebagai output — semua Mode 0. Kemudian baca Port B dan tampilkan hasilnya ke Port A.

Lihat jawaban

Kode:
MOV AL, 10000010b ; CW: PA=out, PB=in, PC=out, Mode 0
OUT 43h, AL ; kirim ke Control Word Register (40h+3)

; Baca Port B
IN AL, 41h ; baca dari Port B (40h+1)

; Tulis ke Port A
OUT 40h, AL ; tulis ke Port A (40h+0)

; Juga bisa tulis ke Port C
MOV AL, 0FFh
OUT 42h, AL ; set semua bit Port C = 1


Program ini membaca status 8 switch yang terhubung ke Port B, lalu menampilkan status tersebut ke 8 LED yang terhubung ke Port A.

13.16 Kuis Bab 13

Uji pemahaman Anda. Pilih satu jawaban yang paling tepat. Setelah memilih, jawaban benar akan ditandai dan penjelasan muncul.

1. Berapa jumlah total pin I/O yang tersedia pada chip PPI 8255?

2. Pin A0 dan A1 pada 8255 digunakan untuk...

3. Control Word 80h (10000000b) mengkonfigurasi 8255 menjadi...

4. Instruksi Assembly 8086 mana yang digunakan untuk menulis data ke port I/O 8255?

5. Mode operasi 8255 mana yang mendukung transfer data bidirectional?

6. Jika base address 8255 adalah 80h, alamat Control Word Register adalah...

7. Pada Mode 1, bagian dari Port C yang digunakan sebagai sinyal handshaking adalah...

8. Pin CS (Chip Select) pada 8255 berfungsi untuk...