Merhaba Arkadaşlar
Bu ay ki yazımızda sizden gelen yoğun istek üzerine PIC'lerde Interrupt
(kesme)'ları işleyeceğiz. Bu örnek devrede kullanacağımız kesme Timer (Zamanlayıcı)
kesmesi. Dilerseniz önce Interrupt(Kesme)'ın ne olduğunu bir inceleyelim.
Kesme (Interrupt) Nedir?
Micro işlemcilerle yeni çalışmaya başlayanlar, genellikle kesme kelimesini
duymuş olmalarına rağmen kullanımının zor olduğu konusunda bir ön yargıya
kapılarak programlarında kesmeleri kullanmaktan sakınırlar. Oysa öğrenilmesi
ve uygulaması pek de zor olmayan kesme alt programları kullanılarak, program
içerisinde kullanılacak komut sayısını azaltılır ve gereksiz kod kalabalığı
ve kargaşası önlenir.
Peki kesme nedir? Kesme işlemini günlük hayattan bir örnek vererek açıklayalım:
Araba kullanırken cep telefonunuz çaldığını düşünün.Ne yaparsınız? Aracınızı
durdurup telefon görüşmenizi yapar sonra yolunuza kaldığınız yerden devam
edersiniz. Bu durum kesme kullanan bir programın işleyişine bir örnek teşkil
edebilir. Bu örnekten sonra kesmeyi şöyle açıklayabiliriz: Kesme programınızın
normal akışı devam ederken PIC'in port girişlerinden veya donanım içerisindeki
bir sayıcıdan gelen sinyal nedeni ile program belleğinde çalışmakta olan
programın kesilmesi ve bir kesme alt programına yönlenmesidir. Ana programınız
kesme alt programı sonlanır sonlanmaz kaldığı yerden devam eder. Şimdi
devremize geçelim.
Saat Devresi
Programımızın çalışmasındaki anahtar işlev Timer kesmesinin kullanılmasıdır.
Timer kesmesi programcının belirlediği zaman aralıklarında bir kesme üretir.
Programımızda bu zaman aralığı OPTION_REG = $55 (MOVLW 0x55, MOVF OPTION_REG
assembly karşılığı) komutuyla 16,348ms'ye ayarlanmıştır. Kesmeyi aktif
hale getirmek için INTCON yazmacı $A0'a ayarlanır. 61 adet kesme oluştuğunda
61 x 16,348ms = 1sn olacağından "saniye" değişkenimiz bir artırılır ve
LCD güncellenmesi aktif hale getirilir. PICBASIC PRO derleyicisinde kesme
işlevi gerçekleşirken STATUS , W ve PRESCALER yazmaları derleyici
tarafından saklanır. Assembly'de mutlaka bu yazmaçlar kesme alt programının
hemen başında saklanmaları gerekir. Bunun yapılması programın kaldığı yerden
tekrar devam etmesi için gereklidir.
Saat ile ilgili dosyalar:
Saat.hex
Saat.bas