Labels

Rabu, 08 Januari 2014

PRAKTEK 7 _ INTERRUPT


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.


Program1.1:
Ketiklah program berikut ini, assemble, download ke DT-51 MinSys, dan amati
hasilnya:






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 keypadIS1” 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