Post on 28-Jun-2019
LOGO
Oleh: Junartho Halomoan (juned_new@yahoo.com)
Mikroprosesor dan Antarmuka
InterruptJNT - I
TTELKOM
Definisi Interrupt [1]
Interupsi adalah upaya untukmengalihkan perhatian μP Intel 8088 dari program yg sedang dikerjakanuntuk memberikan pelayanan khususterlebih dahulu pada yang menginterupsinya.Contoh : Keyboard menginterupsikerja 8088 karena ada tuts keyboard yg ditekan. Data yg dihasilkan olehtuts tersebut harus diambil sesegeramungkin oleh μP Intel 8088.
JNT - I
TTELKOM
Definisi Interrupt [2]
Dilihat dari siapa yg menginterupsi, interupsi dapat dibedakan menjadi 2, yaitu :
1. Software generated : dihasilkandengan menggunakan instruksi INT
2. Hardware generated : dihasilkandengan mengaktifkan sinyal Interrupt pada pin 18 di μP Intel 8088 (active high)
JNT - I
TTELKOM
Definisi Interrupt [3]
Kedua jenis interupsi tersebut akanmenyebabkan μP Intel 8088 mengerjakan suatu routine (program kecil) khusus (Interrupt Service Routine/ ISR).
JNT - I
TTELKOM
Interrupt Vector Table
http://www.pelletiernet.com/helppc/int_table.html
JNT - I
TTELKOM
Software Generated [1]
Dihasilkan oleh instruksi INT yang diikuti nomor interupsinya. Contoh : INT 13 berarti interupsi nomor 13H.Tipe interupsi ini ada 2 jenis :
1. Interupsi yg dihasilkan oleh ROM BIOS (untuk nomor interupsi 0 s.d. nomor interupsi 1FH)
2. Interupsi yg dihasilkan oleh sistemoperasi yg digunakan (untuk nomor interupsi 20H keatas) DOS (disk operating system)
JNT - I
TTELKOM
Software Generated [2]
Adanya instruksi INT dalam program akan menyebabkan μP 8088 meninggalkan program yg sedangdikerjakan, dan mengerjakan routine khusus untuk nomor interupsitersebut. Setelah routine tersebutselesai dikerjakan, maka μP 8088 akankembali ke program semula yg tadinya ditinggalkan.JN
T - ITTELK
OM
Software Generated [3]
Urutan kerja μP 8088 saat mengerjakan instruksi INT XX (nilai XX dapat berharga 00H sampai FFH) :
1. Menyimpan isi register ke Stack2. Mencari alamat routine XX3. Lompat ke alamat routine tersebut4. Mengerjakan routine tersebut5. Kembali ke program semula dgn cara
mengembalikan semua isi register dari Stack
JNT - I
TTELKOM
Software Generated [4]
1. Menyimpan isi register ke StackLangkah ini ditujukan untukmengembalikan kembali isi register setelah routine XX selesai dijalankan.Yang dilakukan :
a. Push Flag,b. Clear Interrupt Flag,c. Clear Trap Flag,d. Push CS,e. Push IP
JNT - I
TTELKOM
Software Generated [5]
2. Mencari alamat routine XXSebelum dapat menjalankan routine XX, μP 8088 harus mencari terlebihdahulu dimana routine XX tersebutberada. Untuk mendapatkan alamatroutine tsb, μP 8088 akan mencarinyadi Interrupt Vector Table (IVT) yg adadi alamat 00000H sampai 003FFH (setiap nomor interupsi membutuhkan4 byte alamat yg disimpan oleh IVT : 2 byte untuk alamat Segment dan 2 byte untuk alamat Offset)
JNT - I
TTELKOM
Software Generated [6]
JNT - I
TTELKOM
Software Generated [7]
3. Lompat ke alamat routine XXMelompat ke instruksi awal dariroutine XX dgn melakukan lompatanJMP SSSS:OOOO dimana SSSS adalahalamat Segment dan OOOO adalahalamat Offset.
JNT - I
TTELKOM
Software Generated [8]
4. Mengerjakan routine XXμP 8088 akan mengerjakan semuainstruksi yg ada sampai ditemukaninstruksi IRET (Interrupt Return)
JNT - I
TTELKOM
Software Generated [9]
5. Kembali ke program semulaJika instruksi IRET dikerjakan, maka semua isi regiter yg tadi disimpan, akandikembalikan.
Yang dilakukan :a. Pop IP,b. Pop CS,c. Set Trap Flag,d. Set Interrupt Flag,e. Pop Flag
JNT - I
TTELKOM
Pemrograman Interrupt [1]
Ada beberapa instruksi interrupt antara lain: INT, INT3, BOUND, INTO, IRETINT n dimana menjalankan prosedur/ rutin interupsi pada alamat (4 byte) yang disimpan di vektor “n”Cara menghitung alamat vektor table: mis INT 5 5 x 4 = 20 (14h) makaalamat awal vektor interupsi 5 di00014h sampai 00017h (karena 4 byte)
JNT - I
TTELKOM
Pemrograman Interrupt [2]
BOUND merupakan instruksi interupsiyang membandingkan 2 buah operand antara sebuah register dan 2 buahword dari memori data. MisBOUND AX,DATA register AX dibandingkan isi DATA dan DATA+1 juga dengan DATA+2 dan DATA+3
Jika (isi register AX lebih kecil dari DATA dan DATA+1) atau (isi register AX lebihbesar dari DATA+2 dan DATA+3) makaBOUND akan menjalankan prosedur/rutinpada alamat (4 byte) yang disimpan di vektor“5”.
JNT - I
TTELKOM
Pemrograman Interrupt [3]
Jika isi register AX di antaranya, BOUND tidak akan terjadi apa- apa
INT3 merupakan instruksi interupsiyang digunakan menyimpanbreakpoint untuk debugging.INTO merupakan instruksi interupsiyang dijalankan dengan mengecek OF (overflow). Jika OF=1 maka INTO menjalankan prosedur/rutin padaalamat (4 byte) yang disimpan divektor “4”. Jika OF =0 maka INTO tidak akan terjadi apa- apa.
JNT - I
TTELKOM
Hardware Generated [1]
Adanya sinyal +5V pada pin 18 (INTR) pada 8088 akan menyebabkan 8088 meninggalkan program yg sedangdikerjakan, dan mengerjakan routine khusus untuk nomor interupsitersebut. Setelah routine tersebutselesai dikerjakan, maka 8088 akankembali ke program semula yg tadinyaditinggalkan.JN
T - ITTELK
OM
Hardware Generated [2]
Urutan kerja μP 8088 saatmendapatkan sinyal aktif pada pin 18 (INTR) :
1. Menyimpan isi register ke Stack2. Mengaktifkan sinyal INTA (Interrupt
Acknowledged) di pin 243. Membaca nomor interupsi di Address
Bus (A0 – A7)4. Mencari alamat routine untuk nomor
interupsi tersebut5. Lompat ke alamat routine tersebut
JNT - I
TTELKOM
Hardware Generated [3]
6. Mengerjakan routine tersebut7. Kembali ke program semula dgn cara
mengembalikan semua isi register dari Stack
JNT - I
TTELKOM
Hardware Generated [4]
1. Menyimpan isi register ke StackLangkah ini ditujukan untukmengembalikan kembali isi register setelah routine selesai dijalankan.Yang dilakukan :
a. Push Flag,b. Clear Interrupt Flag,c. Clear Trap Flag,d. Push CS,e. Push IP
JNT - I
TTELKOM
Hardware Generated [5]
2. Mengaktifkan sinyal INTALangkah ini ditujukan agar Interrupt Controller (ex: 8259) memberitahukan μP 8088 nomor interupsinya
JNT - I
TTELKOM
Hardware Generated [6]
3. Membaca nomor interupsiMembaca kondisi Address Bus AD0 –AD7 untuk mengetahui siapa ygmenginterupsinya
JNT - I
TTELKOM
Hardware Generated [7]
4. Mencari alamat routine yg sesuaiSebelum dapat menjalankan routine yg sesuai, μP 8088 harus mencariterlebih dahulu dimana routine tersebut berada.Untuk mendapatkan alamat routine tsb, μP 8088 akan mencarinya diInterrupt Vector Table yg sama dgntabel untuk Software Generated Interrupt.
JNT - I
TTELKOM
Hardware Generated [8]
5. Lompat ke alamat routine tersebutMelompat ke instruksi awal dariroutine dgn melakukan lompatan JMP SSSS:OOOO dimana SSSS adalahalamat Segment dan OOOO adalahalamat Offset
JNT - I
TTELKOM
Hardware Generated [9]
6. Mengerjakan routine tersebutμP 8088 akan mengerjakan semuainstruksi yg ada sampai ditemukaninstruksi IRET (Interrupt Return)
JNT - I
TTELKOM
Hardware Generated [10]
7. Kembali ke program semulaJika instruksi IRET dikerjakan, maka semua isi regiter yg tadi disimpan, akan dikembalikan.Yang dilakukan :
a. Pop IP,b. Pop CS,c. Set Trap Flag,d. Set Interrupt Flag,e. Pop Flag
JNT - I
TTELKOM
Hardware Generated [11]
JNT - I
TTELKOM
Hardware Generated [12]
JNT - I
TTELKOM
Hardware Generated [13]
Pada saat flag interrupt (IF) = 1 maka pin INTR bisa menginterupsi. Sebaliknya saatFlag interupt =0, INTR tidak bisamenginterupsi. Men-set IF denganinstruksi STI dan Men-clear IF denganinstruksi CLI Hardware interupt selain INTR juga adaNMI (non maskable interrupt) yang berarti interupsi yang tidak dapatdiinterupsi dan dapat menginterupsiprosedur interupsi yang sedang berjalan
JNT - I
TTELKOM
Hardware Generated [14]
NMI biasa digunakan untukmendeteksi ada power failure. Misal: suatu ketika tiba- tiba daya listrik keuP 8088 drop. Maka sinyal interupsimasuk ke pin 17 (NMI) untukmenjalankan interrupt tipe 2 dansemua data disimpan ke battery backed-up memory
JNT - I
TTELKOM
Antarmuka PIC 8259 [1]
Jika dibutuhkan interupsi H/W lebihdari satu maka sebuah komponenpengendali interupsi dibutuhkan danmengatur prioritas interupsi yang dijalankan. Komponen controller interrupt (PIC=Programmable Interrupt Controller) adalah 8259. Misal dibutuhkan 64 interupsi makadibutuhkan 1 IC master 8259 dan 8 buah IC master 8259
JNT - I
TTELKOM
Antarmuka PIC 8259 [2]
JNT - I
TTELKOM
Antarmuka PIC 8259 [3]
JNT - I
TTELKOM
Antarmuka PIC 8259 [4]
WR: Connects to a write strobe signal (one of 8 for the Pentium).RD: Connects to the IORC signal.INT: Connects to the INTR pin on the microprocessor.INTA: Connects to the INTA pin on the microprocessor.A0: Selects different command words in the 8259A.CS: Chip select - enables the 8259A for programming and control.
JNT - I
TTELKOM
Antarmuka PIC 8259 [5]
SP/EN: Slave Program (1 for master, 0 for slave)/Enable Buffer (controls the data bus transievers when in buffered mode).CAS2-CAS0: Used as outputs from the master to the slaves in cascaded systems.
JNT - I
TTELKOM
Antarmuka PIC 8259 [6]
JNT - I
TTELKOM
Antarmuka PIC 8259 [7]
1. Interrupt dari divais
2. PIC mengirim INT ke uP
3. INTA
4. Send Interrupt Type
JNT - I
TTELKOM
Antarmuka PIC 8259 [8]
Prioritas IRQ: 0,1,8,2,10,11,12,13,14,15,3,4,5,6,7
JNT - I
TTELKOM
Antarmuka PIC 8259 [9]
JNT - I
TTELKOM
Antarmuka PIC 8259 [10]
PIC diprogram oleh initialization (ICW) dan operation (OCW) command wordAda 4 register ICW. ICW1, ICW2, ICW3, ICW4
ICW1 jika dalam cascade mode makaICW3 harus digunakan
JNT - I
TTELKOM
Antarmuka PIC 8259 [11]
ICW2 digunakan untuk mensetvektor interrupt. Mis: vector interrupt = 08H s/d 0Fh (karena jumlah pin interrupt PIC hanya 8 buah) maka ICW2 diset 08H
JNT - I
TTELKOM
Antarmuka PIC 8259 [12]
ICW3 digunakan untuk apakah pin interrupt IC master 8259 memilikislave.
JNT - I
TTELKOM
Antarmuka PIC 8259 [13]
ICW4 digunakan untuk mode interrupt yang diprogram. Jika AEOI bernilai “1” maka OCW2 tidak perludiprogram. Sebaliknya jika bernilai “0” maka OCW2 perlu diprogram
JNT - I
TTELKOM
Antarmuka PIC 8259 [14]
OCW1 digunakan untuk men-mask suatu interrupt tertentu. Program aplikasi bisa memask interrupt tertentu, program aplikasi tidakingin diganggu oleh INT tertentu, misal : tidak ingin diganggu KYB, makainterrupt untuk keyboard di-mask
JNT - I
TTELKOM
Antarmuka PIC 8259 [15]
OCW2 digunakan untuk men-set prioritas interrupt. Ada 3 mode interrupt: fully nested, automatic rotation, specific
JNT - I
TTELKOM
Antarmuka PIC 8259 [16]
JNT - I
TTELKOM
Antarmuka PIC 8259 [17]
Ada 3 mode interrupt: fully nested, automatic rotation, specific.MODE FULLY NESTED:IR0 prioritas tertinggi, IR7 terendahmisal: IR5 di set prioritas paling tinggiRegister ICW4 bit SFNM di set “1” dan bit AEOI di set “0” Register OCW2 di set 01100101011 specific EOI command101 IR5 paling tinggi
JNT - I
TTELKOM
Antarmuka PIC 8259 [18]
Proses interrupt: pada saat IR4 sedang berjalan, kemudian IR5 danIR0 masuk. Maka IR4 ditunda dahuludan alamat prosedur IR4 diamankanke stack. Kemudian rutin IR5 dijalankan setelah IR5 selesai rutinIR0 dijalankan setelah IR0 selesaiIR4 dilanjutkan kembaliMODE AUTOMATIC ROTATION: IR yang sudah dilayani menjadi IR denganprioritas terendah
JNT - I
TTELKOM
Antarmuka PIC 8259 [19]
Misal:Register ICW4 bit SFNM di set “0” dan bit AEOI di set “0” Register OCW2 di set 10000xxx100 rotate on automatic EOI cmd.
start:IR0,IR1,IR2,IR3,IR4,IR5,IR6, IR7o IR 5 sesudah dijalankan menjadi:
IR0,IR1,IR2,IR3,IR4,IR6, IR7,IR5o IR 2 sesudah dijalankan menjadi
IR0,IR1,IR3,IR4,IR6, IR7,IR5,IR2JN
T - ITTELK
OM
Antarmuka PIC 8259 [20]
MODE SPECIFIC:101 IR5 paling rendahRegister ICW4 bit SFNM di set “0” dan bit AEOI di set “0” Register OCW2 di set 11000101100 set priority cmd.maka urutan priority:
start:IR0,IR1,IR2,IR3,IR4,IR6,IR7,IR5jika IR3 sedang berjalan, IR1 masuk. Maka IR1 harus menunggu sampai IR3 selesai
JNT - I
TTELKOM
Antarmuka PIC 8259 [20]
101 IR5 paling rendahRegister ICW4 bit SFNM di set “0” dan bit AEOI di set “0” Register OCW2 di set 11100101111 rotate on specific EOI cmd.maka urutan priority:
start:IR0,IR1,IR2,IR3,IR4,IR6,IR7,IR5o saat IR3 selesai dijalankan
IR0,IR1,IR2,IR4,IR6,IR7,IR5,IR3o saat IR2 selesai dijalankan
IR0,IR1,IR4,IR6,IR7,IR5,IR3,IR2
JNT - I
TTELKOM