[Bab 12] Interupsi

13
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

description

Interrupt

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