MOSTEM Teknik Öğretmenleri Mikrodenetleyici MOSTEM Teknik Öğretmenleri
KULLANILACAK KOMUTLAR #use _fast_io(port adı) Bu komut ile mikrodenetliyicinin hangi portunun hangi pinlerinin giriş/çıkış olacağını set_tris_x() komutu ile biz belirleriz. #use fast_io(b) //hangilerinin giriş hangilerinin çıkış olacağını kullanıcı belirleyecek. void main(){ Set_tris_b(0b00110110); //b0,b3,b6 ve b7 GİRİŞ //b1,b2,b4 ve b5 ÇIKIŞ }
use_fixed_io(port adi_outputs=pin_ismi,pin_ismi_pin_ismi,…) Bu komut belirtilen pinlerin ÇIKIŞ olarak ayarlanmasını sağlar. Geri kalan tüm pinler ise GİRİŞ olur. #use_fixed_io(d_outputs=pin_d5,pin_d6,pin_d7); // belirtilen pinler ÇIKIŞ iğer tüm pinler GİRİŞ olur.
Eğer (if) karar yapısı TEK YÖNLÜ KARAR YAPISI Mikrodenetleyici için C programlamada karar yapısı olarak, if deyimi kullanılır. Karar yapısına gelen bir değer, tanımlanan şart ifadesine göre doğru ise if deyiminin altındaki program deyimi veya deyimleri çalıştırılır. if deyiminin bu şekildeki kullanımı tek yönlü karar ifadesi olarak adlandırılır. Tek yönlü karar yapısı aşağıdaki gibidir.
if (şart ifadesi) program deyimi; else
if (şart ifadesi) { program deyimi; } else
ÇİFT YÖNLÜ KARAR YAPISI Çift yönlü karar yapısında şart ifadesine uymayan değerler için başka bir şart ifadesi kullanılıyorsa böyle bir yapı iç içe karar yapısı olarak adlandırılır. İç içe karar yapısında her şart ifadesi bir öncekine bağlıdır.
Daha önce yaptığımız uygulamalarda, istenilen bir koşul sağlandığında bir işlemi gerçekleştiren programlar yazdık. Bazı durumlarda bir koşul gerçekleştikten sonra, bir işlemi yaptırabilmek için; ikinci bir koşulun daha gerçekleşmesi gerekebilir. Bu tür durumlarda İç-içe IF yapılarından yararlanılır.
if (şart ifadesi) program deyimi; else if (şart ifadesi) { } else
Mikrodenetleyici için yazılan basit bir programı örnek alalım Mikrodenetleyici için yazılan basit bir programı örnek alalım. Program uygulama devresindeki butona basılmasıyla LED’in ışık vermesi işlemini yapmaktadır.
#include<18f4550.h> #fuses HSPLL,PLL5,CPUDIV1,VREGEN,WDT,NOPROTECT,NOLVP,NODEBUG,INTRC_IO,NOMCLR #use delay(clock=4M) #use fixed_io(d_outputs=pin_d0) #define led pin_d0 void main(){ while (true){ if(input(pin_b2)==1) output_high(led); Else output_low(led); }
Örnek Program #use fixed_io(d_outputs=pin_d1) if(pin_d0==1) => BUTONA BASILDI MI ? { if(pin_d0==0) => BUTON BIRAKILDI MI ? { output_high(pin_d1); } }
Örnek Programın Açıklaması Örnek programa göre, ilk olarak butona basılma durumu kontrol edildi. Butona basılmışsa, butonun bırakılma durumu kontrol edildi. Buton bırakılmışsa LED ışık verdi. Yani butona bir kez basılıp- bırakıldıktan sonra istenilen işlemin yapılması sağlandı.
Örnek Program buton=input(pin_d0); if(buton==1) => BUTONA BASILDI MI ? { delay_ms(500); if(buton==0) => BASILDIKTAN SONRA BIRAKILDI MI ? { output_high(pin_d2); =>BASILDIKTAN SONRA BIRAKILDIYSA LED IŞIK VERİR } else { output_low(pin_d2); => BIRAKILMADIYSA LED IŞIK VERMEZ. } }
Örnek Program buton=input(pin_d0); if(buton==1) => BUTONA BASILDI MI ? { delay_ms(500); if(buton==0) => BASILDIKTAN SONRA BIRAKILDI MI ? { output_high(pin_d2); =>BASILDIKTAN SONRA BIRAKILDIYSA D2 IŞIK VERİR. } else { output_high(pin_d3); => BIRAKILMADIYSA D3 IŞIK VERİR. } }
if(buton==1) { delay_ms(500); if(buton==0) { delay_ms(2000); output_high(pin_d2); } else { output_high(pin_d3); } } else { output_d(0b00000000); }
if(buton1==1) { delay_ms(500); if(buton==0) { delay_ms(2000); output_high(pin_d2); } else { output_high(pin_d3); } } else if(buton2==1) { output_d(0b10101010); } else { output_d(0b00000000); }