CCS C – Mikrodenetleyici Ders Notları

MİKRODENETLEYİCİLER DERSİ NOTLARI

  1. Giriş Çıkış Yönlendirme Komutları

Kullanımı : set_tris_x(değer);           // Portları giriş çıkış yapmak için kullanılır.

Bir pini(bacağı) giriş yapmak için o pine “1”, çıkış yapmak için “0” verilir. A0 pinini giriş yapmak için bu pine 1 vermeliyiz. A0 pinini çıkış yapmak için istersek 0 vermemiz gerekir.

Örnek-1: set_tris_a(0xFF);    // A portuna FF hexadecimal verisini gönderir. Yani A portunu                                         // giriş olarak ayarlar.

Örnek-2 : set_tris_b(0b00001111);  // B portuna binary 00001111 verisini gönderir. Yani B                                                      // portunun sağdaki 4 bitini giriş, soldaki 4 bitini çıkış                                                        // olarak ayarlar.

  1. Yorum Satır(lar)ı Ekleme

Yorum satırları komut olarak algılanmaz. Program içerisinde programın çalışması hakkında açıklamalar eklemek veya yazılan komutların ne anlama geldiğini açıklamak veya kısa hatırlatmalar eklemek için kullanılırlar.

Kullanımı :

// Bu iki sağa eğik slaj karakteri belirlediğiniz satırı yorum satırına dönüştürür.

/*  */ Bu karakterler arasında kalan satır veya satırlar yorum satırı olarak algılanır.

  1. Bir Portun Tamamına Veri Göndermek

Kullanımı : output_x(değer) ;           // Belirtilen porta parantez içinde verilen değeri gönderir.

* Hexadecimal veya binary olarak veri gönderebiliriz.

Örnek-3 : output_b(0x00);    // B portuna hexadecimal 0x00 değerini gönderir. Yani B portunun tüm çıkışlarını 0’a çeker.

Örnek-4 : output_b(0xF0);   // B portuna hexadecimal 0xF0 değerini gönderir. Yani B portunun sağdaki 4 bitine 0, soldaki 4 bitine 1 gönderilmiş olur. Dolayısıyla b portunun sağdaki 4 bitine bağlı olan ledler söner, soldaki 4 bitine bağlı ledler yanar.

Örnek-5 : output_b(0b10101010); // B portuna binary “10101010” değerini gönderir. B portunun tek sayılı bacaklarına bağlı olan ledler sönük, çift sayılı bacaklarına bağlı olan ledler yanık olur.

  1. Tek Bir Pine Veri Göndermek

Kullanımı : output_high(pin_x);       // Belirtilen pini lojik 1 yapar. Yani bağlı olan led yanar.

output_low(pin_x);       // Belirtilen pini lojik 0 yapar. Yani bağlı olan led söner.

output_bit(pin_x, değer);  // Belirtilen bacağa belirtilen değeri gönderir.

output_toggle(pin_x);                        // Belirtilen bacağı 1 ise 0, 0 ise 1 yapar.

Örnek-7 : output_high(pin_B0);       // B0 pinini lojik 1 yapar. Yani B0’a bağlı olan led yanar.

Örnek-8 : output_low(pin_B7);        // B7 pinini lojik 0 yapar.Yani B7’ye bağlı olan led söner

Örnek-9 : output_bit(pin_B5,1);      // B5 pinini lojik 1 yapar.

Örnek-10 : output_bit(pin_B6,0);    // B6 pinini lojik 0 yapar.

Örnek-11 : output_toggle(pin_B3);  // B3 pinini 1 ise 0, 0 ise 1 yapar.

  1. Bir Portun Değerini Okumak

Kullanımı : input_x();           // x ile belirtilen portun değerini okur.

Örnek-12 : input_a();            // A portunun değerini okur.

Örnek-13 : input_b();            // B portunun değerini okur.

Örnek-14 :

int portDegeri;

portDegeri = input_b();          // B portunu okuyup sonucu portDegeri değişkenine atar.

  1. Bir Pinin(Bacağın) Değerini Okumak

Kullanımı : input(pin_x);      // x ile belirtilen pinin durumunu okur.

Örnek-15 :  input(pin_A1)    // A1 pininin değerini okur. (Lojik 1 veya 0)

Örnek-16 : A2 bacağına bir buton bağlı olsun ve bu butona basılı ise B0’a bağlı olan led yansın.

set_tris_a(0x0F);    // A portunu giriş olarak ayarladık.

set_tris_b(0x00);    // B portunu çıkış olarak ayarladık.

output_b(0x00);      // B portunu lojik 0’a çektik.

if( input(pin_A2) )  // Eğer A2 pinine bağlı olan butona basılmışsa;

{

delay_ms(20);             // Buton arkını önleme gecikmesi.

output_high(pin_B0);      // B0 pinini lojik 1 yap. B0’a bağlı                                // olan led yanar.

while( input(pin_A2) );   // Butondan el çekilene kadar bekle.

}

  1. Sağa Kaydırma İşlemi

Kullanımı :  veri = veri >> kaydırma_miktarı;

Örnek-17 :

int a;

a = 0x80;   // a sayısı  = 10000000 ’e eşit.

a = a >> 1; // a sayısı 1 kere sağa kaydırılarak 01000000 oldu.

  1. Sola Kaydırma İşlemi

Kullanımı :  veri = veri << kaydırma_miktarı;

Örnek-18 :

int a;

a = 0x01;   // a sayısı  = 00000001 ’e eşit.

a = a << 1; // a sayısı 1 kere sola kaydırılarak 00000010 oldu.

  1. Zaman Gecikmesi Ekleme

Kullanımı : delay_ms(gecikme_miktarı);

Gecikme miktarı milisaniye cinsinden belirtilir. 1 saniye = 1000 milisaniye. 3 saniye gecikme vermek için 3000 yazmamız gerekir.

Örnek-19 : delay_ms(2000);             // 2 saniye gecikme süresi verildi.

  1. Koşul İfadeleri
  2. if-else İfadesi

Belirlediğimiz şartın doğru olup olmadığını kontrol ederek, doğru olması ve yanlış olması durumunda yapılacak işlemleri belirtir.

Kullanımı :

if ( şart)

{

Şart doğruysa yapılacak işlemler

}

else

{

Şart yanlışsa yapılacak işlemler

}

Örnek-20 : B0 pinine bağlı bir fan olsun ve sıcaklık değeri 50 ve 50’den büyük olduğunda bu fan çalışıp devreye girsin, 50’den küçük olduğunda da fan dursun.

int sicaklik;

sicaklik = 65;  // Sıcaklık değerini bir sensörden aldığımızı düşünelim

if (sicaklik >= 50)  // Sıcaklık 50 ve 50’den büyük ise;

{

output_high(pin_B0); // B0 pinini lojik 1 yap.Yani fanı çalıştır.

}

else // sıcaklık değeri 50’den küçük ise

{

output_low(pin_B0); // B0 pinini 0 yap. Yani fanı durdur.

}

Hazırlayan: Mustafa SOLAK

www.mustafasolak.com