Elektrik Devreleri,Elektronik Devreler

Elektrik Dersleri, devre analiz dersleri, üniversite elektrik dersleri, üniversite elektrik elektronik dersleri,

Responsive Ads Here

13 Temmuz 2015 Pazartesi

PIC PROGRAMLAMA DERSLERI 11

PİC PROGRAMLAMA-11

Merhaba arkadaşlar.Bügün CAPTURE(YAKALAMA) MODU uygulamasını yapacagız.Capture birimi aynı timer birimlerinde kullanıldıgı gibi sayıcı olarak kullanılmaktadır.Tek farkı kod kalablıgından bizi kurtarmaktadır.
Capture modunda RC1 ve RC2 pinine gelen sinyale göre degerlendirilir.Bunlardan herhangi birisine sinyal geldiginde TMR1 kaydecisi içerigi CCPRxH;CCPRxL içerigine aktarılır ve bir kesme meydana gelir.İkinci bir yakalama olayı meydana geldiginde o anki TMR1 degeri içerigi tekrardan aktarılır,eski CCPRxH;CCPRxL nin eski degerleri silinmiş olur.
-Sinyalin her düşen kenarında (ccp_capture_fe)
-Sinyalin her yükselen kenarında (ccp_capture_re)
-Sinyalin her 4 yükselen kenarından sonra (ccp_capture_div_4)
-Sinyalin her 16 yükselen kenarından sonra (ccp_capture_div_16)

Gelelim kod kısmına;


#include <main.h>
int i=0;
#int_ccp1//CCP1 KESMESİ
void yak() {i++;//i degeri birer birer arttırılıyor
output_b(i);//i degişkeni b portuna gönderiliyor
if(i==16)//i degiÅŸkeni 16 ya eÅŸit ise
{i=15;//i yi 15 yap
output_b(i);//i degişkenini b portuna gönder
}}
#int_ccp2//CCP' KESMESİ
void sondur(){i--;//i degiÅŸkenin bir azalt
output_b(i);//i degişkenini b portuna gönder
if(i==0)//ii degiÅŸjenini kontrol et
{i=1;//i ye 1 degerini ata
output_b(i);//i degişkenini b portuna gönder
}}
void main()
{setup_ccp1(ccp_capture_re);//CCP1 kesmesi ayarlaması
setup_ccp2(ccp_capture_re);//CCP2 kesmesi ayarları
enable_interrupts(int_ccp1);//ccp1 kesmesi aktif ettik
enable_interrupts(int_ccp2);//ccp2 kesmesini aktif yaptık
enable_interrupts(global);//aktif yapılan kesmelere izin verdik
set_tris_b(0*00);//b pinlerinin çıkış oldugu ifade edildi
set_tris_c(0xff);//c pinlerinin giriş olacagı ifade edildi
output_b(0*00);//b çıkışımızı sıfırladık
ccp_1_high=0*00;ccp_1_low=0*00;//CCP1 kaydedicimizin içerigini sıfırladık
ccp_2_high=0*00;ccp_2_low=0*00;//CCP2 kaydedicimizin içerigini sıfırladık

   while(TRUE)
   {
      //TODO: User Code
   }

}

Hiç yorum yok:

Yorum Gönder