PİC C de 'VE' koşulu nasıl sağlanır?

Katılım
12 Mar 2012
Mesajlar
21
Puanları
1
PİC C de çok yeniyim ve kendimi geliştirmeye çalışıyorum. Bu noktada ufak bir yardıma ihtiyacım var. Örneğin;

if(input(PIN_A0)==1)
output_low(PIN_B0);
else
output_high(PIN_B0);

if(input(PIN_A1)==1)
output_low(PIN_B1);
else
output_high(PIN_B1);

komutuna hangi komut eklenirse A0 ve A1 aktif olursa B2 nolu pin'i aktif etsin ?
 
VE (AND) İşlemi = if (A==1 && B==1)

VEYA (OR) İşlemi = if (A==1 || B==1)
 
abdullah hocam yada a portunu okuyup 2 ile andleyebilirsiniz.

if((input(a))&(0x02)) gibi koşul bu iki bacak 1 olduğunda doğru olacaktır.

Not:kodların kullanımından tam emin değilim
 
//----16F84----
#fuses XT, NOPUT, NOPROTECT, NOWDT
#use delay(clock=4000000)


void main()
{
for(;;)
{
if(input(PIN_A0)==1)
output_low(PIN_B0);
else
output_high(PIN_B0);

if(input(PIN_A1)==1)
output_low(PIN_B1);
else
output_high(PIN_B1);

if(input(PIN_A0)==1&&input(PIN_A1)==1)
output_high(PIN_B2);
else
output_low(PIN_B2);
}

}
/* sana tavsiyem hazır çalışan cod lar üzerinde değişiklik yaparak alıştırma yapman .onları boz yeniden yaz değiştir...ama isis de dene .sonra gerçekleştir.
 
VE (AND) İşlemi = if (A==1 && B==1)

VEYA (OR) İşlemi = if (A==1 || B==1)

PortA=0x07 olursa, işlem sonucu ne olur?

//*********************************

Ya da kısaca:

VE (AND) İşlemi = if (A && B)

VEYA (OR) İşlemi = if (A || B)


A=0x02 ve B=0x02 olursa;
if (A && B)
ile
if (A==1 && B==1)
aynı fonksiyonu icra eder mi?

//******************************

abdullah hocam yada a portunu okuyup 2 ile andleyebilirsiniz.
if((input(a))&(0x02)) gibi koşul bu iki bacak 1 olduğunda doğru olacaktır.

Not:kodların kullanımından tam emin değilim


Bu durumda da PortA.2= H olduğunda sonuç işler gibi görüyorum.

/*****************************************/

@ abdullahylmaz,
C de bitwise AND ve logic AND konusuna baktınız mı?

Aklımda ki 1. yol:

if (A&0x03) B|=0X02


Aklımda ki 2. yol:

if ((A&0x01) && (A&0x02)) B|=0X02
 
Son düzenleme:
A=0x02 ve B=0x02 olursa;
if (A && B)
ile
if (A==1 && B==1)
aynı fonksiyonu icra eder mi?


A ve B 0'dan farklı olduğu sürece if koşulu sağlanmış olur.

Yukarıdaki örnek pin kontrolü ile ilgili ve daha kısa yazım içindi, 1 bit üzerindeki değişkenler için ise tabii ki aynı şey değil.
 
Son düzenleme:
if ten sonraki parantezin içi 1 olduğunda altındaki komutlar işlenir..

Yani A==1 && B==1 dendiğinde; önce Anın sonra B nin 1 olduğunu kontrol eder.. İkisi de 1 ise; ve kapısından geçirir ve sonuç 1 olur.. Bunun yerine A && B yazarsanız, bu durumda da A ile B yi ve kapısından geçirir, ikisi de 1 ise komutlar işlenir.. Bu örnekte sonuç aynıdır..

Tek fark A==0 && B==1 gibi bir karşılaştırma için A && B yi kullanamazsınız.. Ee tabi bir de asm diline çevrildiğinde A && B daha hızlı işleyecektir kanımca..
 
A ve B 0'dan farklı olduğu sürece if koşulu sağlanmış olur.

Yukarıdaki örnek pin kontrolü ile ilgili ve daha kısa yazım içindi, 1 bit üzerindeki değişkenler için ise tabii ki aynı şey değil.

if (A && B):
A ve B, 0 dan farklı ve birbirine denk olduğu sürece fonksiyon işler.

if (A==1 && B==1):
A 1 ve B 1 olduğunda fonksiyon işler ve birbirlerinin yerine kullanılamazlar.
Sadece bit bazlı değil, lojik kontrol olarak ta farklı sonuçlar doğururlar.

if ten sonraki parantezin içi 1 olduğunda altındaki komutlar işlenir..

Yani A==1 && B==1 dendiğinde; önce Anın sonra B nin 1 olduğunu kontrol eder.. İkisi de 1 ise; ve kapısından geçirir ve sonuç 1 olur.. Bunun yerine A && B yazarsanız, bu durumda da A ile B yi ve kapısından geçirir, ikisi de 1 ise komutlar işlenir.. Bu örnekte sonuç aynıdır..

tyildizak hocama cevaben yazdığım mesaj, size de vereceğim cevaptır. Sizin aksinize, bu örnek için dahi aynı olmadığını düşünüyorum.
 

Forum istatistikleri

Konular
127,959
Mesajlar
913,912
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst