Anda di halaman 1dari 17

5.

Programmable Interrupt Controller (PIC 8259)

5.1 Pendahuluan (sekitar interupsi)


Komponen yang juga memegang peranan penting dalam bagian
sistem minimum adalah PIC. Interupsi sering dibutuhkan dalam interfacing
sebuah peralatan ke suatu sistem mikroprosesor, dalam hal ini sistem
minimum. Kegunaan utama interupsi adalah memaksa uP untuk melayani
sebuah fungsi (prosedur) pada saat diminta oleh suatu alat, tanpa
mengharuskan uP terus-menerus memeriksa apakah alat tersebut perlu
dilayani. Hal ini membuat uP bebas melakukan pekerjaan lain sampai ia
dibutuhkan secara khusus oleh alat tadi.
Interupsi sering digunakan dalam aplikasi interfacing dimana
program membutuhkan sinkronisasi dengan perangkat luar atau saat
dimana error atau kondisi status dapat muncul dan membutuhkan perhatian
uP atau program. Fungsi interupsi pada IBM PC menyediakan 9 level
interupsi atau port permintaan (request port). Kesembilan port ini diatur
prioritasnya sedemikian rupa sehingga jika banyak permintaan aktif dalam
waktu bersamaan, mereka dilayani dengan urutan yang didiskripsikan
dahulu.
Kebanyakan uP memungkinkan eksekusi normal suatu progam
diinterupsi oleh sinyal eksternal yang berasal dari perangkat keras atau
oleh instruksi khusus dalam program. Bila suatu uP diinterupsi, uP akan
menghentikan eksekusi program saat itu dan memanggil suatu prosedur
yang melayani interupsi tersebut. Setelah prosedur yang melayani

Minimum sistem 8088

36

interupsi tadi selesai dikerjakan, biasanya uP akan melanjutkan program


yang terhenti itu.
Prosesor 8088 memiliki 3 sumber interupsi.
Nonmaskable interrupt (NMI),
(INTR).

atau pada pin interrupt

Interupsi yang disebabkan adanya sinyal pada pin

NMI atau INTR disebut hardware interrupt.


Instruksi INT. Interupsi ini masuk dalam software interrupt.
Kondisi karena eksekusi sebuah instruksi seperti instruksi
divide by zero. Interupsi ini disebut dengan conditional
interrupt tetapi termasuk dalam software interrupt.

Bila uP 8088 diinterupsi saat sedang mengeksekusi program, uP tersebut


akan melakukan hal-hal sebagai berikut:
program utama
.
pushflags
clear IF
clear TF
push CS
push IP
fetch ISR addr

Minimum sistem 8088

37

interrupt service procedure


push regs
.
.
pop regs
IRET
pop IP
pop CS
popflags
melanjutkan eksekusi program utama

Pada uP 8088, 1 Kbyte pertama di peta memori 0000H - 003FFH


digunakan sebagai tabel tempat penyimpanan alamat-alamat awal prosedur
yang bersesuaian dengan suatu tipe interupsi. Alamat awal prosedur
pelayanan interupsi yang disimpan di tabel ini disebut vektor interupsi
dan tabel ini disebut tabel vektor interupsi. Karena untuk setiap alamat
diperlukan 4 byte yang terdiri dari :
2 byte segment untuk register CS
2 byte offset untuk register IP
Tabel ini bisa menampung alamat awal dari 256 prosedur pelayanan
interupsi.

Dengan demikian vektor interupsi 0 H ada di alamat

0000:0000H, vektor interupsi 1H ada di alamat 0000:0004H dan


seterusnya.

Minimum sistem 8088

38

Interupsi tipe 0H - 1FH digunakan untuk kondisi khusus yang


berhubungan dengan hardware, sedang inerupsi 20H - FFH tersedia untuk
kita pakai, baik sebagai hardware interrupt maupun software interrupt.
Jika uP 8088 mendapat interupsi, secara otomatis ia akan
mengeksekusi instruksi yang berada pada alamat yang ditunjuk oleh vektor
interupsi yang bersangkutan. Meskipun begitu 8088 tidak akan memuat
vektor interupsi tersebut secara otomatis ke dalam tabel, melainkan tabel
vektor interupsi tersebut harus diinisialisasi dengan vektor interupsi (diisi
dengan alamat prosedur pelayanan interupsi) pada bagian awal program.
Karena uP 8088 hanya mempunyai 2 pin input interupsi yaitu NMI dan
INTR, masalah akan timbul jika ternyata sumber interupsi menjadi banyak
(lebih dari 2). Untuk mengatur datangnya interupsi ke uP 8088 yang
mungkin berasal dari banyak sumber sekaligus digunakan PIC 8259.
Jika 2 atau lebih interupsi terjadi secara bersamaan, maka uP akan
melayani interupsi dengan level interupsi tertinggi lebih dulu, baru
kemudian interupsi dengan level lebih rendah (berdasarkan prioritas).
Tabel di bawah ini menunjukkan urutan prioritas interupsi 8088 :

INTERUPSI
divide error
INT n, INT0
NMI
INTR
single step

PRIORITAS
tertinggi

terendah

Interupsi hardware berasal dari sinyal yang masuk lewat pin INTR
(untuk maskable interrupt, interupsi yang akan diabaikan uP jika bit 1

Minimum sistem 8088

39

pada flag prosesor = 0) dan NMI (untuk non maskable interrupt, instruksi
yang tidak akan diabaikan uP).

Ada 3 sumber yang mungkin untuk NMI yaitu :


kesalahan parity baseboard RAM,
permintaan interupsi auxialliarly prosesor socket (dari coprosesor 8087),
permintaan pemeriksaan saluran I/O.
Karena NMI tidak di-mask di dalam uP 8088, logika di baseboard
menggunakan sebuah bit port register I/O untuk me-mask dan mengunmask NMI. Untuk port maskable interrupt, digunakan pengontrol
interupsi 8259.
PIC 8259 memperluas port menjadi 8 level permintaan interupsi
dengan prioritas. Jadi pada IBM-PC ada 9 interrupt hardware sebagai
berikut :

INTERUPSI
NMI
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7

LEVEL
tertinggi

terendah

Data bus pada PIC memungkinkan uP mengirimkan control word


ke PIC dan membaca status word dari PIC. Pin input RD dan WR
Minimum sistem 8088

40

mengatur transfer data di sini jika PIC diaktifkan dengan membuat pin CS
0. Data bus ini juga memungkinkan PIC mengirimkan interupsi ke uP.

5.2. PIC 8259


PIC berfungsi mengatur seluruh sistem interrupt driven. PIC
menerima permintaan dari peripheral dan menentukan prioritas mana yang
tertinggi. PIC 8259 terdiri dari 8 pin input interrupt request dan dapat di
paralel sampai 64 permintaan interupsi.
Cara kerja dari interupsi sistem 8088 jika interrupt flag nya set dan pin
INTR menerima sinyal HIGH adalah sbb:

1. Push flag-flag ke stack, clear TF dan IF


2. Push address untuk kembali ke stack
3. Data bus dijadikan mode input
4. Mengirimkan pulsa INTA 2 kali
5. Tipe interupsi dari eksternal device di kali 4 untuk memperoleh
address pada interrupt.
Dari address nomer 5 dan 3 berikutnya, diperoleh CS dan IP untuk
memulai prosedur interupsi.

Minimum sistem 8088

41

-INTA

D0-D7

RD
WR
A0
A1

DATA
BUFFER

CONTROL LOGIC
OUT0

READ/WRITE
LOGIC

CS
ISR
CAS0
CAS1
CAS2

INT

CASCADE
BUFFER
COMPARATOR

PRIO
RITY
RES
OLV
ER

IR0
IRR
OUT2

IR7
INTERRUPT MASK REG
MR

SP/-EN

gambar 5.1 Diagram blok PIC

gambar 5.2. PIC 8259

Minimum sistem 8088

42

Dari blok diagram 8259, ada blok-blok ISR,IRR,IMR dan priority


resolver.
IRR

: menampung kondisi-kondisi input

IMR

: meng-enable input register (mask = 1 = disable)

ISR

: menjaga input yang sedang dikerjakan

Priority resolver

: menentukan prioritas input

5.3. Inisialisasi 8259


Command word dari 8259 ada 2, yaitu:
1. Initialitation Command Word (ICW) yang berfungsi untuk
menentukan titik start.
2. Operation Command Word (OCW) yang berfungsi untuk
menentukan mode operasi interupsi.
Mode OCW adalah :
a) Fully Nested Loop
Mode ini disediakan oleh PIC dan prioritasnya
tertinggi adalah IR0 dan terendah IR7. Dalam semua
mode, bit IS yang berhubungan harus direset untuk
membolehkan prioritas yang lebih rendah dapat
diketahui dengan cara non specifik EOI
b) Special Fully Nested Loop
Mode ini seperti fully nested loop, tetapi diperluas
pemakaiannya untuk sistem kaskade

Minimum sistem 8088

43

c) Non Specifik Rotating Mode


Mode ini ditujukan untuk sistem yang mempunyai
prioritas yang sama. Saat EOI ditulis, bit IS yang
sesuai menjadi reset dan menuju ke prioritas yang
lebih rendah
d) Specifik Rotating Mode
Prioritas dalam mode ini dapat diputar dan EOI
menunjukkan bit IS yang reset dan menjadi prioritas
terendah
e) Special Mask Mode
Pada mode ini interrupt-interrupt dapat diterima
kecuali yang sedang dikerjakan
f) Polled Mode
Pada mode ini output INT dari PIC dihindari dan
komponen digunakan sebagai prioritas poller.

Langkah-langkah yang harus ditempuh dalam inisialisasi:


1. Menentukan base address pada memory mapping 8088
2. Menentukan internal address dari peralatan
3. Dijumlahkan untuk memperoleh address di memory map
4. Mengirim Control Word yang terdiri dari 2 set yaitu ICW dan
OCW

Control word yang digambarkan pada flow diagram berikut:

Minimum sistem 8088

44

ICW1

IS ICW
NEEDED

ICW2
ICW4

NO

IN CASCADE
MODE

YES

READY TO
ACCEPT
INTERRUPT
REQUEST

ICW3

Sesuai flowchart,
ICW1 dan ICW2 harus dikirimkan.
Karena kita menggunakan sistem 8086/8088, ICW4 juga dikirimkan.
Jika menggunakan kaskade PIC, maka ICW3 harus dikirimkan.

ICW2 digunakan untuk memberitahu 8259 tipe bilangan yang harus


dikirim ke 8086. Pada sistem 8086 yang beredar, tipe interrupt 0 - 31
disediakan untuk reserved dan dedicated, sehingga tipe 32 (desimal)
adalah yang paling rendah. Jika kita mengirim ICW2 32 desimal atau
00100000B, maka 8259 mengirim bilangan ini ke 8086 sebagai jawaban
dari pin interrupt IR0.
OCW1 harus dikirim untuk meng-enable beberapa input IR yang kita
inginkan untuk operasi.

Minimum sistem 8088

45

OCW2 digunakan untuk mereset ISR. Jika di-reset, maka ia akan


menjalankan interrupt yang lebih rendah.
Jika diinginkan rotasi dari prioritas maka digunakan OCW3.

Initialization Control Word (ICW)


ICW digunakan untuk menyiapkan piranti ini agar menerima satu interrupt
request atau lebih. ICW terdiri dari 4 jenis, yaitu ICW1 sampai ICW4.

ICW 1 memiliki format sebagai berikut :


A0
0

D7
A7

D6
A6

D5
A5

D4
1

D3
LTIM

D2
ADI

D1
SNGL

D0
IC4

ICW 1 terdiri atas 8 bit, dari D7 - D0.


Bit A0 menandakan alamat internal tujuan pengiriman ICW1 ini yaitu 0
D7-D5 hanya akan digunakan pada sistem yang menggunakan uP 8085
sehingga bila memakai 8088 bit ini bebas.
D4 harus 1
D3 menentukan mode trigger PIC. Jika 1 berarti PIC akan memiliki
mode trigger level (level triggered mode) yaitu interupsi akan dilayani
bila IRQ# berlogika 1. Jika 0 PIC akan memiliki mode trigger sisi
(edge triggered mode) yaitu interupsi akan dilayani bila IRQ# berubah
dari logika 0 ke 1. Lebih baik digunakan pada mode trigger sisi karena
lebih aman sehingga D3 berlogika 0.
D2 adalah Call Address Interrupt, tetapi dalam uP8088 tidak
digunakan sehingga diberi logika 0

Minimum sistem 8088

46

D1 berlogika 1 berarti PIC bekerja sendirian (single) yaitu menerima 8


input dan mengeluarkan sebuah sinyal permintaan interupsi ke uP. Bila
D1 berlogika 0 berarti PIC beroperasi kaskade.
D0 diperlukan untuk menentukan perlunya ICW4 dalam inisialisasi
menggunakan 8088 sehingga D0 diberi logika 1.

Dari penjelasan di atas maka ICW 1 untuk PIC 8259 adalah 00010011b
atau 13H. Data ini dikirim ke address terminal A0 = 0.

ICW 2 memiliki format sebagai berikut :


A0
1

D7
T7

D6
T6

D5
T5

D4
T4

D3
T3

D2
T2

D1
T1

D0
T0

ICW2 berfungsi untuk memberitahukan PIC nomer tipe interupsi


yang harus dikirim ke uP jika diterima permintaan interupsi pada IRQ0.
Permintaan IRQ1 diberi nomer setelah nomer permintaan interupsi pada
IRQ0 tadi dan seterusnya.
ICW2 terdiri dari 8 bit D7 - D0 :
Bit D7 sampai D0 diisi data tipe interupsi IRQ0. Data ini harus dikirim ke
alamat internal A0 = 1. Berarti, pada PC data ICW2 adalah 00001000 atau
08H dan dikirim ke address 21H. Satu hal yang perlu diperhatikan dalam
perancangan sistem, pemilihan nomor tipe untuk ICW2 ini harus
sedemikian rupa sehingga 3 bit terakhir [yaitu T2-T0 ] berlogika 0. Pada
PC, bit-bit ini diberi logika 0.

Minimum sistem 8088

47

ICW3 hanya dipakai jika PIC 8259 beroperasi dalam mode


kaskada [perluasan]. ICW3 harus dikirim ke semua PIC yang ada baik
yang berfungsi sebagai master maupun yang berfungsi sebagai slave.
Karena PC hanya menggunakan PIC dalam operasi single, ICW3 ini tidak
digunakan .
ICW4 harus kita kirimkan ke PIC, karena pada bit terakhir ICW1
telah kita beritahukan pada PIC bahwa ICW4 ini diperlukan karena PIC
8259 ini bekerja dalam sistem yang berhubungan dengan mikroprosesor
8088, dan tidak berhubungan dengan PIC master.

ICW 4 memiliki format sebagai berikut :


A0
1

D7
0

D6
0

D5
0

D4
SFNM

D3
BUF

D2
M/S

D1
AEOI

D0
uPM

Bit D7 - D5 pada ICW4 PC diberi logika 0.


Bit D4 diberi logika 0 yang berarti hanya satu PIC. Jika D4 berlogika
1 menandakan adanya lebih dari 1 PIC (sistem kaskada).
Bit D3 dan D2 digunakan untuk menentukan apakah PIC yang sedang
diinisialisasi adalah PIC master atau slave dalam sistem kaskada.
Dalam operasi single, kedua bit ini harus diberi logika 0 0.
Bit D1 menentukan mode End Of Interrupt (EOI) dari PIC ini. Jika bit
ini diberi logika 1, PIC memiliki mode EOI yang otomatis (AutoEOI).
Pada mode EOI ini, suatu pekerjaan yang sedang memenuhi
permintaan suatu interupsi dapat diinterupsi oleh interupsi lain yang
prioritasnya lebih rendah. Pada PC, hal ini tidak diinginkan, sehingga
dipilih mode EOI normal, yang berarti bit D1 ini diberi logika 0.

Minimum sistem 8088

48

Bit D0 ICW4 yang diberi logika 1 memberitahukan bahwa PIC bekerja


dalam sistem yang menggunakan mikroprosesor 8086/8088. Jika bit ini
dibuat berlogika 0, berarti PIC bekerja dalam sistem dengan
mikroprosesor 8085. Kesimpulan pembahasan di atas adalah ICW4 PC
berisi data 00000001=1h, dan dikirim ke address 21h.

Dari ICW di atas, maka sebelum PIC 8259 siap digunakan untuk menerima
masukan IRQ, ia harus diinisialisasi dengan program sebagai berikut:
mov dx,20H
mov al,13H
out dx,al

; mengirim ICW1

mov dx,21H
mov al,08H
out dx,al

: mengirim ICW2

mov al, 1H
out dx,al

;mengirim ICW4

Operational Control Word (OCW)


OCW terdiri atas 3 jenis yaitu OCW1 sampai 3. OCW1 berfungsi untuk
mengatur data yang disimpan dalam IMR (interrupt Mask Register) atau
berfungsi menentukan IRQ# yang akan kita mask (disable) dan unmask
(enable).
OCW 1 memiliki format sebagai berikut :
A0
1

D7
M7

D6
M6

Minimum sistem 8088

D5
M5

D4
M4

D3
M3

D2
M2

D1
M1

D0
M0

49

Bit D7 - D0 mewakili setiap masukan IRQ. D7 mewakili IRQ7 dan


seterusnya sampai D0 mewakili IRQ0. Data ini harus dikirim ke
address internal A0 = 1.
Setiap bit berlogika 0 supaya IRQ bersangkutan dalam kondisi mask
reset (enable) dan bila berlogika 0 maka kondisinya mask set (disable).

Pada PC, OCW 1 bernilai 10111100, berarti IRQ yang aktif adalah IRQ6
(timer), IRQ1 (keyboard) dan IRQ0 (disk drive).

OCW2 pada umumnya digunakan untuk mereset salah satu bit dalam ISR
yang berhubungan dengan IRQ# yang sedang dilayani permintaannya saat
itu.
mov dx,20H
mov al,20H
out dx,al

; mengirim ICW1

Perintah di atas berarti mengisi OCW2 dengan data 20H dan dikirim ke
address 20H (00100000). Bit D5 berlogika 1 menandakan non specific
EOI Command yang bertujuan agar setelah suatu permintaan interupsi dari
IRQ# selesai dikerjakan, permintaan interupsi yang lain yang lebih rendah
dapat dilayani.

Minimum sistem 8088

50

5.4. Contoh inisialisai dengan minimum sistem 8088


PICA
PICB
ICW1
ICW2
ICW4
OCW1

equ 08h
equ 09h
equ 00010011b ;8088,edge,;single,ICW4
equ 00001000b
equ 00000001b ;single, normal
equ 00000000b ;semua diaktifkan

lea bx, prosedure_1


mov es:[20h],bx
mov es:[22h],cs

; IR0

lea bx, prosedure_2


mov es:[24h],bx
mov es:[26h],cs

; IR1

lea bx, prosedure_3


mov es:[28h],bx
mov es:[2Ah],cs

; IR2

lea bx, prosedure_4


mov es:[2Ch],bx
mov es:[2Eh],cs

; IR3

lea bx, prosedure_5


mov es:[30h],bx
mov es:[32h],cs
lea bx, prosedure_6
mov es:[34h],bx
mov es:[36h],cs
lea bx, prosedure_7
mov es:[38h],bx
mov es:[3Ah],cs

Minimum sistem 8088

; IR4

; IR5

; IR6

51

lea bx, prosedure_8


mov es:[3Ch],bx
mov es:[3Eh],cs

; IR7

mov al,ICW1
mov dx,PICA
out dx,al

;A0=0

mov al,ICW2
mov dx,PICB
out dx,al

;A0=1

mov al, ICW4


out dx,al

;A0=1

mov al,OCW1
out dx,al

;A0=1

Minimum sistem 8088

52