Çalışmalarım - Yazılarım - Tecrubelerim

MikroC de KÜTÜPHANE HAZIRLAMA

This post is also available in: English (İngilizce)


Video Anlatım

Kütüphane Hazırlamak

Kütüphaneler Hangi Dosyalardan Oluşur

  1. Fonksiyonlar
  2. Header ve Port Tanımlamaları

Kütüphaneler Yapılsal Olarak Nasıl Yazılmalıdır?


KÜTÜPHANE HAZIRLAMAK

mikrocde Kütüphane Hazırlama
Kütüphane hazırlayarak sensör dışında matematiksel işlemleri ve sürekli yapmamız gereken “LED yak-söndür” işlemlerini de kolaylıkla yapabiliriz
  • Kütüphane aslında çok yakından bildiğimiz bir konu. Bilgisayara yeni bir ekran kartı aldığımızda “driver” kurulumu yaparız böylece bilgisayarımız ekran kartını tanımış olur ve kullanır. İşte kütüphane dediğimiz yazılımlar bu “driver” oluyor.
  • Yani herhangi bir ekranı , sensörü , ram vb. donanımı PIC yada farklı MCU lar ile kullanmak veya bir takım hesaplamaları yapmak için kütüphaneler yazılır.(örnek: CRC kütüphanesi bir donanım kullanmaz ancak veri üzerinde gerekli CRC kodunu hesaplar )
  • MikroC içerisinde birçok hazır kütüphane mevcut fakat ben kendi kütüphanemi yazmaktan yanayım  hazırı olsa da, çünkü hazır demek kısıtlanmak demektir. Kendi kütüphanemi yazmak zor olabilir ancak sınırsız bir özgürlük vaad etmektedir.
  • Bu sebeple ne konuda olursa olsun kendi kütüphanelerimi yapıp paylaşmaya devam edeceğim ;)

 

KÜTÜPHANELER HANGİ DOSYALARDAN OLUŞUR

  • Kütüphaneler Header dosyasıFonksiyon dosyası ve Main dosyasından oluşur.
  • Main her zaman program yazdığımız bölgedir. Ana program burada bulunur.
  • Fonksiyon dosyası ise yeni bir   .c dosyası açıp kayıt ederiz. Yeni sistem ile ilgili fonksiyonları burada oluştururuz. Fonksiyon dışında en üstte oluşturulan değişkenler global olarak işlem görürler
  • Header dosyalarında fonksiyon deklerasyonu yapılır ve portlar ile ilişkilendirilecek değişkenler belirlenir.

NOT: Bu dosyaları kullanmak için Fonksiyon dosyasına header dosyası include edilir ve main dosyasınada fonskiyon dosyası include edilir.

-Fonksiyonlar

mikroc-ders-hazirlama-fonksiyonlar
Fonksiyonların harici .C dosyasına yazılması(büyütmek için resme tıklayın)
  • Kütüphaneler başlı başına bir fonksiyon kümesidir.
  • Fonksiyonlar hazırlanırken mutlaka tek işleme uygun yapılmalıdır çok mecbur kalınmadıkça asla bir fonksiyon birden çok işlem yapmamalıdır.
  • Fonksiyon isimleri mutlaka yaptığı işe uygun belirlenmelidir.
  • Fonksiyonlar sürekli yapılan işlem yada hesaplamarın kolay kullanımı için yazılırlar
  • Fonksiyonların tipini belirlerken mutlaka geriye döndürecek değer göz önüne alınmalı ve return yerine global değişken kullanıp kullanılmamasından hangisinin daha verimli ve mantıklı olduğuda ayrıca düşünülmelidir.
//FONKSİYON DOSYASI 
//Aşağıda örnek olarak hazırlanmış 2 adet fonksiyon görülmektedir

#include "header.h"//header dosyası fonksiyon dosyasına çağırılmıştır

//1. fonksiyon
void LED_YAK(unsigned char sure)
{
  LED_TRIS=0;//bu değişken header dosyasında belirtildi- main de portun giriş-çıkış ayarını 
             //yapılması için ilişkilendirecek şu durumda port çıkış durumundadur
  LED=0;//bu değişken header dosyasında belirtildi - mainde istenilen port ile ilişkilendirilecek
  vdelay_ms(sure*saniye);//saniye headerda #define komutu ile 1000 rakamına eşitlendiğinden 
                         // şu an parantez içi aslında sure*1000 dir 
  LED=1;
}

//2. fonksiyon
void LED_FLASH(unsigned char flash_sure , unsigned char yanma_suresi)//fonksiyonlar değer döndürmedğinde void değer alır
{
  int i;
  LED_TRIS=0;
  for(i=0;i<yanma_suresi;i++)
   {
    LED=0;
    vdelay_ms(flash_sure*saniye);
    LED=1;
    vdelay_ms(flash_sure*saniye);
   }
}

 

-Header ve Port Tanımlamaları

mikroc-ders-hazirlama-include
.h header dosyası hazırlanışı, pin tanımalamarı yapılıyor( büyütmek için resme tıklayın)
  • Fonksiyonlar dışında “header” dosyasıda bulunur. Bu dosyalar fazla karmaşık değildir. Pin tanımlamaları ve fonksiyon deklarasyonları burada yapılır.
  • Pin tanımlamasının anlamı PIC te bulunan portların bir isme yönlendirilebilmesini sağlamaktır. Aşağıdaki örnekte LED adında sadece 0 yada 1 olabilen (sbit anlamı budur) bölge tanımlanır. Bu tıpkı port gibi hareket eder. Main programda ise PIC portu bu bölge ile istenildiği gibi ilişkilendirilerek kullanılır.
  • Extern dışallık komutudur. Derleyiciye bu bölgenin dışarı ile bağlantılı olacağını belirtir.
  • Port tanımlarken eğer 1 bitlik işlem yapılacaksa sbit kullanılır. Ancak tüm bir port kullanılacaksa ( LCD lerde 8 bitlik data girişlerine tam bir port bağlanır) tanımlama “extern sfr char LED”  şeklinde yapılmalıdır. Bu halde mainde de tanımlarken “sbit LED at portb” şeklinde kullanılır. Bu durumda tüm port aynı anda kullanılabilir.” sbit LED at portb” yapıldığında LED=125; denirse  125 = 01111101 bu halde tüm 8 adet port 125 in binary karşılığındaki duruma gelir.
header.h Kodları 
extern sfr sbit LED;//port ilişkilendirilmesi için tanımlanan değişken 
extern sfr sbit LED_TRIS; //portun giriş yada çıkış ayarını yapmak için oluşturulan değişken
#define saniye 1000 // saniye yazılan heryerde 1000 rakamı işlem görecektir

 

KÜTÜPHANELER YAPISAL OLARAK NASIL YAZILMALIDIR?

mikroc-ders-hazirlama-main
Ana(main) bölümde kargaşa azalır ve kontrol artar(büyütmek için resme tıklayın)
  • Bir çok programda olduğu gibi MikroCde de kütüphane dosyaları içeriği okunamaz yada sizde yazdığınız kütüphanenin kullanılabilmesini fakat içeriğinin değiştirilmemesini isteyebilirsiniz. Ne şekilde olursa olsun kütüphane dosyaları esnek şekillerde yazılmalıdır.
  • Esneklikten kastım , kütüphanelerde bulunan fonksiyonlar dışarıdan değiştirilebilir parametrelere sahip olmalıdır. PORT değerleri mutlaka dışarıdan kullanıcı tarafından istenildiği gibi değiştirme imkanı bulunmalıdır.Aksi taktirde kütüphane kullanılamaz ve anlamsız olur.
  • Bu sebeple kütüphaneleri yazarken olabildiğince şartları – olasılıkları – ihtiyaçları düşünüp sistemleri bu veriler ışığında tasarlandıktan sonra yapılmalıdır yoksa çalışmalarımız bir zaman kaybı olur.
  • Kütüphanenin rastgele değil bir sistem olduğunu unutmayın. Öncelikle sonuca varılacak sistem tasarlanmalı buna göre işlevsel fonksiyonlar yazılmalıdır. Ayrıca bir kütüphane için birden fazla .c dosyası oluşturulup kullanılabilir. Bu farklı konularda okunabilirliği ve düzeni sağlar.
  • Ders temel seviyede C dilini bilenlere hitap etmektedir eğer bu dili yeni öğreniyorsanız veya öğrenmek istiyorsanız “C Öğrenmek İçin Hangi Kitaplar???” yazımı okumanızı öneririm!
  • Daha detaylı bilgi için aşağıdaki video dersi izleyebilirsiniz
led_yak.c Kodları
#include "fonksyonlar.c"//FONKSİYONLARIN YAZIDIGI DOSYA INCLUDE EDILIR

sbit LED at RB4_bit;//PORT YÖNLENDİRMESİ YAPILIR BUNA GÖRE FONKSİYONDA LED YAZAN HER YERDE "RB4" PORTU KULLANILACAK
sbit LED_TRIS at TRISB4_bit;//YÖNELDİRİLEN PORTUN GIRIS CIKIS OLUP OLMADIGININ AYARLANMASI SAĞLANIR.BUNA GÖRE FONKSIYONDA LED_TRIS=1
                            //İSE BU PORT GIRIS OLACAKTIR
main()
{
  LED_YAK(5);
  delay_ms(2000);
  LED_FLASH(2,10);
}

“MIKROC KÜTÜPHANE HAZIRLAMA” VİDEO DERS


This post is also available in: English (İngilizce)

About ERCAN KOÇLAR

Çalışmalarım çocukken başladı kolonyalı kağıtları yakmak, ilaçları birbirine katmak gibi değişik deneylerim vardı. Kimya kitabında elektroliz ile suyun hidrojen ve oksijene ayrıldığı ve hidrojenin yandığını yazıyordu, o zamanlarda aklım almıyordu sudan nasıl yanan....Devamını okumak için tıklayınız ;)