Interrupt Pada MCS-51
a.
Mengenal
interrupt
Interrupt membuat banyak hal bisa
dikerjakan dalam satu waktu dan dalam keteraturan. Secara mudah, interrupt
diartikan sebagai mekanisme di mana suatu perangkat keras komputer mengirimkan
sinyal kepada prosesor untuk menghentikan sejenak aktivitasnya, untuk
menanggapi dan menyediakan layanan yang diminta oleh perangkat keras tersebut.
Sebagai analogi misalnya ketika kita menekan suatu tombol di keyboard. Setelah
layanan direspon, maka prosesor akan kembali melakukan aktivitas semula. Contoh
pertama ini disebut sebagai hardware interrupt request (IRQ).
Umumnya, setiap perangkat keras
memiliki angka-angka tersendiri dalam IRQ, dimulai dari 0 sampai dengan 15.
Semakin rendah indeksnya, semakin tinggi prioritasnya untuk ditangani oleh
prosesor. Dengan adanya pengalamatan IRQ ini, maka prosesor jadi tahu, suatu
request/interrupt berasal dari mana dan respon dikirim ke mana. Pengalamatan
(assignment) IRQ dilakukan saat komputer booting.
8051 mempunyai 5 buah sumber
interupsi. 2 buah interupsi eksternal, 2 buah interupsi timer dan 1 interupsi
port serial. Meskipun memerlukan pengertian yang lebih mendalam, pengetahuan
mengenai interupsi sangat membantu mengatasi masalah pemrograman
mikroprosesor/mikrokontroler dalam hal menangani banyak peralatan input/output.
Pengetahuan mengenai interupsi tidak cukup hanya dibahas secara teori saja,
diperlukan contoh program yang konkrit untuk memahami.
Saat kaki RESET pada IC
mikroprosesor/mikrokontroler menerima sinyal reset (pada MCS51 sinyal tersebut
berupa sinyal ‘1’ sesaat, pada prosesor lain umumnya merupakan sinyal ‘0’
sesaat), Program Counter diisi dengan sebuah nilai. Nilai tersebut dinamakan
sebagai vektor reset (reset vector), merupakan nomor awal memori-program yang
menampung program yang harus dijalankan.
Pembahasan di atas memberi gambaran
bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset diumpankan
ke kaki Reset) yang dipakai untuk mengatur kerja dari perangkat lunak, yakni
menentukan aliran program prosesor (mengisi Program Counter dengan vektor
reset).
Program yang dijalankan dengan cara
reset, merupakan program utama bagi prosesor.
Peristiwa perangkat keras yang
dipakai untuk mengatur kerja dari perangkat lunak, tidak hanya terjadi pada
proses reset, tapi terjadi pula dalam proses interupsi.
Dalam proses interupsi, terjadinya
sesuatu pada perangkat keras tertentu dicatat dalam flip-flop khusus, flip-flop
tersebut sering disebut sebagai ‘petanda’ (flag), catatan dalam petanda
tersebut diatur sedemikian rupa sehingga bisa merupakan sinyal permintaan
interupsi pada prosesor. Jika permintaan interupsi ini dilayani prosesor,
Program Counter akan diisi dengan sebuah nilai. Nilai tersebut dinamakan
sebagai vektor interupsi (interrupt vector), yang merupakan nomor awal
memori-program yang menampung program yang dipakai untuk melayani permintaan
interupsi tersebut.
Program yang dijalankan dengan cara
interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt Service
Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang dikerjakan pada
program utama sementara ditinggalkan, selesai menjalankan ISR prosesor kembali
menjalankan program utama, seperti yang digambarkan dalam Gambar 1.
Gambar 1 Bagan kerja prosesor melayani interupsi