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.
PROSEDUR PERCOBAAN
-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.
-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, #04H
LUP1:
MOV R6, #0FFH
LUP2:
MOV R5, #0FFH
DJNZ R5, $
DJNZ R6, LUP2
DJNZ R7, LUP1
POP 5
POP 6
POP 7
RET
;inisialisasi
START:
MOV SP, #30H
MOV TCON, #05H
MOV IP, #04H
MOV IE, #85H
;program
utama
LOOP1:
MOV P1, #01010101B
ACALL SDELAY
MOV P1, #10101010B
ACALL SDELAY
SJMP LOOP1
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