Bu dersimizde PIC C dilindeki dijital giriş işlemlerini ele alacağız. Bildiğiniz üzere dijital girişler iki sinyalden oluşur.
Bunlar;
Şimdi PIC C dilindeki dijital giriş okuma fonksiyonlarını ele alalım. 3 temel dijital giriş okuma fonksiyonumuz bulunmaktadır. Bunlar;
Şimdi bu fonksiyonlarımızı teker teker inceleyelim.
Bu fonksiyonumuz belirli bir portun belirli bir pininin lojik değerini okumak için kullanılır. parametre olarak port adı ve pin numarasını alır.
Sözdizimi; INPUT(pin_B0);
Şimdi bunu basit bir buton uygulaması ile örneklendirelim.
Örneğin B portu 0 nolu pinine bağlı bir butonumuz olsun ve biz o butona basınca C portu 0 nolu pine bağladığımız ledimiz yansın. Kodlarımız şu şekilde olacak;
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <16f877A.h> // Mikrodenetleyici tanımlama dosyasını ekliyoruz #use delay(crystal=20000000) // Kristal osilatör frekansını giriyoruz void main(){ // ana fonksiyonumuz while(TRUE){ // sonsuz döngümüz if(INPUT(pin_B0) == TRUE){ // eğer B0 pini +5V ise output_high(pin_C0); // C0 pinini +5V yap }else{ // değilse output_low(pin_C0); // C0 pinini 0V yap } } } |
Kodlarımızı açıklamalarıyla yazıp derlediğimize göre şimdi aşağıdaki devreyi kurup kodlarımızı deneyelim;
Yukarıdaki devrede eğer butona neden 10k değerinde direnç bağladığımızı merak ederseniz, Pull-Up ve Pull-Down Direnç Nedir yazımıza göz atabilirsiniz.
Bu fonksiyonumuz ise bir porta ait tüm pinlerinin durumunu okumak için kullanılır. Geriye dönüş değeri integer türündendir.
Sözdizimi; int bPortu = INPUT_B();
Örneğin B portumuzun tüm pinlerine anahtar, C portumuzun tüm pinlerine led bağladığımızı düşünelim. Kapattığımız her anahtar için C portunun aynı numaralı pinine bağlı led yansın istiyoruz. Biz B portunda hangi anahtarların kapalı, hangilerinin olduğu bilgisini almak istersek bu fonksiyonu aşağıdaki örnekteki gibi kullanacağız.
1 2 3 4 5 6 |
void main(){ // ana fonksiyonumuz while(TRUE){ // sonsuz döngümüz int bilgi = input_B(); // B portunun tüm pinlerini oku ve bilgi değişkenine aktar output_C(bilgi); // bilgi değişkeni değerini C portuna yaz } } |
Şimdi yukarıdaki kodlarımızı açıklamak gerekirse;
Bu komut istene pinin giriş mi yoksa çıkış mı olduğunu öğrenmek için kullanılır. Eğer belirtilen pin giriş ise 1, çıkış ise 0 değerini döndürür.
Sözdizimi; input_state(pin_numarası);
Örnek olarak B portunun 6 numaralı pininin giriş mi, yoksa çıkış pini mi olduğunu öğrenelim;
1 2 3 4 5 6 7 8 |
void main(){ int1 pindurumu; // pinDurumu adında değişken oluşturduk pinDurumu = input_state(pin_B6); // B portunun 6 numaralı pininin durumunu // pinDurumu değişkenine atadık /* * Eğer "pinDurumu" değişkeni değeri 1 ise, pin giriş pinidir, * eğer "pindurumu değişkeni değeri 0 ise, pin çıkış pinidir. } |
Bu kategorideki bir sonraki dersimizde döngüleri ele alacağız. Uygulamada takıldığınız herhangi bir yer olursa alt kısımda bulunan yorum bölümünden sorabilirsiniz.