ON INTERRUPT – PBP Türkçe
ON INTERRUPT GOTO Label
ON INTERRUPT komutu kesmelerin bir PICBasic altprogramı gibi değerlendirilmesini sağlar.
Kesmeleri PicBasic Pro kullanarak işlemenin iki yolu vardır. İlk yol kesmeleri assembly dili ile program yazarak işlemektir. Bu yol ile kesmeler miminumum gecikme yaşanarak işlenebilir. İkinci yol ise PicBasic Pro kesme işleyicisi (“interrupt handler”) kullanmaktır. Bu sayede kesme altprogramları RESUME ile biten sıradan PicBasic Pro altprogramları gibi yazılabilir.
Bir kesme meydana geldiğinde cihaz tarafından bu olay işaretlenir. O an işlenmekte olan PICBASIC PRO ifadeleri biter bitmez program BASIC kesme işleyicisinin bulunduğu Label adlı etikete atlar. Kesme altprogramı tamamlandıktan sonra, program RESUME komutu ile kesmenin olduğu yere geri döner.
DISABLE ve ENABLE komutları kullanarak kesmelerin dikkate alınıp alınmayacağı belirlenebilir. DISABLE komutunun en çok kullanıldığı yer, kesme işleyicisinin hemen öncesidir. Ya da kesme işleyicisi kısım ON INTERRUPT ifadesinden önce yerleştirilir. ON INTERRUPT ifadesi ile programda ilk kez karşılaşana kadar kesmeler dikkate alınmaz.
Kesmenin oluştuğ an ile programın kesme işleyicisine gitmesi arasında gecikme yaşanabilmektedir. PBP komutları birer birer çalıştırıldığından ve aynı anda tek komut çalıştırılabildiğinden kesme oluştuğu anda çalışan komutun alacağı süreye bağlı olarak fark edilir bir gecikme oluşabilmektedir.
Program o an çalışmakta olan komutu bitirmeden, kesme gerçekleşse bile, kesme altprogramına atlamamaktadır. Eğer kesme oluştuğu anda PAUSE veya SERIN gibi komutlar çalışıyorsa, kesmenin işlenmesi oldukça gecikmeli olacaktır. Program bu geciklmeleri en aza indirecek şekilde yazılmalıdır. Örneğin uzun gecikmeler, kısa gecikme komutlarının döngüyle tekrar tekrar kullanılmasıyla sağlanabilir. Eğer kesmelerin en az gecikme ile işlenmesi isteniyorsa, assembly dili ile kesmeler değerlendirilmelidir.
Kesme için yaratılan kod kalabalığı da ayrı bir problemdir. ON INTERRUPT komutu, programdaki heri bir ifadenin sonuna kesmenin kontrolü için ekstra kod eklemektedir. DISABLE komutu ile devam eden komutlara belirtilen ekstra komutların eklenmesi iptal edilir. ENABLE komutundan sonraki komutlara ise bu ek kod yine eklenmektedir. Ek komut eklenmesi genelde problem yaratmamaktadır. Fakat düşük boyutlu program belleğine sahip cihazlara uzun kodlar yazılmasında sıkıntı yaşanabilmektedir.
Örnek
ON INTERRUPT GOTO kesme ' Kesme işleyicisi "kesme" etiketli kısım INTCON = %10010000 ' RB0 kesmesi aktif . . . DISABLE ' Kesme işleyicisindeyken kesmeleri iptal et. kesme: led = 1 ' Kesme olunca led'i yak. RESUME ' Ana programa geri dön. ENABLE ' Kesmeleri tekrar aktif et.
Kesmelerin tekrar kullanılana kadar ya da kalıcı olarak kapatılması isteniyorsa, ON INTERRUPT komutundan sonra aşağıdaki komut kullanılmalıdır:
INTCON = $80
Bunlara da Bakın
- ENABLE
- DISABLE
- RESUME
Tüm fonksiyonların listesine buradan bakabilirsiniz.
Bu yazı, “İzoelektronik – Atölye” grubu tarafından, 90alper90 ve Hazar kullanıcı adlı grup üyelerinin ortak, aktif çalışması ile hazırlanmıştır.


