Keluarga 8051

HALAMAN UTAMA

TIPE MEMORI
Program Memori
RAM Internal
RAM External
Memori SFR
Memori Bit

REGISTER UTAMA
Akumulator
Register R & B
DPTR, PC, & SP

MODE PENGALAMATAN
Immediate Addressing
Direct Addressing
Indirect Addressing

TIMER
Timer Pewaktu
Timer SFR
SFR TMOD
Timer Mode 0
Timer Mode 1
Timer Mode 2
Timer Mode 3
SFR TCON
Membaca Status Timer
Counter

BACK TO MAIN MENU

Interupsi

Seperti namanya, interupsi adalah suatu kejadian yang akan menghentikan sementara jalan program saat itu. Dengan interupsi, suatu alur program dapat dihentikan sementara untuk menjalankan suatu subrutin, dan kemudian melanjutkan aliran program secara normal seperti tidak pernah ada interupsi. Subrutin ini yang disebut dengan interrupt handler, dan hanya dijalankan jika terjadi suatu kejadian khusus (event). Kejadian ini bisa berupa timer yang mengalami overflow, penerimaan karakter melalui port serial, mengirimkan karakter melalui port serial, atau salah satu dari dua kejadian eksternal. Mikrokontroler 89C51 bisa dikonfigurasi untuk menangani interupsi yang disebabkan oleh salah satu dari kejadian.

Dengan interupsi ini, dapat dengan mudah dimonitor kejadian-kejadian yang diinginkan. Tanpa interupsi maka proses monitor ini dilakukan manual dengan pengecekan berulang. Proses pengecekan manual ini akan membuat program menjadi panjang dan lebih rumit.

Kejadian-kejadian yang Membangkitkan Interupsi

Dalam keluarga 8051, ada beberapa kejadian yang dapat membangkitkan interupsi, yaitu:

  1. Timer 0 overflow
  2. Timer 1 overflow
  3. Penerimaan / Pengiriman data secara serial
  4. Kejadian eksternal 0
  5. Kejadian eksternal 1

Dengan demikian, perlu dibedakan interupsi yang terjadi karena kejadian-kejadian yang berbeda. Hal ini bisa diwujudkan dengan adanya alamat pasti bagi sebuah rutin interupsi untuk masing-masing interupsi.

Daftar Alamat Rutin Interupsi

Interupsi

Flag

Alamat Rutin

Eksternal 0

IE0

0003h

Timer 0

TF0

000Bh

Eksternal 1

IE1

0013h

Timer 1

TF1

001Bh

Serial

R1/T1

0023h

Dengan referensi tabel di atas, dapat dilihat bahwa jika TIMER0 mengalami overflow (bit TF0 logika 1), maka program utama akan ditunda sementara dan kontrol program akan melompat ke alamat 0003h.

Menyeting Interupsi

Pada saat awal dihidupkan (power on), semua interupsi dimatikan. Jadi, meskipun bit TF0 diset (interupsi timer 0 diaktifkan), mikrokontroler 89C51 tidak akan menjalankan rutin interupsi. Sebuah program harus dibuat dan dijalankan untuk mengaktifkan dan menspesifikasikan interupsi mana yang diinginkan. Hal ini dapat dilakukan dengan mengkonfigurasi SFR IE (Interrupt Enable) yang berada di alamat A8h. Konfigurasi bit-bit SFR IE yang mengatur enable dari konfigurasi interupsi tercantum pada tabel di bawah ini.

Konfigurasi Bit-bit SFR IE

Bit

Nama

Alamat

Fungsi

7

EA

AFh

Global enable/disable interupsi

6

-

AEh

Tidak didefinisikan

5

-

ADh

Tidak didefinisikan

4

ES

ACh

Enable interupsi serial

3

ET1

ABh

Enable interupsi timer 1

2

EX1

AAh

Enable interupsi eksternal 1

1

ET0

A9h

Enable interupsi timer 0

0

EX0

A8

Enable interupsi eksternal 0

Sebelum semua interupsi dijalankan, bit 7 dari SFR IE harus diset terlebih dahulu. Global enable/disable interupsi ini menyebabkan semua interupsi enable atau disable. Jika bit 7 IE ini dinolkan, tidak akan ada satu interupsi pun yang terjadi. Prosedur yang benar adalah dengan mengeset jenis interupsi yang diinginkan dan kemudian mengeset bit 7 IE, barulah interupsi akan berjalan dengan baik.

Prioritas Interupsi

Mikrokontroler 89C51 menawarkan dua macam prioritas interupsi, yaitu prioritas tinggi dan prioritas rendah. Dengan demikian, dapat ditentukan suatu interupsi memiliki prioritas pengerjaan lebih dahulu daripada interupsi-interupsi yang lain yang bekerja saat itu. Sebagai contoh, interupsi timer 1 diaktifkan untuk secara otomatis memanggil sebuah rutin saat timer 1 mengalami kondisi overflow. Di samping itu, interupsi serial juga diaktifkan untuk memanggil suatu rutin saat ada sebuah karakter diterima dalam port serial. Dalam kasus ini diinginkan bahwa penerimaan karakter dari port serial lebih penting daripada interupsi timer. Jadi seandainya interupsi timer 1 sedang bekerja dan terjadi penerimaan karakter, maka rutin interupsi timer 1 tersebut akan diinterupsi oleh interupsi port serial dan akan ditunda sementara untuk mengerjakan rutin interupsi port serial ini. Setelah pengerjaan rutin interupsi serial selesai, maka kontrol program akan kembali ke rutin interupsi timer 1. Yang dikerjakan di sini adalah mengeset prioritas interupsi serial lebih tinggi daripada prioritas interupsi timer. Prioritas interupsi ini dikontrol oleh SFR IP dengan alamat B8h yang memiliki konfigurasi bit-bit sebagaimana tercantum dalam tabel di bawah ini.

Konfigurasi Bit-bit SFR IP

Bit

Nama

Alamat

Fungsi

7

-

  Tidak terdefinisi

6

-

  Tidak terdefinisi

5

-

  Tidak terdefinisi

4

PS

BCh

Prioritas interupsi serial

3

PT1

BBh

Prioritas interupsi timer 1

2

PX1

BAh

Prioritas interupsi eksternal 1

1

PT0

B9h

Prioritas interupsi timer 0

0

PX0

B8h

Prioritas interupsi eksternal 0

Pemakaian prioritas interupsi di atas memiliki beberapa peraturan yang tercantum di bawah ini:

  1. Tidak ada interupsi yang meninterupsi interupsi prioritas tinggi.
  2. Interupsi prioritas tinggi boleh menginterupsi interupsi prioritas rendah.
  3. Interupsi prioritas rendah boleh terjadi jika tidak ada interupsi lain yang sedang dijalankan.
  4. Jika dua interupsi terjadi pada waktu bersamaan, interupsi yang memiliki prioritas lebih tinggi akan dikerjakan terlebih dahulu. Jika keduanya memiliki prioritas sama, maka interupsi yang berada pada urutan polling akan dikerjakan terlebih dahulu.

Mikrokontroler 89C51 secara otomatis akan menguji apakah sebuah interupsi bisa terjadi setelah setiap instruksi dikerjakan. Pengecekan ini mengikuti suatu alur yang disebut dengan Polling Sequence dengan urutan:

  1. Interupsi Eksternal 0
  2. Interupsi Timer 0
  3. Interupsi Eksternal 1
  4. Interupsi Timer 1
  5. Interupsi serial

Ini berarti jika sebuah interupsi serial terjadi pada waktu bersamaan dengan interupsi eksternal 0, maka interupsi eksternal 0 akan dikerjakan terlebih dahulu dan interupsi serial baru akan dikerjakan setelah pengerjaan rutin interupsi eksternal 0 selesai dilakukan.

Contact me at: hsutanto@milis.stts.edu

Copyright (c) Hermawan Sutanto
Written in November 1998
Copying content must have permission from me !

Visit Our Sponsor
adClix Sponsorship Information