SISTEM INTERUPSI
PADA AT89C51
Sukarman, ST
Kepala Lab Sistem Kendali
Jurusan Teknofsika Prodi Elins
Sekolah Tinggi Teknologi Nuklir
Sistem Interupsi
‘Sistem Interupsi (Interrupt System)’
membahas tentang penyelaan
(interupsi) dari program yang sedang berjalan :
karena adanya permintaan pelayanan
interupsi baik dari luar maupun dari bagian-bagian di dalam sistem
Interupsi
Dibahas tentang sumber-sumber
interupsi baik dari dalam maupun di luar sistem,
struktur level prioritas interupsi, dan
proses yang terjadi jika terdapat suatu
permintaan interupsi (penanganan
Interupsi
Mengetahui sumber interupsi yang
terdapat dalam mikrokontroler Atmel AT89C51.
Mengetahui struktur level prioritas dalam
mikrokontroler.
Mengetahui proses penanganan interupsi
Int Vect 0 prioritas tinggi
Aktifkan sumber interupsi
Register IE (Interupt Enable) $A8- - PT2 PS PT1 PX1 PT0 PX0
Register IP (Interupt Priority) $B8
EA : Untuk menghidupkan (1) / mematikan (0) seluruh interupsi secara serentak ES : bit aktivasi interupsi Port serial
ET1 : bit aktivasi interupsi Timer 1 EX1 : bit aktivasi interupsi external 1 ET0 : bit aktivasi Timer 0
Sumber interupsi
MOV IP, #00010000b MOV IE, #10010000b
atau
MOV IP, #10h MOV IE, #90h
atau
SETB PS SETB ES SETB EA
EA - - ES ET1 EX1 ET0 EX0 - - PT2 PS PT1 PX1 PT0 PX0
komunikasi serial digunakan sebagai sumber
Sumber interupsi
Interupsi eksternal INT0 dan INT1
masing-masing dapat diaktifkan dengan aktivasi
transisi (0) maupun level (1), tergantung pada bit IT0 dan IT1 pada register TCON.
Flag yang mengakibatkan interupsi yang
sebenarnya adalah bit IE0 dan IE1 pada
TCON. Jika rutin pelayanan (service
routine) interupsi divektorkan, perangkat
keras menghapus flag sehingga interupsi
Sumber interupsi
Jika interupsi diaktifkan oleh level, maka
sumber luar yang meminta interupsi
Sumber interupsi
Interupsi Timer 0 dan Timer 1 dihasilkan
oleh TF0 dan TF1, yang akan di-set oleh
overflow dari register Timer/Counter
yang bersangkutan (kecuali untuk Timer
0 pada Mode 3)
Ketika interupsi timer terjadi, perangkat
keras dalam chip menghapus flag yang
Sumber interupsi
Interupsi port serial dihasilkan oleh
gabungan logika OR dari RI dan TI. Kedua fag ini tidak dihapus oleh
perangkat keras jika rutin pelayanan
divektorkan ke keduanya. Bahkan rutin pelayanan harus menentukan apakan RI atau TI yang menghasilkan interupsi,
Sumber interupsi
Semua bit yang mengakibatkan interupsi
dapat di-set dan dihapus melalui
perangkat lunak dengan hasil yang sama seperti dilakukan melalui perangkat
keras. Sehingga perangkat lunak dapat menghasilkan interupsi dan dapat
Sumber interupsi
Masing-masing sumber interupsi ini dapat
dibuat enabled atau disabled secara
terpisah dengan men-set atau menghapus bit pada Special Function Register IE
(interrupt enable) pada alamat 0A8H. Sumber interupsi dapat pula dibuat
enable/disable secara keseluruhan dengan
menghapus bit global enable/disable
Stuktur Level Prioritas
Setiap sumber interupsi dapat diprogram
secara terpisah ke satu atau dua level prioritas dengan men-set atau
menghapus bit pada Special Function
Register IP (Interrupt Priority) pada alamat 0B8H.
IP dihapus setelah sistem direset
Stuktur Level Prioritas
Interupsi prioritas rendah dapat
diinterupsi oleh interupsi prioritas tinggi tetapi tidak dapat diinterupsi oleh
interupsi prioritas rendah yang lain.
Interupsi prioritas tinggi tidak dapat
Stuktur Level Prioritas
Bagaimana Jika terdapat dua permintaan
interupsi yang berbeda level prioritas secara bersamaan…?
permintaan dari level prioritas yang lebih
tinggi yang dilayani.
Jika permintaan tersebut mempunyai level
prioritas yang sama, maka urutan polling
Stuktur Level Prioritas
Di dalam setiap level prioritas terdapat
struktur prioritas kedua yang ditentukan oleh urutan polling internal, yaitu sebagai berikut: Vektor
interupsi InterupsiSumber
Prioritas dalam Level
1. 0003h IE0 Tertinggi 2. 000Bh TF0
3. 00013h IE1 4. 001Bh TF1 5. 0023H RI + TI
6 002Bh EXF2 atau
Stuktur Level Prioritas
Struktur “prioritas dalam level” hanya
digunakan untuk mengatasi
Penanganan Interupsi
Flag interupsi diambil sebagai sampel pada
state ke 5 phase ke 2 (S5P2) dari setiap siklus mesin.
Sampel-sampel tersebut kemudian
di-polling pada siklus mesin selanjutnya.
Jika salah satu flag dalam keadaan set
pada S5P2 pada siklus sebelumnya, siklus polling akan mengetahuinya dan sistem interupsi akan menghasilkan LCALL
Penanganan Interupsi
dengan anggapan perangkat keras penghasil LCALL tidak dihalangi oleh salah satu dari kondisi berikut ini:
Interupsi dari level prioritas yang sama atau
yang lebih tinggi yang sedang berlangsung
Siklus polling pada saat itu tidak pada siklus
terakhir dalam eksekusi instruksi yang sedang berlangsung.
Instruksi yang sedang berlangsung adalah RETI
Penanganan Interupsi
Setiap kondisi tersebut di atas dapat
menghalangi terjadinya LCALL ke rutin pelayanan interupsi.
Kondisi ke 2 memastikan bahwa instruksi yang
sedang dikerjakan harus selesai sebelum pemvektoran ke suatu rutin pelayanan.
Kondisi 3 memastikan bahwa jika instruksi
yang sedang dikerjakan adalah RETI atau suatu perintah yang mempunyai akses ke IE atau IP, maka paling tidak satu atau lebih instruksi
Penanganan Interupsi
Siklus polling diulangi pada setiap siklus
mesin, dan nilai yang di-polling adalah
nilai yang muncul pada S5P2 dari siklus mesin sebelumnya.
Jika flag interupsi yang aktif tidak
terlayani karena salah satu kondisi di atas dan tidak aktif lagi ketika kondisi penghalang telah tidak ada, maka
Penanganan Interupsi
Dengan perkataan lain, flag interupsi
yang pernah aktif tetapi tidak terlayani
tidak akan diingat. Setiap siklus polling
adalah baru. Urutan siklus polling / LCALL
digambarkan pada gambar 2
Penanganan Interupsi
Prosesor meng-acknowledge permintaan
interupsi dengan mengeksekusi perangkat keras yang menghasilkan LCALL ke rutin pelayanan.
Dalam beberapa kasus, perangkat keras
juga menghapus flag yang menyebabkan interupsi, sedangkan pada kasus yang lain
Penanganan Interupsi
Prosesor menghapus falg interupsi
eksternal (IE0 atau IE1) hanya jika pada aktivasi transisi. Perangkat keras
penghasil LCALL menyimpan isi Program
Counter (PC) ke dalam stack (namun isi PSW tidak disimpan) dan mengisi
Penanganan Interupsi
Eksekusi diproses dari lokasi tersebut
sampai dijumpai instruksi RETI.
Instruksi RETI menginformasikan prosesor
bahwa rutin interupsi sudah berakhir, kemudian mengembalikan 2 byte dari
stack dan mengisi kembali Program Counter.
Eksekusi program yang terinterupsi
Penanganan Interupsi
instruksi RET juga dapat melanjutkan
eksekusi dari program yang terinterupsi, tetapi instruksi ini membiarkan sistem
kendali interupsi (interrupt control
Penanganan Interupsi
Setelah interupsi diterima, maka terjadi
peristiwa berikut ini:
Instruksi yang sedang berlangsung tetap
diselesaikan operasinya
Isi Program Counter (PC) disimpan dalam stack
Status interupsi yang sedang berlangsung
disimpan secara internal
Interupsi di tahan pada level interupsi
PC diisi dengan alamat vektor dari rutin
pelayanan interupsi (Interrupts Service Routine – ISR)
Penanganan Interupsi
ISR dieksekusi dan tetap tanggap terhadap
adanya interupsi. ISR diakhiri dengan instruksi RETI (RETurn from Interrupt).
Kemudian nilai PC sebelumnya yang
tersimpan dalam stack diisi kembali ke dalam PC dan megembalikan status
interupsi yang lama.
Eksekusi program utama dilanjutkan
Kerangka Program Interupsi
ORG 0h
LJMP main
. ;letak RLI (request Latency Interrupt/layanan interupsi)
. org 30h
Main:….
Jika ukuran RLI kurang dari 8 byte (tidak
Org 0h
EX1_RLI: ; LAYANAN INTERUPSI INT1 setB p1.5;; NYALAKAN LED
RETI
Org 30h Main:
Mov IE,#85h ; AKTIFKAN INTERUPSI EKTERNAL 0 DAN 1 Setb IT0 ; INTERUPSI NEGATIF EDGE UNTUK INT0 Setb IT1 ; UNTUK INT1
BANYAK INTERUPSI
Interupsi Eksternal
Sumber eksternal dapat diprogram menjadi
diaktivasi secara level maupun transisi dengan men-set atau menghapus bit IT1 atau IT0 pad register
TCON.
Jika Tx=0, interupsi eksternal x dipicu oleh adanya level rendah pada pin INTx.
Jika Tx=1, interupsi eksternal x dipicu sisi ( edge-triggered).
Pada mode ini jika pada pin INT x menunjukan tinggi pada satu siklus dan rendah pada siklus selanjutnya, flag permintaan interupsi IEx pada TCON akan
Interupsi Eksternal
Bit flag IEx menandakan permintaan
interupsi. Karena pin interupsi eksternal
diperiksa sekali dalam setiap siklus mesin, masukan tinggi atau rendah harus tetap demikian selama paling sedikit 12 osilator perioda untuk
Interupsi Eksternal
Jika interupsi eksternal adalah aktif transisi,:
sumber eksternal harus menahan pin
permintaan menjadi tinggi untuk paling tidak satu siklus mesin,
kemudian menahan menjadi rendah untuk
paling tidak satu siklus mesin untuk
memastikan transisi dapat dideteksi sehingga
flag permintaan interupsi IEx akan di-set.
IEx secara otomatis akan dihapus oleh CPU
Interupsi Eksternal
Jika interupsi eksternal adalah aktif level,
:
sumber eksternal harus mempertahankan
permintaan hingga interupsi betul-betul diterima.
Kemudian sumber eksternal harus tidak
diaktifkan sebelum rutin pelayanan