MİKRODENETLEYİCİLER DERSİ NOTLARI
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
}
- 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.
- 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.
- 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.
- Koşul İfadeleri
- 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