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ör | Anlamı | Örnek |
|---|---|---|
| == | Eşittir | a == 5 |
| != | Eşit değildir | a != 5 |
| > | Büyüktür | a > 5 |
| < | Küçüktür | a < 5 |
| >= | Büyük veya eşittir | a >= 5 |
| <= | Küçük veya eşittir | a <= 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.
unsigned char sayi;
Kod:
void main() {
sayi = 5;
if (sayi == 5) {
PORTB.F0 = 1;
}
else {
PORTB.F0 = 0;
}
}
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;
}
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;
}
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;
}
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ışı
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
- PIC16F628A'nın karşılaştırıcıları kapatılır.
- RA0 ve RA1 giriş, PORTB ise çıkış olarak ayarlanır.
- Program sürekli olarak iki butonun durumunu kontrol eder.
- Her iki giriş de lojik 1 olduğunda RB0 çıkışı lojik 1 olur.
- Butonlardan biri bırakıldığında RB0 çıkışı lojik 0 olur.
6. Kısa Alıştırmalar
Öğrendiklerinizi pekiştirmek için aşağıdaki soruları çözmeye çalışın.- Bir değişkenin 10'a eşit olup olmadığını hangi operatörle kontrol ederiz?
- İki butondan herhangi biri basıldığında LED'in yanması için hangi mantıksal operatör kullanılmalıdır?
- İki butona da basılmasını şart koşmak için hangi operatör kullanılmalıdır?
- = ile == arasındaki fark nedir?
- 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.