[Bab 12] Interupsi
-
Upload
nur-alifah-apriliany -
Category
Documents
-
view
68 -
download
6
description
Transcript of [Bab 12] Interupsi
-
189
Bab 8 Interupsi
12.1 PENGERTIAN
Interupsi dalam bahasa indonesia arti secara harfiah sama dengan menyela. Menyela
adalah keadaan dimana dalam suatu proses atau kegiatan menjadi terhenti karena suatu
alasan mendesak. Secara singkat interupsi itu menghentikan sementara proses atau kegiatan
yang sedang berlanjut dan beralih ke perintah yang diinterupsikan karena dirasa lebih
penting.
Arti secara tekni, interupsi atau interrupt adalah suatu permintaan atau suatu keadaan
dimana mikroprosesor diminta untuk menjalankan sesuatu. Perintah yang diinterupsikan
berupa program yang telah dirancang sesuai subrutin yang diperlukan. Atau dengan kata lain
mikroprosesor akan menghentikan dahulu apa yang sedang dikerjakan dan melakukan apa
yang diminta oleh apa yang interusikan, setelah selesai dieksekusi kemudian mikroprosesor
kembali ke tugas utama untuk dilanjutkan. Berikut merupakan bagan interupsi berdasarkan
jenisnya.
INTERRUPT DEVICES
Software
Interrupt
Maskable Interrupt
NonMaskable interrupt
Hardware Interrupt
INTERUPSI
-
190
Bab 8 Interupsi
1) Software Interrupt
Software interrupt adalah interupsi yang diaktifkan atau dijalankan oleh instruksi
pada program. Interupsi yang termasuk dalam software interrupt yaitu diantaranya : RST 1,
RST 2, RST 3, RST 4, RST 5, RST 7, RST 0.
2) Hardware Interrupt
Interupsi ini terjadi karena adanya aksi secara langsung yang diterima oleh suatu
perangkat keras baik berupa penekanan atau pergerakan. Interupsi ini berkaitan dengan pin-
pin (tempat memberikan interupsi berupa sinyal listrik). Misalnya tombol reset. Interupsi
yang termasuk diantaranya : INTR, RST 7.5, RST 6.5, RST 5.5, TRAP (RST 4.5)
Setiap interupsi memiliki alamat vector masing-masing. Penentuan alamat vector bisa
dicari dengan rumus :
Ket : n = nilai dari interupsi itu sendiri
Menentukan alamat interupsi dari interupsi RST 6.5
Vector addres = 8 x 6.5
= 52 (dalam desimal)
= 34 (dalam hexadesimal)
Mentukan alamat memory dari interupsi RST 7.5 (interupsi ini adalah interupsi
yang paling sering digunakan).
Vector address = 8 x 7.5
= 60 (dalam desimal)
= 3C (dalam hexadesimal)
a. Maskable Interrupt
Interupsi yang pelaksanaannya dapat dihalangi oleh perintah DI. Yang termasuk
kedalam Maskable : INTR , RST 7.5, RST 6.5, RST 5.5
Name Priority Address branched Type trigger
RST 7.5 2 3CH Rising edge (latched)
RST 6.5 3 34H High level until sampled
RST 5.5 4 2CH High level until sampled INTR 5 NOTE 2 High level until sampled
Contoh
Vector Adress = 8 x n
-
191
Bab 8 Interupsi
b. NonMaskable Interrupt
Interupsi yang pelaksanaannya tidak dapat dicegah oleh perintah DI dan EI karena
interupsi ini merupakan interupsi dengan prioritas paling tinggi. Dengan kata lain apapun
program yang sedang berjalan akan terhenti jika ada interupsi ini. Yang termasuk kedalam
interupsi ini adalah TRAP (RST 4.5) atau Reset.
12.1 INSTRUKSI INSTRUKSI INTERRUPT
1) DI (Disable Interrupt)
Menghalangi dan menggagalkan interupsi-interupsi yang dapat dihalangi.
2) EI (Enable Interrupt)
Menjalankan atau mengaktifkan interupsi
3) SIM (Set Maskable Mask)
Instruksi SIM adalah instruksi serba guna. Intruksi SIM digunakan untuk :
- Masking/unmasking dari RST 7.5, RST 6.5 dan RST 5.5
- Reset RST 7.5
- Melakukan serial output data
Cara mikroprosesor 8085 tahu interupsi mana yang di mask atau tidak di mask adalah
dengan mengetahui isi dari akumulator menentukan tindakan yang harus dilakukan.
Maka yang harus dilakukan terlebih dahulu adalah mengisi accumulator dengan data
tertentu, sebelum instruksi SIM di eksekusi. Seperti pada kolom berikut :
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
SOD SDE - R 7.5 MSE RST 7.5 RST 6.5 RST 5.5
Semua bit, kecuali bit 5 dari akumulator menentukan efek pengeksekusian dari
insturksi SIM. Hanya 4 bit pertama dari akumlator yang digunakan untuk interupsi masking
atau unmasking.
Bit 3 : MSE (mask set enable) bit. Jika berlogik 0 maka instruksi SIM tidak
digunakan untuk interupsi masking atau unmasking. Jika berlogik 1 maka
instruksi SIM digunakan untuk interupsi masking atau unmasking.
Penghalang
Pengaktif interupsi Reset RST 7.5
Serial data I/O
-
192
Bab 8 Interupsi
Bit 0, 1 & 2 : Instuksi ini akan berarti jika MSE berlogik 1. Jika intruksi ini
berlogik 0 berarti terbuka (tidak terhalang). Jika berlogik 1 berarti tertutup
(terhalang).
4) RIM (Read Interrupt Mask)
Instruksi untuk membaca status dari interupsi. Intruksi ini akan memberi nilai
akumulator dengan nilai status dari interupsi. Secara umum RIM terbagi atas 8 bit yang
terbagi menjadi 4 kelompok, yaitu :
a. Mask Interrupt (bit 0, 1 dan 2), bernilai 1 untuk menghalangi interupsi
b. Interrupt Enable Flag (bit 3), bernilai 1 untuk mengaktifkan interupsi
c. Pending Interrupts (bit 4, 5, 6), berlogik 1 bila sedang menunggu
d. Serial Data Input (bit 7)
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
SDI RST
7.5
RST
6.5
RST
5.5 IE RST 7.5 RST 6.5 RST 5.5
Mengaktifkan RST 5.5
Untuk mengaktifkan RST 5.5 maka, bit 0 diberi logik 0 sedangkan bit 1, 2 diberi logik
1 (dihalangi), Sehingga logic yang diberika kepada akumulator adalah 00011110b
MOV A, 1E
SIM
Mengaktifkan RST 6.5
Untuk mengaktifkan RST 6.5 maka, bit 0 diberi logik 0 sedangkan bit 1, 2 diberi logik
1 (dihalangi), Sehingga logic yang diberika kepada akumulator adalah 00011101b
MOV A, 1D
SIM
Mengaktifkan RST 7.5
Untuk mengaktifkan RST 7.5 maka, bit 0 diberi logik 0 sedangkan bit 1, 2 diberi logik
1 (dihalangi), Sehingga logic yang diberika kepada akumulator adalah 00011011b
MOV A, 1B
SIM
Contoh
Penghalang Pengaktif interupsi Pending Interrupt
Serial data input
-
193
Bab 8 Interupsi
Menghalangi semua interupsi
Untuk menghalangi semua interupsi maka, bit 0, 1, dan 2 diberi logik 1Sehingga logic
yang diberika kepada akumulator adalah 00011111b
MOV A, 1F
SIM
1. Buat program untuk decimal up/down counter modulus 10 yang mode kerjanya
dikendalikan melalui tombol interupsi RST 7.5. Pergunakan LED sebagai unit peraga
output.
Penyelesaian :
Bagi tugas program menjadi dua bagian :
a. Main program
b. Progam interupsi
Flowchart
Utama Interupsi
START
A!1BSIM
B ! 00EI
A ! 00
DI
PORT 50 ! ADE ! 3E8CALL FFA
EI
C!AA!B
A!A 01
Z=0
A ! CA !A - 1
S=0
A!CA !A + 1
A : 0A
Z=0
A!09
Y
N
Y
N
Y
N
SP!FFFF
Contoh Soal
INTERRUPT
B!B+1
RET
-
194
Bab 8 Interupsi
Mnemonic program
Utama Interupsi
Mnemonics
LXI SP, FFFF
MVI A, 1B
SIM
MVI B, 00
EI
MVI A, 00
DI
OUT 50
LXI D, 3E8
CALL FFA
EI
MOV C, A
MOV A, B
ANI 01
JNZ
MOV A, C
ADC 01
JP
MVI A, 09
JMP
MOV A, C
ADI 01
CPI 0A
JNZ
JMP
Mnemonics
INR B
RET
Analisa Program Utama :
Agar mikroprosesor mengetahui interupsi mana yang di mask atau tidak di mask maka
pertama, akumulator diisi dengan 1B (dalam heksadesimal) yaitu kode untuk men-set
interupsi RST 7.5 dalam keadaan terbuka / mask. Intruksi SIM digunakan untuk masking
interupsi RST 7.5. Register B berperan sebagai penentu mode up/down counter, diisi 00.
Interupsi diaktifkan. Akumulator diisi 00. Interupsi dihalangi. Isi dari akumulator
dikirmkan ke port unit peraga LED. Register DE diisi 3E8 yaitu delay sebesar 1 detik.
Delay ditampilkan. Interupsi diakifkan lagi. Isi akumultor dipindahkan ke register C
karena akumulator akan dipakai untuk menguji aktif tidaknya tombol interupsi RST 7.5.
-
195
Bab 8 Interupsi
2. Buatlah flowchart dan program untuk menampilkan huruf H pada unit peraga 7
segmen, namun jika tombol reset ditekan akan muncil huruf S selama 5 detik. Posisi
7-segmen yang digunakan pada trainer midicom 8085 yaitu posisi paling kanan dari
sudut pandang trainer.
Penyelesaian :
Flowchart
Utama Interupsi
START
SP FFFF
A 1BSIM
EI
A 80PORT 42 A
A 76PORT 40 A
DI
DE C8CALL FFA
EI
Analisa Program Utama : (cont.)
Pengujiannya dengan cara register B yang berisi 0 dipindahkan ke akumulator lalu di-and
kan dengan 01 agar dapat diuji zeroflag nya, bernilai ganjil atau genap. Jika ganjil maka
akan dilanjutkan proses up counter, begitupun sebaliknya.
RST 7.5
DI
A 80PORT 42 A
A 6DPORT 40 A
DI
DE 7D0CALL FFA
EI
RET
-
196
Bab 8 Interupsi
3. Buat program untuk up down counter modulus 14 heksadesimal yang mode kerjanya
dikendalikan melalui tombol interupsi RST 7.5. Gunakan LED sebagai output.
Penyelesaian :
Flowchart program utama
A 1BSIM
B 00EI
A 00
DI
PORT 50 ADE 3E8CALL FFA
EI
C AA B
A A 01
Z=0
A CA A - 1
S=0
A CA A + 1
A : 0E
Z=0
A 0D
Y
T
Y
N
Y
N
START
SP!FFFF
4. Buat program untuk up counter modulus 14 heksadesimal yang tampilannya dapat
dipindah pindahkan dari LED ke monitor dan sebaliknya. Dikendalikan melalui
tombol interupsi RST 7.5.
Mnemonics LXI SP, FFFF MVI A, 1B SIM MVI B, 00 MVI A, 00 DI OUT 50 LXI D, 3E8 CALL FFA EI MOV C, A MOV A, B ANI 01 JNZ MOV A, C ADC 01 JP MVI A, 0D JMP MOV A, C ADI 01 CPI 0E JNZ JMP
Analisa Program Utama :
Sama halnya dengan nomor satu, hanya saja pada nomor counternya adalah bilangan
heksa decimal modulus 14. Sehingga pada saat melakukan counting up dibandingkan
dengan 0E sedangkan pada saat counting down akumulator diisi bilangan ke 14 yaitu 0D.
Instruksi dari interupsi yang digunakan juga sama dengan yang digunakan pada nomor
satu.
-
197
Bab 8 Interupsi
Penyelesaian :
Instruksi dari interupsi yang digunakan juga sama dengan yang digunakan pada
nomor satu.
Flowchart program utama
A 1BSIM
L 00B 00
EI
A BA A 01
Z=0
A LA A + 1
A : 0E
Z=0
Y
N
Y
N
A LA A + 30
A : 3A
DI
DE 3E8CALL FFA
EI
L 00
Z=0Y
N
A A + 7
C ACALL FEE
C 08CALL FEE
A LPORT 50 A
START
SP!FFFF
Mnemonics LXI SP, FFFF MVI A, 1B SIM MVI L, 00 MVI B, 00 EI MVI A, B ANI 01 JNZ MOV A, L ADI 30 CPI 3A JNZ ADI 07 MOV C, A CALL FEE MVI C, 08 CALL FEE DI LXI D, 3E8 CALL FFA EI MOV A, L ADI 01 CPI 0E JNZ MVI L, 00 MOV A, L OUT 50 JMP
Analisa Program Utama :
Proses up counting yang dilakukan adalah heksadesimal modulus 14 ( 0-0D ) selain itu,
unit peraga yang dipakai ada dua yaitu LED dan monitor. Untuk menampilkan up
counting pada monitor harus dikoreksi dulu menjadi kode ASCII yaitu dengan cara
ditambah 30, agar setelah mencapai counting 09 bilangan yang muncul adalah 0A dan
seterusnya maka ditambah 7 karena pada kode ASCII bilangan 0A adalah 40. Instruksi
dari interupsi yang digunakan juga sama dengan yang digunakan pada nomor sebelumnya.
-
198
Bab 8 Interupsi
5. Buat program untuk mencari nilai data terkecil/terbesar dari 10 data biner 8 bit tidak
bertanda yang tersimpan mulai alamat $9000. Tampilkan nilai data terbesar/terkecil
pada unit peraga LED. Gunakan tombol interupsi RST 7.5 sebagai tombol pemilih
mencari nilai terbesar/terkecil.
Penyelesaian :
Flowchart program utama
A 1BSIM
B 00EI
A BA A 01
Z=0Y
N
A MA : C
Cy=0Y
N
C A
L L - 01
HL 900AC M
L L - 1
A MA : C
Cy=1Y
N
C A
S=0Y
N
A DPORT 50 A
DI
DE 1F4CALL FFA
EI
START
SP!FFFF
Mnemonics
LXI SP, FFFF MVI A, 1B
SIM
MVI B, 00
EI
LXI H, 900A
MOV C, M
INR L
MOV A, B
ANI 01
JNZ
MOV A, M
CMP C
JNC
MOV C, A
INR L
JP
MOV A, D
OUT 50
DI
LXI D, 1F4
CALL FFA
EI
JMP
MOV A, M
CMP C
JC
MOV C, A
JMP
Mnemonics
Analisa Program Utama :
Pertama kita isi dulu data mulai dari alamat memori $9000-$900A. Akumulator diisi
dengan 1B (dalam heksadesimal) yaitu kode untuk men-set interupsi RST 7.5 dalam
keadaan terbuka / mask. Intruksi SIM digunakan untuk masking interupsi RST 7.5.
Register B berperan sebagai penentu tombol pemilih mencari nilai terbesar/terkecil, diisi
00. Interupsi diaktifkan. Kita akan menggunakan bantuan M, maka HL diisi dengan 900A.
M dipindahkan ke register C.
-
199
Bab 8 Interupsi
6. Buat program untuk menampilkan pada unit peraga 7 segmen satu dari lima kata
(RAJIN, TULUS, JUJUR, TAAT, SIAGA) secara bergantian dikendalikan melalui
tombol interupsi RST 7.5
Penyelesaian :
Instruksi interupsi yang digunakan sama dengan nomor satu.
Flowchart program utama
START
SP FFFFA 1B
SIM
HL A000DE D000
B 00EI
A BA A 01
Z=1Y
N
H H + 1A HA : B5
Z=0Y
N
H B0
STACK HL
A [DE]PORT 42 A
A MPORT 40 A
DI
STACK DEDE 0002CALL FFA
DE STACKB 00
EI
HL HL + 1E E + 1
A EA : 08
Z=0Y
N
DE D000HL STACK
X
1
1
X
Mnemonics Mnemonics LXI SP, FFFF INX H MVI A, 1B INR E SIM MOV A, E LXI H, A000 CPI 08 LXI D, D000 JNZ MVI B, 00 LXI D, D000 EI POP H MOV A, B JMP ANI 01 JZ... INR H MOV A, H CPI B5 JNZ MVI H, B0 PUSH H LDAX D OUT 42 MOV A, M OUT 40 DI PUSH D LXI D, 2 CALL FFA POP D MVI B, 00 EI
Analisa Program Utama : (cont.)
Register L dikurangi 1 untuk menunjuk data yang ada pada alamat memori selanjutnya.
Dilakukan pengujian tombol RST 7.5. Jika B bernilai ganjil maka dilanjutkan ke proses
pencarian nilai terkecil. Jika B bernilai genap maka dilanjutkan ke proses pencarian nilai
terbesar. Untuk kemudian ditampilkan ke unit peraga LED. Instruksi dari interupsi yang
digunakan juga sama dengan yang digunakan pada nomor satu.
-
200
Bab 8 Interupsi
Alamat Data Posisi digit
seven segmen
Alamat Data Posisi digit
seven segmen D000 50 D0 D004 D0 D4 D001 40 D1 D005 C0 D5 D002 10 D2 D006 90 D6 D003 00 D3 D007 80 D7
Alamat Data Karakter Alamat Data Karakter Alamat Data Karakter
B000 31 R B100 78 T B200 0F J B001 77 A B101 3E U B201 3E U B002 0F J B102 38 L B202 0F J B003 06 I B103 3E U B203 3E U B004 37 N B104 6D S B204 31 R B005 00 Tidak ada B105 00 Tidak ada B205 00 Tidak ada B006 00 Tidak ada B106 00 Tidak ada B206 00 Tidak ada B007 00 Tidak ada B107 00 Tidak ada B207 00 Tidak ada
Alamat Data Karakter Alamat Data Karakter
B300 78 T B400 6D S B301 77 A B401 06 I B302 77 A B402 77 A B303 78 T B403 3D G B304 00 Tidak ada B404 77 A B305 00 Tidak ada B405 00 Tidak ada B306 00 Tidak ada B406 00 Tidak ada B307 00 Tidak ada B407 00 Tidak ada
7. Buat program untuk menampilkan pada unit peraga seven segmen 1 dari 3 nama hari
(SENIN, SELASA, RABU) secara bergantian selama 3 detik. Pada saat kata SENIN
sedang di tampilkan, program tidak dapat di interupsi melalui tombol RST-7.5 dan
akan menampilkan kata GANGGU selama 1 detik. Ketika 2 kata lainnya di
tampilkan, program tidak dapat di interupsi.
.Penyelesaian :
Alamat Data Karakter Alamat Data Karakter Alamat Data Karakter A000 6D S A100 6D S A200 31 R A001 79 E A101 79 E A201 77 A A002 37 N A102 38 L A202 7C B A003 06 I A103 06 A A203 3E U A004 37 N A104 6D S A204 00 Tidak ada A005 00 Tidak ada A105 77 A A205 00 Tidak ada A006 00 Tidak ada A106 00 Tidak ada A206 00 Tidak ada A007 00 Tidak ada A107 00 Tidak ada A207 00 Tidak ada
-
201
Bab 8 Interupsi
Alamat Data Karakter Alamat Data Posisi digit seven segment AF00 3D G D000 50 D0 AF01 77 A D001 40 D1 AF02 7C N D002 10 D2 AF03 3D G D003 00 D3 AF04 3D G D004 D0 D4 AF05 3E U D005 C0 D5 AF06 00 Tidak ada D006 90 D6 AF07 00 Tidak ada D007 80 D7
Program utama Interupsi
START
SP FFFFA 1B
SIM
HL A000DE D000
EI
A [DE]PORT 42 A
A MPORT 40 A
DI
STACK DEDE 0002CALL FFA
DE STACKB 00
EI
L L + 1E E + 1
A EA : 08
Z=0Y
N
DE D000HL STACK
B B - 1
H H + 1A HA : A3
Z=0
Y
N
H A0
B B4
STACK HL
Z=0Y
N
A HA : A0
Z=1
DI EI
Y
T
INTERUPT
RET
A 1FSIM
HL AF00
A [DE]PORT 42 A
A MPORT 40 ASTACK DEDE 0002CALL FFA
DE STACKL L + 1E E + 1
A EA : 08
Z=0
Y
N
DE D000HL STACK
C C - 1
Z=0
Y
N
A 00PORT 40 A
STACK HL
C 3C