1
INTERUPSI
Interupsi adalah sinyal ke prosesor yang dipancarkan
oleh perangkat keras atau perangkat lunak yang menunjukkan suatu peristiwa yang
membutuhkan perhatian segera. Setiap kali interrupt terjadi, controller
melengkapi pelaksanaan instruksi saat ini dan mulai pelaksanaan sebuah Interrupt
Service Rutin (ISR) atau Interrupt Handler. ISR memberitahu prosesor atau
kontroler apa yang harus dilakukan ketika terjadi interrupt. Menyela dapat
berupa interupsi perangkat keras atau interupsi perangkat lunak.
INTERUPSI HARDWARE
Sebuah interupsi hardware adalah sinyal menyiagakan
elektronik yang dikirim ke prosesor dari perangkat eksternal, seperti disk
controller atau perangkat eksternal. Sebagai contoh, ketika kita menekan tombol
pada keyboard atau menggerakkan mouse, mereka memicu interupsi hardware yang
menyebabkan prosesor untuk membaca keystroke atau mouse posisi.
INTERUPSI SOFTWARE
Sebuah software interrupt disebabkan baik oleh
kondisi yang luar biasa atau instruksi khusus dalam set instruksi yang
menyebabkan interupsi ketika dijalankan oleh prosesor. Misalnya, jika unit
aritmatika logika prosesor menjalankan perintah untuk membagi nomor dengan nol,
menyebabkan pengecualian membagi-by-nol, sehingga menyebabkan komputer untuk
meninggalkan perhitungan atau menampilkan pesan kesalahan. instruksi perangkat
lunak interupsi bekerja sama dengan panggilan subrutin.
INTERUPSI SERVICE RUTIN
Untuk setiap interupsi, harus ada layanan interupsi
rutin (ISR), atau mengganggu handler. Ketika interupsi terjadi,
mikrokontroler menjalankan rutin layanan interupsi. Untuk setiap interupsi, ada
lokasi yang tetap dalam memori yang menyimpan alamat dari rutin layanan
interupsi yang, ISR. Tabel lokasi memori disisihkan untuk memegang alamat ISRs
disebut sebagai Interrupt Vector Table.
INTERUPSI VECTOR
Ketika pin reset
diaktifkan, 8051 melompat ke lokasi alamat 0000. Ini adalah power-up
ulang.
- Dua menyela disisihkan untuk timer: satu untuk timer 0 dan satu untuk timer 1. lokasi memori yang 000BH dan 001BH masing-masing dalam tabel vektor interupsi.
- Dua menyela disisihkan untuk hardware interupsi eksternal. Pin no. 12 dan Pin ada. 13 di Port 3 adalah untuk hardware eksternal menyela INT0 dan INT1, masing-masing. lokasi memori 0003H dan 0013H masing-masing dalam tabel vektor interupsi.
- komunikasi serial memiliki interupsi tunggal yang dimiliki kedua menerima dan mengirimkan. lokasi memori 0023H milik interupsi ini.
Langkah-langkah
untuk Jalankan sebuah Interrupt
Ketika
interupsi mendapat aktif, mikrokontroler berjalan melalui langkah-langkah
berikut -
- mikrokontroler menutup instruksi yang sedang dijalankan dan menyimpan alamat dari instruksi berikutnya (PC) pada stack.
- Hal ini juga menghemat status saat ini dari semua interupsi internal (yaitu, tidak di stack).
- Melompat ke lokasi memori dari interrupt tabel vektor yang menyimpan alamat dari rutin interupsi layanan.
- mikrokontroler mendapat alamat ISR dari tabel vektor interupsi dan melompat untuk itu. Ia mulai menjalankan subroutine layanan interupsi, yang merupakan RETI (pulang dari interrupt).
- Setelah mengeksekusi perintah RETI, mikrokontroler kembali ke lokasi di mana ia terganggu. Pertama, mendapat program counter (PC) alamat dari stack oleh bermunculan byte atas tumpukan ke PC. Kemudian, mulai mengeksekusi dari alamat itu.
Pemrograman Interupsi Timer
kita harus menghindari penggunaan memory program di alamat yang digunakan
dalam vektor table interupsi. Kita dapat menempatkan instruksi LJMP pada alamat
0000, yang menunjuk pada Program Utama kita yang berada ditempat yang lain.
Kita dapat menempatkan program utama, yaitu program yang paling pertama
dijalankan, mulai dari alamat 0030h. Sehingga CPU dapat melompati alamat-alamat
yang digunakan vector table interupsi.
ISR
untuk Timer-0 menempati alamat 000Bh. Karena kode yang kita gunakan lebih kecil
dari 8-byte dan tidak sampai mengganggu alamat 0013h milik EX1, maka kita bisa
menuliskan kode ISR mulai alamat 000Bh.Tidak
lupa kita menghidupkan interupsi Timer-0 dengan perintah “MOV IE,#10000010b”
pada label MAIN.Setelah
itu data P0 diambil dan diletakkan pada P1 secara terus menerus, ketika Timer-0
rollover, TF menjadi tinggi, CPU keluar dari loop BACK, dan melompat ke 000Bh
dan mulai mengeksekusi ISR yang dimulai dari alamat tersebut.Dalam
ISR Timer-0, perhatikan bahwa tidak dibutuhkkan instruksi “CLR TF0“, seperti
yang harus dilakukan pada mode polling. Sebab karena kita menggunakan
Interupsi, TF akan otomatis di-reset menjadi 0s begitu CPU mulai mengesekusi
ISR. Tulislah progam untuk secara terus menerus membaca data 8-bit dari P0 dan mengirimkannya ke P1, sambil secara terus-menerus pula membuat gelombang kotak dengan perioda 200uS pada P2.1. Gunakan Timer-0 untuk membuat gelombang kotak. Dan menggunakan XTAL = 11.0592 MHz.
Jawaban:
Kita menggunakan Timer-0 pada Mode-2 (auto reload). TH0 =
100/1.085uS = 92.
;———————————————————–
ORG 0000h ;alamat pertama setelah
reset
LJMP MULAI ;Lompati Interupt Vector Table
;
;—–
ISR untuk Timer 0 utk menghasilkan gelombang kotak.
ORG 000Bh ;Interupt Vector Table untuk
Timer-0
CPL P2.1 ;Toggle pin P2.1
RETI ;Akhir
dari ISR
;
;—–
Program Utama mulai dari sini
ORG 0030h ;Alamat bebas dari vektor table
MULAI:
MOV TMOD,#02h ;Timer-0, Mode-2 (autoreload)
MOV P0,#0FFh ;Buat P0 untuk menjadi port input
MOV TH0,#-92 ;TH0 = A4h = -92
MOV IE,#82h ;IE=10000010b utk interupsi Timer
SETB TR0 :Jalankan Timer
ULANG:
MOV A,P0 ;Ambil data dari Port 0
MOV P1,A ;Kirim data ke Port 1
SJMP ULANG ;Lompat ke ULANG, untuk terus
mengulang
END
2
SPECIAL
FUNCTION REGISTER
Special
Function Register (SFR) adalah register-register yang mempunyai fungsi khusus,
di antaranya ada yang digunakan untuk mengatur input output data dari
mikrokontroller. Misalnya saja register P0, P1, P2, dan P3 digunakan sebagai
register untuk menampung data input/output. Selain itu ada juga Special
Function
Pada
Special function register terdapat beberapa alamat yang bisa dialamati secara
bit dan ada yang tidak bisa dialamati secara bit. Pada Special Function
Register yang bisa diamati secara bit, alamat pada digit keduanya adalah digit
0 atau 8, misalnya 80H, 88H, 90H, 98H, dan F8h. Special Function Register
Akumulator adalah salah satunya yang sering dipakai untuk dialamati secara bit
dan mempunyai alamat E0H, misalnya A.0, A.1, A.2, A.3, A.4, A.5, A.6, dan A.7.
Berikut ini adalah penjelasan secara singkat tentang
SFR-SFR beserta fungsinya :
1.
Accumulator
Accumulator adalah merupakan register yang berfungsi
untuk menyimpan data sementara. Register Accumulator ini sering digunakan dalam
proses operasi aritmatika, logika,.
2.
Register
B
Register
B dapat digunakan untuk proses aritmatika dan dapat juga difungsikan sebagai
register biasa.
3.
Register Port
Pada register ini terdapat 4 buah yaitu register port 0,
port 2, dan port 3. Register port ini digunakan sebagai sarana input/output
untuk menyimpan data dari atau ke port untuk masing-masing P0, P1, P2, dan P3.
4.
Register
Timer
Mikrokontroller
AT89S51 mempunyai dua buah 16 bit timer, yaituTimer 0 dan Timer 1 dibentuk oleh
register TH0 dan TL0. Timer 1 dibentuk oleh register TH1 dan TL1. Perilaku dari
register TH0, TH1, TL0 dan TL1 diatur oleh register TMOD dan register TCON.
5.
Register
Control
Ada
beberapa register yang berisi bit-bit kontrol dan status untuk sistem
interupsi, pencacah atau pewaktu, dan port serial, yaitu register-register IP
(Interrupt priority), IE (Interrupt Enable), TMOD (TimerMode), TCON (Timer
Control), SCON (Serial Control), dan PCON ( Power Control).
a. Register IP digunakan untuk mengaktifkan atau
menonaktifkan sarana interupsi. IE.0 sampai IE.6 mengatur masing-masing sumber
interupsi, sedangkan IE.7 mengatur interupsi secara keseluruhan. Jika IE.7
bernilai 0 maka sistem interupsi akan non aktif atau keadaan dari IE.0 sampai
IE.6 tidak diperhatikan.
b.
Register TMOD digunakan untuk mengatur mode kerja
dari Timer 0 dan Timer 1. Dengan mengatur mode kerja timer, register ini dapat
digunakan mengatur masing-masing timer untuk diatur menjadi timer 16 bit, timer
13 bit, atau timer 8 bit yang dapat diiisi ulang secara otomatis. Selain itu,
register ini juga dapat mengatur agar proses pencacah timer dapat dikendalikan
melalui sinyal dari luar mikrokontroller.
c.
Register TCON digunakan untuk memulai atau
menghentikan proses pencacah timer, mengatur sinyal interupsi dari INT0 atau
INT1, serta memantau apakah ada sinyal masuk ke INT0 atau INT1.
d.
Register SCON digunakan untuk mengatur perilaku
dari UART yang diantaranya memantau proses pengiriman dan penerimaan data seri.
e. Register PCON digunakan untuk pemakaian daya
pada IC.
6.
Program
Status Word ( PSW )
Register PSW ini berisi informasi status program yang
mana masing-masing bit menunjukkan kondisi Central Processing Unit setelah
operasi dijalankan.
7.
Stack Pointer
Register Stack Pointer merupakan register 8 bit yang
terletak pada alamat 81H yang mempunyai fungsi untuk menyimpan alamat data pada
saat terjadi interrupt.
8.
Data Pointer
Register data pointer atau DPTR merupakan register 16 bit
yang terdiri dari data pointer high byte (DPH) dan data pointer low byte (DPL).
9.
Serial Data Buffer
Serial
data buffer terletak pada lokasi 99H yang dibagi menjadi dua register yang
terpisah, yaitu transmit buffer dan receiver buffer. Saat data disalin ke
serial data buffer maka data sesungguhnya diterima dan diteruskan ke dan dari
serial port.
REFERENSI
http://elektronika-elektronika.blogspot.co.id/2007/05/special-function-register-sfr-at89cx051.html
Tidak ada komentar:
Posting Komentar