arkadaşlar merhaba, 167877 ve CCS pic C kullanarak basit bir interrupt uygulama örneği verebilir misiniz.örneğin led yanıyor fakat rb0 daki butona basınca led sönecek.bu uygulamayı interrupt ile yapabilir miyiz.teşekkürler...
interrupr (kesme) komutu ile yapılaması ve pic c kullanılması şartmı Asemmbly da yapılsa olmazmı birde bu bahsettiğin enteger hangi firmanın acaba sorabilirmiyim 16F877 entegresimi demek istedin yoksaa farklı bi entegremi iyi calısmalar
Ordaki liste o işlemci için kullanabileceğin kesme çeşitleri. RB0 kesmesi için EXT kelimesi kullanılıyor.
Misal EXT için #INT_EXT direktifi kullanacaksın, bunun ardından kesme fonksiyonunu yazacaksın.
Bu direktif en azından benim kullandığım derleyici versiyonunda fonksiyonla aynı satırda olunca hata veriyor. Sende de aynı şey olursa fonksiyonu direktifin bir alt satırına yaz.
Kesme yönetimi için ben direkt registerleri kontrol ediyorum. Ama enable_interrupts(...), disable_interrupts(...) gibi fonksiyonlarla da yapabilirsin. Help dosyasına bak.
< Bu mesaj bu kişi tarafından değiştirildi Liu Kang -- 9 Temmuz 2007; 17:31:45 >
#INT_EXT // kesme geldiğinde program akısı void RB_isr() // buradan devam eder { bas: output_a(1); // 1 degeri a portuna gönderilir. bit_clear(INTCON,1); // RB0/INT harici kesme bayrağı delay_ms(100); // tekrar kullanılmak için sıfırlanır // butona basılmak için beklenir if(input(PIN_B0)==0) // kesme sinyali var mı yok mu? { goto bas; // var ise bas a dön işlemkeri tekrar uygula } // yok ise kesmeyi bitir } // kaldığın yerden devam et
void main() { set_tris_b(1); // RB0/INT ucu giriş yapılır enable_interrupts(INT_EXT); // RB0 harici kesmesi aktif yapılır enable_interrupts(GLOBAL); // kesmelere izin verilir bit_clear(OPTION,6); // kesme düşen kenarda olussun
tekrar: // pice ilk enerji verildiğinde output_a(1); // 1-2-4-8 olarak 1 sn aralıkla delay_ms(1000); // saymaya baslar output_a(2); // bu değerler portaya çıkış olarak verilir delay_ms(1000); output_a(4); delay_ms(1000); output_a(8); delay_ms(1000); goto tekrar; }
167877 ve CCS pic C kullanarak basit bir interrupt uygulama örneği verebilir misiniz.örneğin led yanıyor fakat rb0 daki butona basınca led sönecek.bu uygulamayı interrupt ile yapabilir miyiz.teşekkürler...