1. TUJUAN PRAKTIKUM
Praktikan mampu membuat program dengan memanfaatkan
fasilitas interupsi
yang tersedia
pada mikrokontroler
2. DASAR
TEORI
Dalam menggunakan interupsi, ada
beberapa
register yang
dimanfaatkan
untuk pengaturan jalannya interupsi. Penjelasan
singkatnya adalah sebagai berikut:
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.PROSEDURPERCOBAAN
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.
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.
Kerjakan:
Buatlah program
untuk menampilkan LED
di Port A dengan
“IS1” yang
dihubungkan ke “INT0” pada DT-51 Trainer
Board dengan syarat:
- Pada kondisi
awal, LED “Bit 7”, “Bit6”, “Bit
1”, dan “Bit
0” menyala.
- Interrupt trigger bersifat
falling edge.
- Jika terjadi
interrupt, LED “Bit 5”, “Bit
4”,
“Bit 3”, dan
“Bit 2” menyala sejenak.
- Setelah interrupt selesai, LED kembali pada kondisi awal.
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, #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
;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.
KERJAKAN:
Buatlah program untuk menampilkan LED
di Port A dengan
”IS1” yang
dihubungkan ke ”INT0” dan ”IS2”
dihubungkan ke ”INT1” pada DT-51 Trainer
Board dengan syarat :
- Program
utama
akan menampilkan
data ’0FFh’
bergantian
dengan
data
’00h’.
- Interrupt trigger bersifat falling edge dengan prioritas
INT0.
- Jika terjadi interrupt dari INT0, program akan menampilkan
data ’99h’ dan
’66h’ selama 3 detik. Setelah itu kembali
ke
program utama.
- Jika terjadi interrupt dari INT1, program
akan menampilkan data ’0AAh’ dan
’55h’ selama 3
detik. Setelah itu kembali ke program utama.
Catatan :
Gunakan
beberapa alamat
atau variabel untuk menyimpan data-data tersebut.
0 komentar:
Posting Komentar