15-Pic- Kesme
Kesme
Çoğu zaman bir işlem yaparken başka bir işlemi de yapmak isteyebiliriz. Örneğin konuşurken duymak gibi. Fakat işlemcilerle bir işlem yaparken başka bir işlem yapmak mümkün değildir. Fakat iki işlemi bir arada yapmak ihtiyacı doğabilir. Bu işlemi yapmak istersek kesme kullanmadan yapmak mümkün değildir. İşlemcilerde ve mikrodenetleyicilerde bu işlemi yapmak için kesmeler kullanılır. Bir işlem yapılırken başka bir işlem için, yapılan iş kesilip diğer iş yapılır. Kesmeler birden fazla süreci aynı anda yürütmek için kullanılan en iyi yöntemdir.
16f84’de 4 tane kesme bulunmaktadır. Bunlar;
Eeprom kesmesi
Timer0 kesmesi
B4-B7 değişim kesmesi
B0 kesmesi.
Kesmeleri ayarlamak için intcon kaydedicisini ayarlamak gerekmektedir. İçeriği aşağıda görülmektedir.
Bir kesmenin oluşabilmesi için genel kesmenin aktif edilmesi gerekmektedir.
Kesme programının çalışma şekli;
Eğer RB0 kesmesi yapıcaksa şöyle olmalıdır.
Intcon içeriği “90” olmalıdır.
Eğer TMR0 kesmesi yapmak istersek;
Intcon içeriği “A0” olmalıdır.
Eğer RB4-RB7 arasındaki portlarda bir değişme olmuşsa çalışan kesme için;
Intcon içeriği “88” olmalıdır.
Eğer dış kesme oluşmuşsa aşağıdaki gibi bir durum oluşur;
Intcon içeriği “81” olur. Fakat kesmeyi tekrar aktifleştirmek için
Intcon içeriği “90” olmalıdır.
Pic’in çalışma Mantığı
İlk defa çalışmaya başlayan pic 00 adresinden başlayarak çalışmaya başlar.
Eğer kesme oluşmuşsa 01-04 arasındaki adreslere bakar. Programda kesme programı yazılacaksa daha önceden bu adreslerin içeriği düzenlenmelidir.
İstenilen adrese konumlanmak için ORG komutu kullanılır. Aşağıda ALARM adındaki kesme programının nasıl yazıldığı görülmektedir.
Örnek:
RB4-RB7 arasındaki port değişimini kontrol eden programı yazınız.
#include<p16F84.inc>
ORG H'00' ;Program başlangıç adresini ayarla
GOTO START ;Ana programa geç
ORG H'04' ;Kesme alt programı başlangıç adresini ayarla
GOTO KESME
START ; Ana program başlangıcı
BSF STATUS, 5 ; BANK1’e geçilir
BCF TRISA, 0 ; PORTA.0 bit çık
BCF STATUS, 5 ; BANK0’a geçilir
CLRF PORTA
MOVLW b'10001000'
MOVWF INTCON ;Kesme kontrol yazmacını harici kesme için ayarla
DUR
GOTO DUR ;ve normal şartlarda hiçbir işlem yapmadan sonsuz
KESME
COMF PORTA
MOVLW b'10001000'
MOVWF INTCON ;Kesme kontrol yazmacını harici kesme için ayarla
RETFIE ;Kesme alt programı sonu
END ;Program sonu
Kaynaklar
[1] Bil386 Mikrobilgisayarlı Sistem Tasarımı
[2] http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/5/5.pdf (Haziran 2007)
[3] www.datasheetcatalog.com/datasheets_pdf/L/M/3/LM35DZ.shtml (Mayıs 2007)
[4] www.microchip.com
Yorumlar
Yorum Gönder