"if "komutu kullanımı nasıl yapılıyor_?

Başlatan ziyaretci, 23 Ocak 2012, 02:20:58

ziyaretci

   
   s.a

  Aşağıda verdiğim .c kodu sıradan bir flip flop kodudur. Ben mesela b1 pini 1 olduğunda a1 pinini yakıp 1 sn sonra söndürmek istiyorum.Teşekkürler.(acemiyim)

KOD:

#include <16F628A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses XT,NOWDT
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
void main ( )
{

set_tris_b(0x00);              //portb çıkış
set_tris_a(0x00);              //porta çıkış
 
while(true)                    //sonsuz döngü
{                               
  output_high(pin_b0);          //pin b0 i yak
     delay_ms(1000);            //1 sn bekle
       output_low(pin_b0);      //pin b0 ı söndür
       output_high(pin_b1);     //pin b1 i yak
     delay_ms(1000);            //1 sn bekle
  output_low(pin_b1);           //pin b1 i söndür
                               
  }
}                   

esensoy

#include <16F628A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses XT,NOWDT
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
void main ( )
{

 set_tris_b(0b00000010);              //B1 giriş, diğerleri çıkış
 set_tris_a(0x00);              //porta çıkış
 
while(true)                    //sonsuz döngü
{
    output_low(pin_a1);                              
    if (input(pin_b1)) {
       output_toggle(pin_a1);
       delay_ms(1000);
     }                        
}
}

if (input(pin_b1)) {
       output_toggle(pin_a1);
       delay_ms(1000);
     }

kısmını
if (input(pin_b1)) {
       output_high(pin_a1);
       delay_ms(1000);
       output_low(pin_a1);
       delay_ms(1000);
     }

diye de yazabilirdik ama ne gerek var değil mi?
En tehlikeli an "zafer" anıdır.

ziyaretci

teşekkürler.
peki if deyimleri input(giriş) mi olmak zorunda?

Kabil ATICI

mesala başka donanım kullanmadan saat yapacaksan saat,dakika saniye sayaçlarındaki sınır değerler için if komutu kullanılabilir. Yada alarmlı saat yaptığında alarm saati geldiğinde saat, dakika karşılaştırılmasında kullanılabilir.

Yada iki değer karşılaştırması yapacaksan, örneğin ölçtüğün sıcaklık değerini sınır değerin altında üstünde kaldığını belirlemek için kullanılabilir.
ambar7

Klein

Alıntı yapılan: erkantr67 - 23 Ocak 2012, 15:42:58
teşekkürler.
peki if deyimleri input(giriş) mi olmak zorunda?
@ambar7 açıklamış , ama, biraz daha ayrıntılı anlatayım.

if deyimi bir şartı işlem deyimi.
if deyimi hafızadaki herhangi bir alanı , registerleri veya sabitleri sınamak için kullanılabilir. bunun için bir sınırlama yok. yeter ki karşılaştıracağınız şeyler  birbirine uyumlu ,yani birbirine dönüştürülebilir olsun.

örneğin
if (input(pin_a1) == output(pin_b1)) ......; eğer output(pin_a1) fonksiyonu size bir geri dönüş bilgisi veriyorsa , bu karşılaştırma yapılabilir. aksi durumda yapılamaz.
input(...) ve output(...) birer fonksiyon. input(...) pindeki bilgiyi almak için kullanıldığına göre , bu fonksiyon bir geri dönüş değerine sahip. Ancak output(...)  pini set etmekte kullanıldığı için bir dönüş değeri olmayabilir. Kütüphaneyi bilmediğim için olmaz demiyorum. Olmayabilir diyorum.

bir fonksiyonun geri dönüş bilgisi verdiği nasıl anlaşılır.
önce fonksiyonun tanumlandığı yeri bulmak gerekir.

int  Topla ( char a, char b){
    return(a+b);
}

bu fonksiyon geri dönüş değerine sahip bir fonksiyon. Bunu fonksiyon isminin önündeki int tanımından anlayabiliriz.

void port_set ( char a ){
         PORTB = a;
}

bu ise geri dönüş değeri olmayan bir fonksiyon. bunu da fonksiyon isminin başında void yazıyor olmasından anlıyoruz. Bu  bilgiler ışığında

if ( Topla ( 3,5)  < 10) ....; geçerli bir şart cümlesidi.

if ( port_set(5) < 10) .....; geçersiz şart cümlesi. Çünkü port_set(..) fonksiyonu bize geçerli bir sayı göndermediği için , ortada karşılaştırabileceğimiz bir büyüklük yok.

ziyaretci

Verdiğin bilgiler için teşekkürler.

bir diğer sorum ise şöyle olacak.

Dot matrix e 74hc154 den katot bilgisi gidiyor ve 74hc154 sütun  seçme işlevi yapıyor.16f628 den gelen porta bilgileri a1,a2,a3,a4 bunlar 74hc154 kod çözücüsüne gidiyor.Sorum şu:
  mesela dotmatrix(8x8) de 1. satır ı komple yakmak istiyorum bunun kod örneğini alabilirsem iyi olur sizlerden.
bir diğeri ise,

bir hocamda gördüm kodu mesela:

00000000
01111110
01001010
01001010     mesela bu "e"harfi bunu her sütun gösteriyor bu nasıl oluyor?