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.

7







0

GIE

EEIE

TOIE

INTE

RBIE

TOIF

INTF

RBIF

Genel kesme

Eeprom

Aktif etme

Timer0 aktif etme

Rb0 

Aktif etme

B4-b7

Aktif etme

Timer0 

Kesme 

belirteci

B4-b7 

Kesme belirteci

B0 kesme

belirteci


Kesme programının çalışma şekli;

Eğer RB0 kesmesi yapıcaksa şöyle olmalıdır.


1

0

0

1

0

0

0

0

GIE



INTE






Intcon içeriği “90” olmalıdır.


Eğer TMR0 kesmesi yapmak istersek;


1

0

1

0

0

0

0

0

GIE


TOIE







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;


1

0

0

0

1

0

0

0

GIE




RBIE





Intcon içeriği “88” olmalıdır.


Eğer dış kesme oluşmuşsa aşağıdaki gibi bir durum oluşur;

1

0

0

0

0

0

0

1

GIE







RBIF

Intcon içeriği “81” olur. Fakat kesmeyi tekrar aktifleştirmek için 

1

0

0

1

0

0

0

0

GIE



INTE






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.

ORG     H’00’

GOTO ANA

ORG H’04’

GOTO ALARM


ANA

…..

GOTO ANA

ALARM 

…..

RETFIE

END

00

GOTO ANA







04

GOTO ALARM


ANA


…..


GOTO ANA




ALARM



RETFIE


END


Ö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