Merupakan hasil yang didapat dari rancang bangun sistem secara keseluruhan.
3
2.1 Komunikasi Serial
2.1.1 Jenis komunikasi data serial
Ada dua macam cara pengiriman (transmisi) data secara serial. Kedua cara tersebut dibedakan oleh sinyal detak (clock) yang dipakai untuk mendorong data serial, yang pertama yaitu detak dikirim bersama-sama dengan data serial, cara tersebut dikatakan sebagai transmisi data serial secara synchron, sedangkan cara yang kedua yaitu disebut asynchron dimana detak dibangkitkan oleh masing-masing system pengirim maupun penerima.
2.1.2 Protokol Serial
Format populer untuk transmisi data kecepatan rendah adalah
asynchronous protokol. Format tipical untuk komunikasi asynchronous
adalah 12 bit. Start bit menginisialisasikan rangkaian pewaktuan. Hal ini dideteksi oleh perubahan dari High ke Low. Berikutnya adalah delapan bit data, diawali dengan LSB (Least Significant Bit) diakhiri dengan MSB (Most Significant Bit). Kemudian diikuti oleh opsional bit parity. Terakhir, line menjadi High untuk satu atau dua bit (stop bit), menandakan karakter telah habis. Format ini ditunjukkan pada Gambar 2.1 .
2.1.3 Pengaksesan port serial pada PC menggunakan pemograman Visual Basic 6.0
Pengaksesan port serial melalui visual basic yaitu dengan menggunakan kontrol MSComm. Kontrol MSComm menyediakan fasilitas komunikasi antara program aplikasi yang kita buat dengan port serial untuk mengirim atau menerima data melalui port serial. Setiap MSComm hanya menangani satu port serial, sehingga jika kita ingin menggunakan lebih dari satu port serial, kita juga harus menggunakan MSComm sebanyak port serial yang kita pakai.
2.1.3.1 Properti MSComm
Jumlah properti pada MSComm sangat banyak beberapa properti yang sering dipakai adalah sebagai berikut:
CommPort : Digunakan untuk menentukan nomor port serial yang akan dipakai.
Setting : Digunakan untuk menset nilai baud rate, parity, jumlah bit data, dan jumlah bit stop.
PortOpen : Digunakan untuk membuka ataupun menutup port serial yang dihubungkan dengan MSComm ini.
Input : Digunakan untuk mengambil data string yang ada pada buffer penerima.
Output : Digunakan untuk menulis data string pada buffer kirim.
Berikut adalah contoh penggunaan properti tersebut untuk komunikasi menggunakan modem.
Private Sub Form_Load ( ) MSComm1.commPort = 1
MSComm1.Settings = “4800,N,8,1” MSComm1.inputlen = 0
MSComm1.PortOpen = True
MSComm1.output = “ATV1Q0” & Chr$(13) Do
DoEvents
Buffer$ = Buffer$ & MSComm1,input
Loop Until InStr(Buffer$, “OK” & vbCRLF) MSComm1.PortOpen = False
Kode-kode program pada prosedur di atas melakukan aksi sebagai berikut:
x Port serial yang digunakan adalah COM1
x Setting MSComm adalah baud rate 4800, tanpa paritas, jumlah data 8 bit, dan jumlah bit stop adalah 1 bit.
x Memerintahkan kontrol MSComm membaca seluruh isi buffer ketika menggunakan perintah Input (MSComm1.InputLen = 0)
x Membuka port serial
x Mengirim perintah “ATV1Q0” diikuti ASCII 13 (enter) ke modem x Menunggu modem mengirimkan jawaban “OK” ke komputer x Menutup port serial
2.1.3.2 Even Pada MSComm
MSComm hanya mempunyai satu even saja, yaitu even OnComm. Even OnComm dibangkitkan jika nilai properti dari CommEvent berubah yang mengindikasikan telah terjadi even pada port serial baik even komunikasi maupun even error. Tabel 2.1 dan Tabel 2.2 berikut adalah nilai-nilai dari properti CommEvent. Nilai properti ini tidak tersedia pada saat design time, tetapi hanya dapat dibaca pada saat run time.
Tabel 2.1 Nilai-nilai Properti Even Error pada CommEvent
Konstanta Keterangan
comEventFrame Hardware mendeteksi adanya kesalahan framing comEventRxParity Hardware mendeteksi adanya kesalahan pariti comEventRxOver Buffer penerima mengalami over fllow, tidak
ada ruang kosong lagi pada buffer penerima comEventRxFull Buffer kirim penuh
comEventOverrun Port mengalami overrun comEventBreak Sinyal Break diterima
comEventDCB Mendapatkan kembali Device Control Block (DCB) dari port serial
Tabel 2.2 Nilai-Nilai Properti Even Komunikasi Pada CommEvent
Konstanta Keterangan
comEvSend Jumlah karakter pada buffer kirim lebih sedikit
daripada nilai property Sthreshold. Even ini akan dibangkitkan jika nilai pada property Sthreshold tidak diisi ‘0’.
comEvReceive Telah diterima karakter sebanyak nilai property
Rthreshold. Even ini akan dibangkitkan terus menerus sampai data diambil dari buffer penerima menggunakan perintah input. Even ini akan dibangkitkan jika nilai pada property Rthreshold tidak diisi ‘0’.
comEvCTS Terjadi perubahan pada saluran Clear to Send
comEvDSR Terjadi perubahan pada saluran Data Set Ready
comEvCD Terjadi perubahan pada saluran Carier Detect
comEvRing Terdeteksi adanya sinyal Ring
comEvEOF Karakter End of file diterima
Berikut adalah contoh penggunaan even OnComm untuk komunikasi menggunakan mikrokontroler. Akan dibaca hanya even comEvReceive saja, even yang lain diabaikan.
Private Static Sub MSComm1_OnComm() Dim Buffer As Variant
Select Case MSComm1.CommEvent
Case comEvReceive
If MSComm1.InBufferCount >= 3 then Buffer = CStr (MSComm1.Input)
If Mid(Buffer, 1, 1) = “O” Then
If Mid(Buffer, 2, 1) = “K” Then StatusBar1.Panels(“value”).Text = “Value:” & Asc(Mid(Buffer, 3, 1))
StatusBar1.Panels(“Status”).Text = “status: Connect” End If End If End Selec End Sub
Kode-kode program pada prosedur diatas akan melakukan aksi sebagai berikut:
x Mendeteksi even comEvReceive, kemudian menentukan apakah sudah diterima tiga buah karakter pada buffer penerima
x Menentukan apakah karakter yang diterima adalah karakter ‘OK’. Jika karakter yang diterima adalah karakter ‘OK’, maka akan diubah nilai ‘Value’ dan nilai ‘Status’ pada property panel control StatusBar1
2.2 RS232C Converter
RS232 (Recommended Standard 232) merupakan sebuah antar muka standar yang disetujui oleh Electronic Industries Association (EIA) untuk komunikasi DTE (Data Terminal Equipment) dengan DCE (Data
Circuit-Terminating Equipment) secara serial. Standard EIA RS232 pertama kali
dipublikasikan pada tahun 1962. Standar ini sudah ada jauh sebelum IC TTL populer. Pada tahun 1987, EIA mengeluarkan standar versi baru dan merubah nama menjadi EIA-232D dan pada tahun 1991 menjadi EIA/TIA-232-E. EIA/TIA-232-E merupakan revisi ke lima dari standar RS232. Namun demikian banyak orang masih menganggap sebagai standar RS232C, atau hanya RS232.
Antar muka (interface) secara serial lebih sulit dibandingkan dengan antar muka (interface) secara paralel. Dalam banyak kasus, beberapa alat yang dihubungkan dengan port serial akan membutuhkan pengubah transmisi serial ke parallel. Hal ini dapat dilakukan dengan menggunakan IC Universal
Asynchronous Receiver/Transmitter ( UART ).
Peralatan yang menggunakan kabel serial untuk komunikasinya dibagi menjadi dua golongan utama yaitu DCE (Data Communication Equipment) dan DTE (Data Terminal Equipment). Yang tergolong DCE adalah peralatan seperti modem, printer, mouse, dan plotter. Dan yang tergolong DTE adalah Komputer atau terminal.
Dalam ketentuan RS232C, level logika 1 (Mark) dinyatakan dengan tegangan antara –3 sampai –15 Volt dengan beban (-25 Volt tanpa beban), dan level logika 0 (Space) dinyatakan dengan tegangan antara +3 sampai +15 Volt dengan beban (+25 Volt tanpa beban). Mengingat komponen digital pada umumnya bekerja dengan sumber tegangan +5 Volt, dan level logika ‘0’ dinyatakan dengan tegangan antara 0 sampai 0,8 Volt dan level logika ‘1’ dinyatakan dengan tegangan 3,5 sampai 5 Volt, maka antara rangkaian digital dan saluran RS232C biasanya disisipkan IC ‘RS232-TTL Voltage Translator’.
Standar RS232C juga membatasi maksimum slew rate pada output driver. Batasan ini dimasukkan untuk membantu mengurangi kemungkinan cross-talk diantara sinyal yang berdekatan. Semakin kecil rise dan fall time, maka semakin kecil pula kemungkinan untuk terjadi cross-talk. Berdasarkan keadaan ini slew rate maksimum yang diizinkan adalah 30V/µs. Dan juga RS232C telah menentukan besar baud rate maksimum yaitu 20k bit / detik. Ketentuan ini dimaksudkan untuk mengurangi kemungkinan terjadinya cross-talk. Impedansi antara driver dan receiver juga telah ditentukan. Beban pada driver dispesifikasikan sebesar 3k sampai 7k. Untuk daerah antara +3 dan -3 volt level logikanya tidak didefinisikan. Tegangan open circuit tidak boleh lebih dari 25 volt ( referensi terhadap ground ). Arus short circuit tidak boleh melebihi 500mA. Spesifikasi level logic RS 232 dapat dilihat pada Gambar 2.2
Gambar 2.2 Spesifikasi Level Logic RS232C
Dalam saluran RS232C level logika ditransmisikan sebagai perbedaan tegangan antara saluran dan Ground, cara semacam ini dikatakan sebagai
unbalanced (single-ended) data transmission (transmisi data tidak imbang). Unbalanced (single-ended) data transmission menggunakan single konduktor,
dengan tegangan direferensikan terhadap sinyal ground (common) yang menunjukkan keadaan logic. Jika sinyal menerima gangguan derau listrik (electrical noise), bisa berakibat fatal pada penerima karena derau yang diterima bisa disalah tafsirkan sebagai sinyal digital.
Saluran RS232C banyak dipakai untuk menghubungkan komputer dengan alat pendukungnya, misalnya komputer dengan printer, dan komputer dengan modem. Namun hubungan antara alat tidak lebih dari 50 feet (sekitar 16,4 meter). Untuk lebih jelasnya, spesifikasi RS 232 dapat dilihat pada Tabel 2.3 dan
konfigurasi dari port serial PC dapat dilihat pada Gambar 2.5 dengan keterangan tiap kaki terdapat pada Tabel 2.4.
Tabel 2.3 Spesifikasi RS232C
Spesifikasi Keterangan
Mode operasi Single Ended
Jumlah Tx dan Rx yang diizinkan 1 Tx, 1Rx ( point to point ) Panjang kabel maksimum 50 feet
Data Rate maksimum 20 kbps
Range output driver minimum ±5V sampai ±15V Range output driver maksimum ±25V Impedansi pada Tx 3kവ sampai 7kവ
Sensitivitas input Rx ±3V
Range tegangan input Rx s15V Resistansi input Rx maksimum 3k sampai 7k
Receiver Threshold ±3V
Gambar 2.3 Konektor DB9
Tabel 2.4 RS232C Pada DB9
Nomor Pin Sinyal Deskripsi
1 DCD Data Carrier Detect
2 RD Receive Data
3 TD Transmit Data
4 DTR Data Terminal Ready
5 GND Signal Ground
6 DSR Data Set Ready
7 RTS Ready To Send
8 CTS Clear To Send
Sinyal Fungsi
DCD Saat modem mendeteksi sinyal carrier dari modem ujung yang lain pada line telepon, maka line ini akan aktif.
RD Sinyal ini dihasilkan DCE (Data Circuit-Terminating Equipment) dan diterima oleh DTE (Data Terminal Equipment).
TD Sinyal ini dihasilkan DTE (Data Terminal Equipment) dan diterima oleh DCE (Data Circuit-Terminating Equipment).
DTR Mengindikasikan kesiapan dari DTE. Sinyal ini ON oleh DTE saat siap untuk mengirim atau menerima data.
DSR Mengindikasikan kesiapan dari DCE. Sinyal ini ON oleh DCE saat siap untuk mengirim atau menerima data.
RTS Saat DTE siap untuk mengirim data ke DCE, RTS akan ON. Pada sistem simplex dan duplex, kondisi ini menunjukkan DCE pada mode receive. Pada sistem half-duplex, kondisi ini menunjukkan DCE pada mode transmit. Setelah RTS diaktifkan, DCE harus mengaktifkan CTS sebelum memulai komunikasi.
CTS Digunakan bersama dengan RTS untuk mengadakan handshaking antara DTE dan DCE. Setelah DCE menerima perintah RTS, hal ini menyebabkan CTS ON saat siap untuk memulai komunikasi.
2.3 Mikrokontroler AT89C51
Mikrokontroler adalah kombinasi CPU dengan memori, serta I/O yang berbentuk satu chip atau dikenal dengan SCM (Single Chip Microcomputer) yang merupakan suatu unit pengontrol yang sudah memenuhi sistem minimum komputer. Terdapat 2 macam memori yang memiliki sifat yang berbeda, yaitu: 1. Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan
catu daya. Dipakai untuk menyimpan program. Ketika di-reset, mikrokontroler akan langsung bekerja dengan program dalam ROM tersebut, sesuai dengan keperluannya. Dalam susunan IC mikrokontroler AT89C51 memori penyimpan program ini dinamakan sebagai Memory Program
2. Random Access Memory (RAM) isinya akan hilang atau terhapus ketika IC tidak mendapatkan catu daya. Dipakai untuk menyimpan data pada saat
program bekerja. Selain itu, RAM dipakai pula untuk Stack. RAM yang dipakai untuk menyimpan data ini disebut juga sebagai Memory Data
Keistimewaan dari IC mikrokontroler AT89C51 ini adalah:
x Sebuah CPU (Central Processing Unit) 8 bit yang termasuk keluarga MCS-51
x Memiliki 4 KiloByte Reprogrammable flash Memory x Memiliki 128 Bytes Internal RAM
x Maksimum frekuensi clock sampai 24MHz x Memiliki 32 Programmable I/O Lines x Memiliki dua 16 bit timer/counter x Memiliki 6 sumber interupsi
x Memiliki sebuah port serial dengan kontrol serial full duplex UART x Kemampuan melaksanakan operasi perkalian, pembagian, dan operasi
boolean (Bit)
Konfigurasi pin dan blok diagram dari mikrokontroler AT89C51 dapat dilihat pada Gambar 2.4 dan Gambar 2.5.
Gambar 2.5 Blok Diagram IC AT89C51
2.3.1 Jalur Input/Output Mikrokontroler
Mikrokontroler AT89C51 memiliki 32 jalur input/output yang terdiri dari 4 port parallel yaitu port 0, port 1, port 2 dan port 3. Adapun penjelasan dari masing–masing port adalah sebagai berikut:
a. Port 0
Port 0 merupakan port parallel 8 bit open drain dua arah
masukan TTL. Port 0 dapat juga dikonfigurasikan menjadi data bus atau alamat rendah yang dimultipleks selama akses ke eksternal program dan data memori.
b. Port 1
Port 1 merupakan port parallel 8 bit dua arah (bidirectional) yang dapat digunakan untuk berbagai keperluan (general purpose)
c. Port 2
Port 2 merupakan port parallel selebar 8 bit dua arah (bidirectional). Port 2 ini juga digunakan untuk mengirimkan byte alamat bila dilakukan pengaksesan memori eksternal.
d. Port 3
Port 3 merupakan port parallel 8 bit dua arah yang memiliki fungsi pengganti. Fungsi pengganti meliputi TxD (Transmit Data), RxD (Receive Data), INT0 (Interrupt 0), INT1 (Interrupt 1), T0 (Timer 0), T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti ini tidak digunakan, port 3 dapat digunakan sebagai port parallel 8 bit serbaguna.
2.3.2 Timer/Counter
Pada mikrokontroler AT89C51 terdapat 2 buah timer/counter 16 bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Perioda waktu timer/counter secara umum ditentukan oleh persamaan berikut :
1. Sebagai timer/counter 8 bit
T = (255 – TLx) x 1 siklus mesin (2-1) Dimana TLx adalah isi register TL0 atau TL1
2. Sebagai timer/counter 16 bit
T = (65536 – THx TLx) x siklus mesin (2-2) THx = isi register TH0 atau TH1
Pengontrol kerja timer/counter adalah register timer control (TCON). Adapun definisi dari bit-bit pada timer control adalah sebagai berikut :
MSB LSB
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Gambar 2.6 Register Timer Control (TCON)
Ket :
TF1 : Timer 1 overflow flag
TR1 : Bit untuk menjalankan timer 1 TF0 : Timer 0 overflow flag
TR0 : Bit untuk menjalankan timer 0 IE1 : Eksternal Interupt 1 edge flag IT1 : Interupt 1 control bit
IE0 : Eksternal Interupt 0 edge byte IT0 : Interupt 0 control bit
Pengontrol pemilihan mode operasi timer/counter adalah register timer mode (TMOD) yang mana definisi bit-bitnya adalah sebagai berikut:
MSB LSB
GATE C / T M1 M0 GATE C / T M1 M0
Gambar 2.7 Register Timer Mode Operation (TMOD)
GATE : Gate harus diset 1 untuk mengaktifkan fungsi
timer/counter
C / T : Pemilih fungsi timer atau counter. Clear (0) untuk
operasi timer dengan masukan dari sistem clock internal. Set (1) untuk operasi counter dengan masukan pin T0 atau T1.
Tabel 2.4 Mode operasi timer
M1 M0 MODE OPERASI
0 0 0 Timer 13 bit
0 1 1 Timer / Counter 16 bit 1 0 2 Timer auto reload 8 bit
TL0 adalah timer / counter 8 bit yang dikontrol oleh kontrol bit standar timer 0 1 1 3 TH0 adalah timer 8 bit dan dikontrol bit
timer 1
2.3.3 Sistem Interupsi
Pengetahuan mengenai interupsi sangat membantu mengatasi masalah pemrograman mikrokontroler dalam hal menangani banyak peralatan input/output.
Saat kaki RESET pada IC mikrokontroler menerima sinyal reset
Program Counter diisi dengan sebuah nilai, nilai tersebut dinamakan
sebagai vektor reset (reset vector) yang merupakan nomor awal memori-program yang menampung memori-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 Tabel 2.8
Gambar 2.8 Bagan Kerja Prosesor Melayani Interupsi
Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permintaan interupsi, masing-masing sumber interupsi dilayani dengan ISR berlainan, dengan demikian prosesor mempunyai beberapa vektor interupsi untuk memilih ISR mana yang dipakai melayani permintaan interupsi dari berbagai sumber. Kadang kala sebuah vektor interupsi dipakai oleh lebih dari satu sumber interupsi yang sejenis, dalam hal semacam ini ISR bersangkutan harus menentukan sendiri sumber interupsi mana yang harus dilayani saat itu.
Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayani permintaan interupsi tersebut menurut perioritas yang sudah ditentukan, selesai melayani permintaan interupsi
perioritas yang lebih tinggi, prosesor melayani permintaan interupsi berikutnya, baru setelah itu kembali mengerjakan program utama.
Saat prosesor sedang mengerjakan ISR, bisa jadi terjadi permintaan interupsi lain, jika permintaan interupsi yang datang belakangan ini mempunyai perioritas lebih tinggi, ISR yang sedang dikerjakan ditinggal dulu, prosesor melayani permintaan yang perioritas lebih tinggi, selesai melayani interupsi perioritas tinggi prosesor meneruskan ISR semula, baru setelah itu kembali mengerjakan program utama. Hal ini dikatakan sebagai interupsi bertingkat (nested interrupt), tapi tidak semua prosesor mempunyai kemampuan melayani interupsi secara ini.
Seperti terlihat dalam Gambar 2.9 AT89C51 mempunyai 6 sumber interupsi, yakni Interupsi External (External Interrupt) yang berasal dari kaki INT0 dan INT1, Interupsi Timer (Timer Interrupt) yang berasal dari
Timer 0 maupun Timer 1, Interupsi Port Seri (Serial Port Interrupt)
yang berasal dari bagian penerima dan bagian pengirim Port Seri.
Bit IE0 (atau bit IE1) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Eksternal. Ada 2 keadaan yang bisa meng-aktip-kan petanda ini, yang pertama karena level tegangan ‘0’ pada kaki INT0 (atau INT1), yang kedua karena terjadi transisi sinyal ‘1’ menjadi ‘0’ pada kaki INT0 (atau INT1). Pilihan bentuk sinyal ini ditentukan lewat bit IT0 (atau bit IT1) yang terdapat dalam register
TCON.
x Kalau bit IT0 (atau IT1) =’0’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat kaki INT0=’0’.
x Kalau bit IT0 (atau IT1) =’1’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat terjadi transisi sinyal ‘1’ menjadi ‘0’ pada kaki
INT0.
Menjelang prosesor menjalankan ISR dari Interupsi Eksternal, bit
IE0 (atau bit IE1) dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Eksternal sudah dilayani. Namun jika permintaan Interupsi
Ekternal terjadi karena level tegangan ‘0’ pada kaki IT0 (atau IT1), dan level tegangan pada kaki tersebut saat itu masih =’0’ maka bit IE0 (atau bit IE1) akan segera menjadi ‘1’ lagi.
Bit TF0 (atau bit TF1) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Timer, bit TF0 (atau bit
TF1) menjadi ‘1’ pada saat terjadi limpahan pada pencacah biner Timer 0 (atau Timer 1).
Menjelang prosesor menjalankan ISR dari Interupsi Timer, bit
TF0 (atau bit TF1) dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Timer sudah dilayani.
Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port seri selesai mengirim data 1 byte, permintaan interupsi semacam ini ditandai dengan petanda (flag) TI=’1’. Yang kedua terjadi saat port seri telah menerima data 1 byte secara lengkap, permintaan interupsi semacam ini ditandai dengan petanda (flag) RI=’1’.
Petanda di atas tidak dikembalikan menjadi ‘0’ menjelang prosesor menjalankan ISR dari Interupsi port seri, karena petanda tersebut masih diperlukan ISR untuk menentukan sumber interupsi berasal dari TI atau RI. Agar port seri bisa dipakai kembali setelah mengirim atau menerima data, petanda-petanda tadi harus di-nol-kan lewat program.
Petanda permintaan interupsi (IE0, TF0, IE1, TF1, RI dan TI) semuanya bisa di-nol-kan atau di-satu-kan lewat instruksi, pengaruhnya sama persis kalau perubahan itu dilakukan oleh perangkat keras. Artinya permintaan interupsi bisa diajukan lewat pemrograman, misalnya permintaan interupsi eksternal IT0 bisa diajukan dengan instruksi SETB
IE0.
Semua sumber permintaan interupsi yang di bahas di atas, masing-masing bisa di-aktip-kan atau di-nonaktip-kan secara tersendiri lewat bit-bit yang ada dalam register IE (Interrupt Enable Register).
Bit EX0 dan EX1 untuk mengatur interupsi eksternal INT0 dan
ES untuk mengatur interupsi port seri, seperti yang digambarkan dalam gambar 2.8. Di samping itu ada pula bit EA yang bisa dipakai untuk mengatur semua sumber interupsi sekaligus.
Setelah reset, semua bit dalam register IE bernilai ‘0’, artinya sistem interupsi dalam keadaan non-aktip. Untuk mengaktipkan salah satu sistem interupsi, bit pengatur interupsi bersangkutan diaktipkan dan juga
EA yang mengatur semua sumber interupsi. Misalnya instruksi yang dipakai untuk mengaktipkan interupsi ekternal INT0 adalah SETB EX0 disusul dengan SETB EA.
Saat AT89C51 menanggapi permintaan interupsi, Program Counter diisi dengan sebuah nilai yang dinamakan sebagai vektor interupsi, yang merupakan nomor awal dari memori-program yang menampung ISR untuk melayani permintaan interupsi tersebut. Vektor interupsi itu dipakai untuk melaksanakan inststuksi LCALL yang diaktipkan secara perangkat keras.
Vektor interupsi untuk interupsi eksternal INT0 adalah $0003, untuk interupsi timer 0 adalah $000B, untuk interupsi ekternal INT1 adalah $0013, untuk interupsi timer 1 adalah $001B dan untuk interupsi port seri adalah $0023.
Jarak vektor interupsi satu dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiap ISR. Jika sebuah ISR memang hanya pendek saja, tidak lebih dari 8 byte, maka ISR tersebut bisa langsung ditulis pada memori-program yang disediakan untuknya. ISR yang lebih panjang dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk oleh
vektor interupsi diisikan instruksi JUMP ke arah ISR bersangkutan.