PIC Programlama Dersleri 6 – Mantıksal ve Karşılaştırma Operatörleri

guclusat

Tanınmış Üye
Süper Moderatör

PIC Programlama Dersleri 6: Mantıksal ve Karşılaştırma Operatörleri – MikroC PRO for PIC​

Bu derste, PIC mikrodenetleyicilerde bir veya birden fazla koşulu kontrol etmeyi öğreneceğiz. MikroC PRO for PIC programlama dilinde kullanılan karşılaştırma ve mantıksal operatörler sayesinde buton durumlarına göre LED yakabilir, farklı girişleri kontrol edebilir ve daha gelişmiş kontrol devreleri hazırlayabiliriz.

Örneklerimizde PIC16F628A mikrodenetleyicisini kullanacağız.

1. Karşılaştırma Operatörleri​

Karşılaştırma operatörleri, iki değeri karşılaştırarak sonucun doğru veya yanlış olduğunu belirler. Genellikle if ve else komutlarıyla birlikte kullanılır.

OperatörAnlamıÖrnek
==Eşittira == 5
!=Eşit değildira != 5
>Büyüktüra > 5
<Küçüktüra < 5
>=Büyük veya eşittira >= 5
<=Küçük veya eşittira <= 5

Önemli:​

Bu iki operatörün görevleri birbirinden farklıdır.
  • a = 5; değişkenine 5 değerini atar.
  • a == 5 değişkenin değerinin 5 olup olmadığını kontrol eder.
Örnek:

unsigned char sayi;

Kod:
void main() {
sayi = 5;

if (sayi == 5) {
PORTB.F0 = 1;
}
else {
PORTB.F0 = 0;
}
}
Bu programda sayi değişkeninin değeri 5 olduğu için RB0 çıkışı lojik 1 yapılır.

2. Mantıksal VE Operatörü (&&)​

Mantıksal VE operatörü, iki koşulun da doğru olmasını ister. Koşullardan biri yanlışsa bütün ifade yanlış olur.

Örnek:
Kod:
if (PORTA.F0 == 1 && PORTA.F1 == 1) {
PORTB.F0 = 1;
}
else {
PORTB.F0 = 0;
}
Bu programda RB0 çıkışının lojik 1 olması için hem RA0 hem de RA1 girişinin lojik 1 olması gerekir.

Kullanım alanı: İki ayrı butona aynı anda basıldığında bir çıkışı etkinleştirmek veya iki farklı şart gerçekleştiğinde bir işlemi başlatmak.

3. Mantıksal VEYA Operatörü (||)​

Mantıksal VEYA operatöründe koşullardan en az birinin doğru olması yeterlidir.

Kod:
if (PORTA.F0 == 1 || PORTA.F1 == 1) {
PORTB.F0 = 1;
}
else {
PORTB.F0 = 0;
}
Bu örnekte RA0 veya RA1 girişlerinden herhangi biri lojik 1 olduğunda RB0 çıkışı lojik 1 olur.

Kullanım alanı: İki farklı butondan herhangi biriyle aynı cihazı çalıştırmak veya birden fazla alarm girişini kontrol etmek.

4. Mantıksal DEĞİL Operatörü (!)​

Mantıksal DEĞİL operatörü, bir koşulun sonucunu tersine çevirir.

Kod:
if (!(PORTA.F0 == 1)) {
PORTB.F0 = 1;
}
else {
PORTB.F0 = 0;
}
RA0 girişinin değeri 1 değilse RB0 çıkışı lojik 1 yapılır.

Aynı kontrol daha sade biçimde şöyle yazılabilir:

if (PORTA.F0 == 0) {
PORTB.F0 = 1;
}
else {
PORTB.F0 = 0;
}
Bu örnekte iki kodun yaptığı işlem aynıdır.

5. Uygulama: İki Butonla LED Kontrolü​

Şimdi öğrendiğimiz operatörleri kullanarak iki butonla bir LED kontrol edelim.

Gerekli malzemeler​

  • 1 adet PIC16F628A mikrodenetleyici
  • 2 adet buton
  • 1 adet LED
  • LED için uygun seri direnç
  • Buton girişleri için uygun pull-up veya pull-down dirençleri
  • Deney kartı ve bağlantı kabloları

Bağlantılar​

  • RA0: Birinci butonun dijital giriş sinyali
  • RA1: İkinci butonun dijital giriş sinyali
  • RB0: LED çıkışı
Buton girişleri tanımlı bir lojik seviyede tutulmalıdır. Girişler boşta bırakılırsa kararsız değerler okunabilir. Aşağıdaki örnekte butonlar bırakıldığında RA0 ve RA1 girişlerinin 0, basıldığında 1 olduğu varsayılmıştır. Bunun için uygun pull-down bağlantısı kullanılmalıdır.

MikroC PRO for PIC kodu​

Kod:
void main() {
CMCON = 0x07;       // Karşılaştırıcıları kapat
TRISA = 0b00000011; // RA0 ve RA1 giriş
TRISB = 0b00000000; // PORTB çıkış
PORTB = 0x00;       // Çıkışları başlangıçta sıfırla

while (1) {
if (PORTA.F0 == 1 && PORTA.F1 == 1) {
PORTB.F0 = 1;
}
else {
PORTB.F0 = 0;
}
}
}

Programın çalışma şekli​

  1. PIC16F628A'nın karşılaştırıcıları kapatılır.
  2. RA0 ve RA1 giriş, PORTB ise çıkış olarak ayarlanır.
  3. Program sürekli olarak iki butonun durumunu kontrol eder.
  4. Her iki giriş de lojik 1 olduğunda RB0 çıkışı lojik 1 olur.
  5. Butonlardan biri bırakıldığında RB0 çıkışı lojik 0 olur.
Not: LED'in bağlantısını RB0 çıkışına uygun seri dirençle yapın. Gerçek devrede butonların lojik seviyeleri bağlantı şekline göre değişebilir; aktif-düşük bağlantıda koşulların tersine çevrilmesi gerekir.

6. Kısa Alıştırmalar​

Öğrendiklerinizi pekiştirmek için aşağıdaki soruları çözmeye çalışın.
  1. Bir değişkenin 10'a eşit olup olmadığını hangi operatörle kontrol ederiz?
  2. İki butondan herhangi biri basıldığında LED'in yanması için hangi mantıksal operatör kullanılmalıdır?
  3. İki butona da basılmasını şart koşmak için hangi operatör kullanılmalıdır?
  4. = ile == arasındaki fark nedir?
  5. Bir koşulun sonucunu tersine çevirmek için hangi operatör kullanılır?

Sonuç​

Bu derste karşılaştırma operatörlerini (==, !=, <, >, <=, >=) ve mantıksal operatörleri (&&, ||, !) öğrendik. Bu operatörler, PIC mikrodenetleyicilerde buton kontrolü, alarm sistemleri, otomasyon ve koşula bağlı çıkış işlemlerinin temelini oluşturur.

Bir sonraki derste PIC16F628A ile for döngüsü kullanarak tekrarlanan işlemleri gerçekleştirmeyi ve LED yakma uygulamaları yapmayı öğreneceğiz.
 
Geri
Yukarı