Selasa, 07 Januari 2014

praktek 7 Interrupt Enebel dan Intrrupt Priority

IE(Interupt Enable)
Register ini terdiri dari 8 biat dan bit addressable, register ini digunakan untuk mengaktifkan register yang kita inginkan yang terdapat pada mikrokontroler.


IP(Interrupt Priority)
Register ini terdiri dari 8 bit dan bit addressable, register ini digunakan untuk memilih prioritas interupsi, interupsi dengan prioritas lebih tinggi akan dieksekusi terlebih dahulu jika terjadi 2 interupsi pada waktu yang sama.





3.PROSEDUR PERCOBAAN

Percobaan 1 : Penggunaan INT0 dengan Interrupt Enable
Persiapan:
~ Hubungkan Port 1 DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.
~ Hubungkan “CONTROL” DT-51 MinSys dengan “CONTROL” DT-51 Trainer Board (sebagai  sumber  tegangan  dan koneksi INT0/INT1) menggunakan kabel tipe X.
~ Hubungkan “IS1” dengan “INT0” pada DT-51 Trainer Board.
~ Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.
~ Hubungkan DT-51 MinSys dengan sumber tegangan.

Program1.1:
Ketiklah program berikut ini, assemble, download ke DT-51 MinSys, dan amati
hasilnya:
$mod51
   CSEG
   ORG 4000H 
   LJMP START 
   ORG 4003H 
   RL A
   MOV P1, A
   MOV R7, #04H
   LUPA : 
   MOV R6, #OFFH 
   LUPB : 
   MOV R5, #OFFH
   DJNZ R5 , $
   DJNZ R6 , LUPB
   DJNZ R7 , LUPA
   RETI

   ORG 4200H ;inisialisasi
   START : MOV SP, #30H
   MOV TCON , #01H 
   MOV A, #01H
   MOV P1, #01H 
   MOV IE, #81H SJMP $
   END

Catatan:
Untuk menggunakan INT0 dengan falling edge trigger(transisi dari high ke low), maka IT0 (TCON.0) berlogika ‘1’, sehingga TCON bernilai ‘00000001b’ atau ‘01h’.
Untuk mengaktifkan interrupt, maka EX0(IE.0) dan EA (IE.7) berlogika ‘1’ sehingga
IE bernilai ‘10000001b’ atau ‘81h’.
Perhatikan bahwa pada saat interrupt, program akan melompat ke alamat vektor 0003h, tetapi oleh DT-51 MinSys akan langsung dipindah ke alamat 4003h.

Percobaan 1.2: Penggunaan INT0 dan INT1 dengan Interrupt Priority
Persiapan:
~ Hubungkan Port 1 DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.
~ Hubungkan “CONTROL” DT-51 MinSys dengan “CONTROL” DT-51 Trainer Board ( sebagai sumber tegangan dan koneksi INT0/INT1 ) menggunakan kabel tipe X.
~ Hubungkan  “IS1”  dengan  “INT0”  dan  “IS2” dengan  “INT1”  pada  DT-51 Trainer Board.
~ Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.
~ Hubungkan DT-51 MinSys dengan sumber tegangan.


Program 1.3:
Ketiklah program berikut ini, assemble, download ke DT-51 MinSys, dan amati hasilnya:

$mod51
   CSEG
   ORG 4000H 
   LJMP START
   ORG 4003H 
   LJMP INTER0
   ORG 4013H 
   LJMP INTER1
   ORG 4100H

INTER0 : MOV  P1, #0H 
    SETB P1.0
    LCALL LDELAY 
    CLR P1.0
    RETI
INTER1 : MOV P1, #0H 
    SETB P1.7
    LCALL LDELAY 
    CLR P1.7
    RETI
    ORG 4200H 
LDELAY : PUSH 7
         PUSH 6
         PUSH 5
         MOV R7, #24H
LUPA : MOV R6, #0FFH 
LUPB : MOV R5, #0FFH
       DJNZ R5, $ 
       DJNZ R6, LUPB 
       DJNZ R7, LUPA 
       POP 5
       POP 6
       POP 7
       RET
SDELAY : PUSH 7
         PUSH 6
         PUSH 5
MOV R7, #04HLUP1: MOV R6, #0FFHLUP2: MOV R5, #0FFHDJNS R5, $DJNS R6, LUP2DJNS R7, LUP1POP5POP6POP7RET
:INISIALISASI
START: MOV SP,#30H
MOV TCON, #05H
MOV IP, #04H
MOV IE,#85H 
END

Jika tidak ada kesalahan, program tersebut akan menampilkan nyala LED yang bergantian antara nyala LED ”Bit 6”, ”Bit 4”, ”Bit 2”, dan ”Bit 0” dengan nyala LED ”Bit 7”,”Bit 5”, ”Bit 3”, dan ”Bit 1”. Setiap kali ada penekanan keypad ”IS1”, hanya LED ”Bit 0” yang akan menyala. Setiap kali ada penekanan keypad ”IS2”, hanya LED ”Bit 7” yang akan menyala.

Catatan:
Untuk menggunakan INT0 dan INT1 dengan falling edge trigger (transisi dari high ke low), maka IT1 (TCON.2) dan IT0 (TCON.0) berlogika ’1’, sehingga TCON bernilai ’00000101b’ atau ’05h’.


Untuk memindah INT1 ke tingkat prioritas lebih tinggi, maka PX1 (IP.2) berlogika ’1’, sehingga IP bernilai ’00000100b’ atau ’04h’.


Untuk mengaktifkan INT0 dan INT1, maka EX0 (IE.0), EX1 (IE.2), dan EA (IE.7) berlogika ’1’, sehingga IE bernilai ’10000101b’ atau ’85h’.

Rutin interrupt pada alamat vektor 4003h dan 4013h dipindah ke alamat lain dengan perintah LJMP.
Hal ini dilakukan agar rutin dapat lebih panjang tanpa khawatir menerjang alamat vektor berikutnya.

Perhatikan bahwa penekanan keypad ”IS2” dapat menginterupsi rutin dari penekanan keypad ”IS1” tetapi tidak dapat sebaliknya. Hal ini dikarenakan INT1 berada pada tingkat prioritas lebih tinggi. Jadi jika keypad ”IS1” ditekan setelah keypad ”IS2” ditekan, LED ”Bit 7” akan menyala hingga delay selesai dieksekusi baru kemudian LED ”Bit 0” akan menyala.


Perhatikan  bahwa  SDELAY  menggunakan  alamat yang sama dengan LDELAY.
Untuk menghindari kekacauan nilai, maka diperlukan PUSH dan POP.


Tidak ada komentar:

Posting Komentar