Kamis, 02 Januari 2014

Interrupt

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

Tidak ada komentar:

Posting Komentar