interupsi dan aritmetik

12
Secara umum interrupt atau interupsi berarti menyela. Orang yang sedang mengetik akan menghentikan pekerjaannya jika mendengar dering telepon, kemudian akan melanjutkan ketikannya setalah aktivitas menerima telepon berakhir. Dalam system prosesor, orang tsb dapat dianalogikan dengan prosesor yang sedang mengeksekusi program utama atau main program, di mana program utamanya adalah melakukan pengetikan. Dering telepon adalah interrupt, sedangkan aktivitas me ngangkat gagang telepon dan seterusnya sampai percakapan telepon usai dapat dianalogikan sebagai interrupt service routine. Berbeda dengan subroutine biasa yang dieksekusi karena perintah LCALL atau ACALL dan kembali ke program utama setelah menemukan instruksi RET. Interrput Service Routine atau ISR dieksekusi jika prosesor diinterupsi oleh satu atau beberapa sebab, bukan karena prosesor mengeksekusi instruksi tertentu seperti halnya LCALL. Prosesor akan kembali ke program utama setelah menemukan instruksi RETI. Analogi perbandingan antara CALL dengan INTERRUPT adalah sebagai berikut. Misalnya seorang ibu sedang memasak. Di sela- sela memasak, ia dapat menyisipkan pekerjaan lain, misalnya meracik bumbu atau mencuci piring. Pekerjaan meracik bumbu dan mencuci piring tsb dilakukan terencana dan terjadwal, bukan karena tiba-tiba ibu tsb mendengar teriakan bumbu atau piring. Hal ini berbeda jika ibu tsb mendengar anaknya menangis minta susu, terdengar bunyi bell pintu rumah atau terdengar dering telepon yang kejadiannya datang secara acak, tidak

Upload: chrisselda-marito-dayana-new

Post on 11-Nov-2015

6 views

Category:

Documents


1 download

DESCRIPTION

n

TRANSCRIPT

Secara umum interrupt atau interupsi berarti menyela. Orang yang sedang mengetik akan menghentikan pekerjaannya jika mendengar dering telepon, kemudian akan melanjutkan ketikannya setalah aktivitas menerima telepon berakhir. Dalam system prosesor, orang tsb dapat dianalogikan dengan prosesor yang sedang mengeksekusi program utama atau main program, di mana program utamanya adalah melakukan pengetikan. Dering telepon adalah interrupt, sedangkan aktivitas me ngangkat gagang telepon dan seterusnya sampai percakapan telepon usai dapat dianalogikan sebagai interrupt service routine. Berbeda dengan subroutine biasa yang dieksekusi karena perintah LCALL atau ACALL dan kembali ke program utama setelah menemukan instruksi RET. Interrput Service Routine atau ISR dieksekusi jika prosesor diinterupsi oleh satu atau beberapa sebab, bukan karena prosesor mengeksekusi instruksi tertentu seperti halnya LCALL. Prosesor akan kembali ke program utama setelah menemukan instruksi RETI.Analogi perbandingan antara CALL dengan INTERRUPT adalah sebagai berikut. Misalnya seorang ibu sedang memasak. Di sela-sela memasak, ia dapat menyisipkan pekerjaan lain, misalnya meracik bumbu atau mencuci piring. Pekerjaan meracik bumbu dan mencuci piring tsb dilakukan terencana dan terjadwal, bukan karena tiba-tiba ibu tsb mendengar teriakan bumbu atau piring. Hal ini berbeda jika ibu tsb mendengar anaknya menangis minta susu, terdengar bunyi bell pintu rumah atau terdengar dering telepon yang kejadiannya datang secara acak, tidak terjadwal atau terencana. Ibu tersebut dapat dianalogikan dengan prosesor yang sedang mengeksekusi program utama, yaitu memasak. Meracik bumbu dan mencuci piring dianggap sebagai sub routine biasa yang dieksekusi setelah prosesor menemukan instruksi CALL. Sedangkan melayani anak, tamu atau dering telepon dianggap sebagai 3 macam ISR yang masing-masing dieksekusi tergantung jenis interupsi yang didengar oleh ibu tsb. Jika ketiganya datang secara bersamaan, atau yang lain datang sebelum eksekusi ISR selesai, maka ibu tsb harus menentukan prioritas, jangan sampai pekerjaan yang lebih penting disela oleh pekerjaan yang kalah penting.

Sumber interupsi ada 5 sebab, yaitu : 2 Internal Timer Interrupt, 2 Eksternal Interrupt, dan sebuah Serial Interrupt. Timer interrupt terjadi setiap kali terjadi Timer Overflow pada Timer1 maupun Timer0. Eksternal interrupt terjadi jika pin INT0 (P3.2.) atau pin INT1 (P3.3) dalam kondisi LOW atau pada kondisi transisi dari HIGH ke LOW tergantung setting bit IT1 dan IT0 yang berada di register TCON. Jika bit IT1 LOW, maka interupsi terjadi selama pin INT1 dalam keadaan LOW, tetapi jika bit IT1 HIGH, maka interupsi hanya terjadi ketika pin INT1 mengalami transisi dari HIGH ke LOW.Serial Interrupt terjadi ketika register SBUF dalam keadaan penuh pada proses receive, yaitu prosesor menerima data serial dari luar melalui pin RxD (P3.0) atau ketika register SBUF dalam keadaan kosong pada proses transmit, yaitu prosesor mengirim data serial melalui pin TxD (P3.1). Kelima jenis ISR boleh ditulis pada alamat mana saja, asal diakhiri dengan instruksi RETI dan diletakkan bukan pada area Interrupt Vector, yaitu lokasi ROM antara 0000 sampai 002A. Setiap lokasi Interrupt Vector, harus diisi dengan instruksi pertama yang akan dieksekusi ketika terjadi interupsi tertentu. Misalnya, jika ISR untuk Timer 0 diletakkan pada ROM mulai alamat 200H, maka alamat 00BH harus diisi dengan instruksi LJMP 0200H.Masing-masing dari 5 interupsi tersebut dapat diaktifkan atau dinonaktifkandengan menetapkan LOW atau HIGH pada bit-bit bersesuaian di register IE.

Tabel 2.2. Register IE, bit addressable.

Bit EA atau IE.7 digunakan untuk mengaktifkan (enable) atau menonaktifkan (disable) seluruh sistem interupsi.

IE.6 Not implemented, reserved for future use.*

IE.5 Not implemented, reserved for future use.*

Bit IE.4 sampai IE.0 digunakan untuk enable atau disable masing-masinginterupsi jika bit EA dalam keadan HIGH.

Bit ES atau IE.4 Enable or disable the serial port interrupt.

Bit ET1 atau IE.3 Enable or disable the Timer 1 overflow interrupt.

Bit EX1 atau IE.2 Enable or disable External Interrupt 1.

Bit ET0 atau IE.1 Enable or disable the Timer 0 overflow interrupt.

Bit EX0 atau IE.0 Enable or disable External Interrupt 0.

Contoh Integrasi Timer, Counter dan Interupt

1. TachometerPada modul ini akan dipaparkan studi kasus penggunaan Counter, Timer danInterrupt pada Tachometer Digital. Tachometer adalah alat yang digunakan untuk engukur kecepatan putaran mesin. Satuan praktis yang digunakannya adalah rotation per minute yang disingkat rpm. Penggunaan tachometer sudah meluas pada banyak alat seperti pada mobil, sepeda motor, motor listrik dan lain-lain. Hampir semua tachometer tersebut bekerja secara mekanis dan penunjukkannya secara analog. Selain rawan terhadap kerusakan, tachometer seperti ini memiliki konstruksi mekanis yang cukup rumit, sehingga perawatan dan perbaikannya cukup mahal.

Selain tachometer analog tersebut, ada bentuk lain tachometer, yaitu tachometerdigital atau rotary encoder. Tachometer ini dilengkapi rangkaian elektronika analogdan digital, selain itu konstruksi mekaniknya lebih sederhana, karena manipulasisinyal atau informasi mekanik digantikan dengan manipulasi sinyal atau informasielektronik.

Kelebihan rotary encoder dibandingkan dengan tachometer analog :1. Konstruksi mekanisnya lebih ringkas. 2. Lebih tahan atau kebal terhadap noise mekanik maupun elektronik, karena yang menjadi acuan pengukuran adalah jumlah pulsa diskrit. 3. Kemudahan dalam penentuan resolusi dan jangkauan pengukuran, yaitu jumlah lubang pada cakram dan kapasitas counter.4. Baik mekanik maupun elektroniknya dapat dibuat menjadi ringkas dan kecil, karena tidak mengandung induktor maupun roda gigi mekanik.5. Kemudahan dalam pembacaan karena hasil pengukurannya dapat ditampilkan dalam bentuk angka6. Karena informasi yang diperoleh berupa informasi digital, selain mudah dimanipulasi secara matematis, juga dapat disimpan dan ditransmisikan dengan mudah dan murah.

Secara umum, Rotary encoder tsb mengubah putaran poros menjadi tampilanbilangan desimal dengan resolusi 10 rpm dan jangkauan pengukuran sampai 10.000rpm. Modul ini bertujuan memaparkan 4 hal berikut ini.

Gambar.1.1. Blok Diagram Rotary Encoder sebelum modifikasi.

Pada blok diagram terlihat sebagai sensornya digunakan sebuah encoder yaitutranduser yang mengubah gerakan mekanik menjadi besaran listrik. Outputnyadiperoleh dengan membaca kode atau pola warna pada piringan yang berputar.Dengan cara seperti ini akurasi dan jangkauan kecepatan yang terukur sangatterbatas nilainya (dibatasi oleh kode atau pola pada piringan). Selain itu tampilannyaakan sulit dibaca karena tanpa buffer tampilan akan berubah sesuai dengan isicounter.Untuk menghindari kekurangan tersebut, arsitektur rotary encoder di atasdimodifikasi pada tiga bagian, yaitu bagian transduser, bagian untuk keluwesanjangkauan dan akurasi pengukuran serta buffer data sebelum display.

2. Cara Kerja Rangkaian Secara Umum.Secara umum, rotary encoder mengubah kecepatan putar suatu poros menjaditampilan desimal 4 digit. Tahapannya adalah sebagai berikut :

Tranduser yang terdiri dari sebuah cakram yang berlubang dan sepasang phototransceiver mengubah kecepatan putar menjadi arus listrik yang besarnya berubahsesuai dengan potongan cakram terhadap lintasan sinar. Arus ini kemudian diubahmenjadi tegangan oleh sebuah resistor.

Tegangan yang ditimbulkan oleh sensor sanggat kecil yaitu 0 Volt jika terhalangcakram dan 0,8 Volt jika sinar lolos dari lubang cakram. Sinyal ini diteruskan kedalamrangkaian pembentuk pulsa untuk memperoleh bentuk gelombang persegi yang baikdan tegangannya menjadi 0 Volt dan 5 Volt. Gelombang atau sinyal yang keluar darirangkaian pembentuk pulsa inilah yang akan diolah, yaitu dengan mencacah pulsayang masuk selama periode pengisian counter berlangsung, yaitu selama detik.

Hasil cacahan pada counter ini dimanipulasi secara matematis agar menghasilkanangka yang benar sesuai dengan kecepatan rotasi berdasarkan jumlah lubang padacakram pencacah dan durasi waktu pembukaan counter. Agar angka yang tertera pada display seven segment mudah terbaca, maka update atau penggantian tampilan dilakukan setiap detikAritmatika Biner

1. PengantarProsesor hanya dapat melakukan operasi digital termasuk operasi aritmetika.Operasi aritmetika yang biasa kita lakukan dalam bentuk desimal ketika menggunakanpensil dan kertas, harus dilakukan dalam bentuk biner ketika menggunakan prosesor.Prosesor MCS51 hanya dapat melakukan pengoperasian aritmetika 8-BitKarena prosesor 8051 hanya menyediakan 8-Bit register dan memori (kecuali untukregister alamat, sep:Register PC dan DPTR), maka.Instruksi ADD hanya dapat menjumlahkan 2 buah operand berukuran 8-bit danmenyimpan hasilnya berupa bilangan 8-bit pada salah satu dari 2 operand tadi.

Operand adalah bilangan atau lokasi memory yang dilibatkan dalam pengolahandata. Misalnya:ADD A,30H berarti prosesor menjumlahkan bilangan 8-bit pada register A denganbilangan 8-bit pada memory alamat 30H kemudian hasilnya disimpan di register A.

Instruksi aritmetika lain: ADDC (ADD with Carry), SUBB (Substract with Borrow),MUL (Multiply) dan DIV (Divide). Semuanya hanya dapat dilakukan untuk operandberukuran 8-bit.Untuk pengoperasian aritmetika lebih dari 8 Bit (sep: 16 bit, 24 bit dst), terdapat teknik khusus dalam mensiasatinya. Pada modul ini akan dicoba dijelaskan.

Contoh-contoh yang akan diberikan pada modul ini hanya berkisar pada bilangan integer positif. Jika kita telah memahami aritmetika integer positif ini, operasi aritmetika untuk bilangan bentuk lain seperti bilangan negatif dan bilangan riil atau floating point hanya memerlukan sedikit modifikasi pada operasi aritmetika untuk bilangan integer positif.

2. Penambahan Penjumlahan desimal secara manual,misalkan 126 + 57, dilakukan dengan cara:1. Menyediakan 3-digit tempat untuk: Bilangan Pertama, Bilangan Kedua, dan Hasil Penjumlahan.2. Melakukan penjumlahan bertahap digit demi digit yang dimulai dari kanan, seperti pada tabel dibawah:6 + 7 = 13 angka 3 ditaruh pada kotak paling kanan hasil penjumlahan, sementara angka 1 disimpan untuk penjumlahan tahap berikutnya, yaitu digit kedua dari kanan. Pada tahap berikutnya, kita menjumlahkan angka simpanan, dalam hal ini angka 1,dengan angka 2 dan angka 5, dan seterusnya kita lakukan hingga digit terakhir, yaitu digit paling kiri. Dalam bahasa Inggeris, simpanan disebut carry.

Simpanan 1Bilangan pertama126Bilangan kedua57Hasil penjumlahan183

Penjumlahan aritmetik biner,

Dengan cara yang mirip, kita dapat melakukannya untuk bilangan biner, bukan desimal, di mana setiap digit desimal dianalogikan dengan 8-bit bilangan biner yang ditulis dalam bentuk 2 angka heksa. Misalnya kita ingin menjumlahkan 3F442A dengan 4DF3.Simpanan 11Bilangan pertama 3F442ABilangan kedua 4DF3Hasil penjumlaha 3F921D

Jika teknik di atas diperluas menjadi bentuk yang lebih umum, yaitu penjumlah N-bytebilangan biner, maka bentuk tabelnya akan seperti berikut ini.Operasi pengurangan menggunakan rangkaian digital yang sama dengan yang digunakan dalam operasi penjumlahan, karena cara menyelesaikan operasinya juga hampir sama, perbedaannya hanyalah pada teknik menegatifkan operand kedua. Untuk menegatifkan bilangan, dilakukan cara yang disebut sebagai 2s complement. Cara ini terdiri dari 2 tahap:1. tahap pertama adalah membalik bilangan tersebut, semua angka 0 pada bilangan tersebut diubah menjadi 1 dan sebaliknya semua angka 1 diubah menjadi 0.

2. tahap kedua adalah increment bilangan tadi.Potongan program untuk pengurangan hampir sama dengan potongan program untukpenjumlahan, kita cukup mengganti instruksi ADDC (Add with Carry) menjadi SUBB (Sub with Borrow).