PIC İLE BUTTON KONTROLÜ

CCS C derleyicisi ve PIC 16F877 ile button kullanarak led yakıp söndürme uygulaması. CCS C kodları ve devre şeması.




Mikroişlemcilerle çalışırken bize lazım olan en temel şeyler mikroişlemcinin portlarını kontrol etmektir. Çünkü bunu yapamazsak zaten program yazabilmemiz mümkün olmaz.

Mikroişlemcinin portlarını kontrol etmekten söz ederken bu portlara veri göndermekten ve bu portlardan veri almaktan söz ediyoruz.

Tabii ki eğer bu portlara veri gönderecek veya bu portlardaki verileri okuyacaksak bunu program içerisinde kodlarla yapmamız gerekecek.

Bir porta veri göndermek için o portu input, yani veri giriş portu yapmamız gerekiyor. Porttan veri okumak içinde o portu çıkış yapmamız gerekiyor.

Örneğin A portunun tüm pinlerini giriş olarak ayarlayalım.

      set_tris_a(0xFF);

B portunun tüm pinlerini giriş olarak ayarlamak istersek;

      set_tris_b(0xFF);

B portunun tüm pinlerini çıkış olarak ayarlamak istersek

      set_tris_b(0x00);

B portunun belirli pinlerini giriş belirli pinlerini çıkış yapmak istersek;

      set_tris_b(0b11001010);

Şeklinde komutlar kullanabiliriz.

Bir a portunun belirli bir pinindeki değerin 1 mi yoksa 0 mı olduğunu anlamak için kullanacağımız kod.

         if(input(PIN_A0)==0)
      {
           output_b(0b00000001);
          
      }
      else
      {
         output_b(0b00000000);
      }

Yukarıdaki örnek kod A portunun ilk pinini kontrol eder. Okunan değer 1 ise B portunun ilk pinini 1’e eşitler, değilse B portunun ilk pinini 0 yapar.


Örnek uygulamamızda bir button birde led kullanacağız, buttona basınca led yanacak, buttonu bırakınca led sönecektir.

Devre Şeması


Program Kodları


  
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD 
#use delay(clock=4000000)   




void main()
{
   while(TRUE)
   {
      setup_psp(PSP_DISABLED);        
      setup_timer_1(T1_DISABLED);     
      setup_timer_2(T2_DISABLED,0,1); 
      setup_adc_ports(NO_ANALOGS);    
      setup_adc(ADC_OFF);             
      setup_CCP1(CCP_OFF);            
      setup_CCP2(CCP_OFF);            
      set_tris_b(0x00);    
      set_tris_a(0xFF);
      output_b(0x00);      
      output_a(0x00);
      
   while(TRUE)
   {
   
      if(input(PIN_A0)==0)
      {
           output_b(0b00000001);
          
      }
      else
      {
         output_b(0b00000000);
      }
     
     
   }
   }
}


PIC 16F877 YURUYEN ISIK

ÇOKLU LED KULLANMA



SANATSAL BİLGİ

25/10/2016

  • YORUM YAZ
  • ADI SOYADI(veya nick)
  • YORUM

COPYRIGHT© HER HAKKI SAKLIDIR
Sitede Yer Alan Bilgi Belge Ve Materyallerin İzinsiz olarak Kopyalanması ve Alıntılanması Yasaktır

SANATSAL BILGI