Bu dersimizde kontrol komutlarını inceleyelim. Geçen derslerde FOR ve WHILE komutlarını yani DONGÜ komutlarını görmüştük. Bu dersin sonunda da IF ve SWITCH gibi KONTROL komutlarını göreceğiz.

Bir programlama dilinde KONTROL ve DONGÜ komutlarını öğrendiysek gerisi hayal gücümüze kalmış. Hele bir de dizileri görürsek –bir sonraki dersimizin konusu- bu işi bitirdik sayılır.

IF KONTROLU:

En önemli kontrol komutumuz şüphe yok ki IF yapısıdır. C dilindeki IF yapısı aynen Programlarımızda geçerli olacaktır. Öyleyse Söz dizimine bakalım:


If (Şart)

{

Şart uyuyorsa yapılacaklar

}


If kontrolünün bir gelişmiş yapısı:


If (şart)
{ şart uyuyorsa yapılacaklar}

Else
{şart uymuyorsa yapılacaklar}


ÖRNEK:

if (a > 12)

{

Yazdır “a değeri 12'den büyük!”

}

else

{

Yazdır “a değeri 12'den küçük!”

}

Programlama Dilimizde yazdır diye bir komut olsaydı a değerinin durumuna göre ekrana ya"a değeri  12 den büyük!" ifadesi ya da "a'nın değeri 12 den küçük!" ifadesi yazılacaktı.

Şimdi IF kontrolünü öğrendiğimize göre Bir Örnek yapalım.

PORTC ye bağlı anahtara basılınca PORTB de bağlı olan ledleri yakan bir program geliştirelim:

void main()

{

TRISB = 0;
TRISC.F0 = 1;
PORTB=0;

while(1)
{

if (PORTC.F0==1)

PORTB= 255;

else

PORTB= 0;

Delay_ms(100);

}

}

Programı anlatalım:

TRISB=0 komutuyla PORTB’nin tüm pinleri çıkış olarak ayarladık.
TRISC.F0=1 satırı PORTC’nin 0. bitini giriş olarak ayarlamamızı sağladı. Çünkü buraya bir giriş elemanı olan Anahtar bağlayacağız. Bu giriş elemanı bir sıcaklık sensoru de olabilirdi mesela. İnşallah ilerleyen haftalarda bir Termometre yapmak nasip olur.

PORTB=0 ile bir bayram temizliği yaptık. Geçen derslerde belirttiğimiz üzere buraya kadar ki satırlar hemen hemen her programımızda ufak değişikliklerle olacaktır. Bundan sonrası asıl programımız:

While(1) satırı bize sonsuz bir döngü sağlar, daha doğrusu bu komutun başla ve bitir { } işaretleri arasındaki komutlar biz programımızı durdurana ya da elektrikler kesilinceye kadar sürekli döner durur.

Kontrol satırımızda bir if kontrolü görüyoruz. PORTC’ye bağlı anahtara basılı olup olmadığını kontrol ediyor. Aslında basılı olup olmadığını kontrolden ziyade bu uca +5v mu yoksa GND mi geldiğini kontrol ediyor. Biz anahtar olayını devremizde tasarlıyoruz.

if (PORTC.F0==1) komutu şöyle der bizlere:

Eğer PORTC’nin 0.bitinin değeri logic olarak 1 ise yani bu uca +5 V gelmişse

PORTB=255 olsun yani PORTB’nin bütün uçlarına +5V ver. Bu uçlarda birer led, ledler de toprağa bağlıysa devre tamamlanacak ve ledler yanacaktır.

Else

PORTB=0;

Bu iki satır bize şunu der: yukarıdaki if satırı şartı sağlamıyorsa gel bu satırı icra et. Yok eğer yukarıdaki şart sağlandıysa yukarıyı zaten işledin beni atla.

Yani bu iki satırı if ve elseyi toptan açıklayacak olursak:

Eğer PORTC’nin 0.biti 1 ise yani anahtara basılmışsa PORTB=255 olsun yani LEDLER yansın.

Yok eğer PORTC nin 0.biti 1 değilse yani anahtara basılmamışsa PORTB=0 olsun yani ledler sönük kalsın.

Son satırımızdaki 100 ms saniyelik bir gecikme komutudur. Niye oraya konduğunu siz düşünün. Konmasa ne olurdu mukayese yapın.

Şimdi yukarıdaki programımızı MikroC derleyicisine yeni proje oluşturduktan sonra yazıp derledikten sonra PROTEUS’A gidip aşağıdaki devreyi kurunuz. Ve programımızı deneyiniz.


NOT: oluşturduğunuz MikroC dosyalarını Ve PROTEUS dosyalarını düzenli bir şekilde saklayınız. Her iki dosya türü için birer klasör açıp bir arşiv oluşturunuz.
NOT 2: proteusta yazdığım programı nasıl denerim diyorsanız ders 2 ye göz atınız.

NOT 3: dikkatli okuyucalardan kaçmamıştır, programımızda if kontrolünden sonra { ve } ifadelerini yazmadık. o zaman şöyle diyebiliriz: if kontrolünün altında işlenecek sadece 1 adet satırımız varsa başla ve bitir ifadelerine gerek yok.

aynı şekilde de else komutu için de geçerlidir bu. ama else komutunun altında 2 adet satır var diyorsanız derim ki ikinci satır yani delay komutu else değil programın geneline aittir. Yani derleyicim else nin ya da if in altında birden çok satır görse ama başla bitir işaretlerini bulamasa sadece ilk satırı kontrolün satırı olarak alır.

Bir dahaki dersimizde SWITCH kontrolünü Ve IF ELSEIF kontrolünü görelim. Bu öğrendiklerimizi de bir 0-9 arası sayıcı programında kullanalım.

Anahtar Kelimeler: Mikrodenetleyici

peynir6 suyu tozu , 06/05/2008-09:52 Facebook'ta Paylas