Kamis, 26 Oktober 2017

Interupsi



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