Ana Sayfa
Antrak Gazetesi
Eski Sayılar
Antrak Ana Sayfası
Yorumlariniz ve Sorularınız için mail adresimiz.

İnternette İlk 
Türk Amatör Telsiz Gazetesi

PIC16F877 / SAYI - 16

 


TA5CPO Adnan Işık
E-Mail: isikadnan@isikelektronik.com
Yazarın diğer makaleleri için aşağıdaki linklere tıklayın.


022001
032001
042001
052001
062001
072001
082001
092001
102001
112001
122001
012002
022002
032002
032002
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