INTERUPSI/INTERRUPT
description
Transcript of INTERUPSI/INTERRUPT
1
INTERUPSI/INTERRUPT
Interupsi adalah suatu kejadian/peristiwa yang menyebabkan mikrokontroller berhenti sejenak untuk melayani interupsi tersebut dengan menjalankan program yang berada pada alamat yang ditunjuk oleh vektor/lokasi dari interupsi yang terjadi hingga selesai dan kembali meneruskan program yangterhenti oleh interupsi tadi.
2
Program yang dijalankan pada saat melayani interupsi disebut Interrupt Service Routine ( Rutin Layanan Interupsi )
3
Interupsi pada MCS-51 dibedakan dalam 2 jenis
1. Interupsi yang tidak dapat dihalangi oleh perangkat lunak ( Non Maskable Interrupt ) misal : RESET
2. Interupsi yang dapat dihalangi oleh perangkat lunak ( Maskable Interrupt ) misal : INT0 , INT1 , ( Eksternal )
T0 (Timer0) , T1 (Timer1) – Interupsi dari
port Serial ( Internal )
4
Prioritas interupsi pada kondisi standart
Prioritas Jenis Interupsi
1 Interupsi Eksternal 0
2 Interupsi Timer 0
3 Interupsi Eksternal 1
4 Interupsi Timer 1
5 Interupsi Serial
Interupsi yang mempunyai prioritas interupsi lebih tinggi, tidak dapat diinterupsi oleh interupsi yang mempunyai prioritas lebih rendah.
5
Pengaktif InterupsiPengaturan keaktifan interupsi dilakukan pada Register Interrupt Enable / Register IE (Register Pengaktif Interupsi) yang terletak di memory internal A8H
EA - - ES ET1 EX1 ET0 EX0
IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0
A8H
Ket.EA : Menonaktifkan semua interupsi jika bit ini clear
( berisi 0 ). Bila ada interupsi yang akan diaktifkan
maka bit ini harus set ( berisi 1 ) ES : Untuk interupsi port Serial, 1 = Aktif , 0 =
NonaktifET1 : Untuk interupsi T1 (Timer 1), 1 = Aktif , 0 =
Nonaktif
6
EX1 : Untuk interupsi Eksternal 1 ( INT1 ),1 = Aktif , 0 = Nonaktif
ET0 : Untuk interupsi T0 (Timer 0), 1 = Aktif , 0 = NonaktifEX0 : Untuk interupsi Eksternal 0 ( INT0 ) ,
1 = Aktif , 0 = Nonaktif
Prioritas interupsiPada aplikasi yang menggunakan lebih dari satu interupsi,dapat saja terjadi interupsi lain pada saat sebuah rutin interupsi sedang dijalankan.Untuk menentukan apakah sebuah interupsi dapat menginterupsi saat sebuah rutin interupsi lain sedang berjalan bergantung pada prioritas dari interupsi tersebut.
7
Prioritas interupsi standart tersebut dapat diubah dengan melakukan inisialisasi pada Register Interrupt Priority ( IP ) yang berada di alamat B8H
- - PT2 PS PT1 PX1 PT0 PX0 IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0
B8H
PT2 : Priority Timer 2 Interrupt, bit yang mengatur prioritas interupsi timer 2 ( untuk type AT89C52 )
PS : Priority Serial Interrupt, bit yang mengatur prioritas interupsi serial
PT1 : Priority Timer 1 Interrupt, bit yang mengatur prioritas interupsi timer 1
PX1 : Priority Eksternal 1 Interrupt, bit yang mengatur prioritas
interupsi eksternal 1PT0 : Priority Timer 0 Interrupt, bit yang mengatur prioritas
interupsi timer 0PX0 : Priority Eksternal 0 Interrupt, bit yang mengatur
prioritas interupsi eksternal 0
8
Timer Control Register ( TCON )Register TCON mempunyai 4 bit yg berhubungan langsung dengan Timer yaitu : TCON.4 , TCON.5 , TCON.6 , TCON.7Sedangkan 4 bit yang lain berhubungan dengan interrupt yaitu : TCON.3 , TCON.2 , TCON.1 , TCON.0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON.7 (TF1) : Timer 1 Overflag yang akan diset jika timer overflow
Bit ini dapat di-clear oleh software atau hardware.TCON.6 (TR1): 1 = Timer 1 Aktif
0 = Timer 1 NonaktifTCON.5 (TF0) : Timer 1 Overflag yang akan diset jika timer overflow
Bit ini dapat di-clear oleh software atau hardware.TCON.4 (TR0) : 1 = Timer 0 Aktif
0 = Timer 0 Nonaktif
88H
Dapat diakses secara bit ( bit addressable )
Register T I M E R Register Interrupt
9
Vektor/Lokasi InterupsiVektor/Lokasi interupsi adalah nilai yang disimpan ke program Counter (PC) pada saat terjadi interupsi sehingga program akan menuju ke alamat yang ditunjukkan oleh program counter (PC).
Vektor/Lokasi Interupsi
Interupsi Alamat LokasiSistem RESET 00HInterupsi Eksternal 0 03HInterupsi Timer 0 0BHInterupsi Eksternal 1 13HInterupsi Timer 1 1BHInterupsi Serial 23H
10
Masing-masing alamat lokasi interupsi mempunyai jarak yang berdekatan, sehingga apabila kedua interupsi yang jaraknya berdekatan tersebut akan difungsikan harus dilakukan triktrik program sebagai berikut:
ORG 00H INT_0: ……. LJMP START ……. ORG 03H ……. LJMP INT_0 ……. ORG 13H RETI LJMP INT_1 INT_1: ……. ORG 100H
…….START: ……. …….
Setb IE.7 RETI Setb IE.2 ……. Setb IE.1 END ……. ( RETI = Return Interrupt )
11
• Contoh program interruptorg 4000hsjmp startorg 4003hmov p1,#0ffhcall delaymov p1,#00hcall delayreti;org 4100hstart: mov tcon,#01hmov ie,#81hmov p1,#0aah
12
Delay: mov r5,#0ffhLoop1: mov r6,#0ffhLoop2: djnz r6,loop2
djnz r5,loop1ret
end