Bu kodların çalışması için nasıl düzenlemem gerekirdi.

Başlatan Melih1802, 18 Haziran 2014, 23:23:03

Melih1802

Aşağıda satırların biri gerçekleştiğinde " B7 " nin çıkış vermesini istiyorum.

{
 if ((output(pin_b0)==1)&(output(pin_b1)==1))
 if ((output(pin_b0)==1)&(output(pin_b2)==1))
 if ((output(pin_b0)==1)&(output(pin_b3)==1))
 if ((output(pin_b0)==1)&(output(pin_b4)==1))
 if ((output(pin_b0)==1)&(output(pin_b5)==1))
 
 if ((output(pin_b1)==1)&(output(pin_b2)==1))
 if ((output(pin_b1)==1)&(output(pin_b3)==1))
 if ((output(pin_b1)==1)&(output(pin_b4)==1))
 if ((output(pin_b1)==1)&(output(pin_b5)==1))
 
 if ((output(pin_b2)==1)&(output(pin_b3)==1))
 if ((output(pin_b2)==1)&(output(pin_b4)==1))
 if ((output(pin_b2)==1)&(output(pin_b5)==1))
 
 if ((output(pin_b3)==1)&(output(pin_b4)==1))
 if ((output(pin_b3)==1)&(output(pin_b5)==1))

 if ((output(pin_b4)==1)&(output(pin_b5)==1))  
 
  (output(pin_d7)
 
       }

ilhan_mkp

//örnek 1  
if ((output(pin_b0)==1)&(output(pin_b1)==1))  (output(pin_d7)=1;

//örnek 2
if ((output(pin_b0)==1)&(output(pin_b1)==1)) 
{
   (output(pin_d7)=1;
}

//örnek 3  
if ((output(pin_b0)==1)&(output(pin_b1)==1)) 
{
   (output(pin_d7)=1;
}
else
{
   (output(pin_d7)=0;
 }



Melih1802

Yanlış mı ekledim.

Aslında yapmak istediğim şu:
D0 ile D5 arasındaki bir buton basıldığında D7 çıkış verecek,
D0 ile D5 arasındaki iki buton aynı anda basıldığında D7 çıkışı kesecek,

Fakat bunu buna benzer bir mantıkla yapmam gerekiyor. Bunun üstünde kodlar var.


Gökhan BEKEN

char toplam=0;
toplam+=input(pin_d0);
toplam+=input(pin_d1);
toplam+=input(pin_d2);
toplam+=input(pin_d3);
toplam+=input(pin_d4);
toplam+=input(pin_d5);


if(toplam==1)output_high(PIN_D7); 
if(toplam==2)output_low(PIN_D7); 
if(toplam==3){}//2den fazla buton basıldıysa

Özel mesaj okumuyorum, lütfen göndermeyin.

Melih1802

Kodları ekledim ve çalıştı. Bende // aşağıda eklediğim ve değiştirdiğim düzenlemeleri yaptım.

1 buton basılırsa b7 çıkış verecek, 2 buton basılırsa çıkış vermeyecek. Bu oldu.

Geriye yapmak istediğim; d0 ve d6 beraber basılıysa çıkış verecek d1 ile d5 arası 2. bir buton basılırsa çıkışı kesecek.


char toplam=0;
toplam+=input((pin_d0)&&(pin_d6)); // &&(pin_d6) eklediğimde d0 ve d6 yı AND olarak görsün istedim fakat derlenmesine rağmen çalışmadı.
toplam+=input(pin_d1);
toplam+=input(pin_d2);
toplam+=input(pin_d3);
toplam+=input(pin_d4);
toplam+=input(pin_d5);

if(toplam==0)output_low(PIN_b7); // Buraya buton basılıp bırakıldığında "0" tanımlı olmayıp led yanık kaldığından bu satırı ekledim.
if(toplam==1)output_high(PIN_b7); 
if(toplam==2)output_low(PIN_b7); 
if(toplam==3){}//2den fazla buton basıldıysa




mesaj birleştirme:: 20 Haziran 2014, 01:50:51

Alıntı yapılan: meftun - 19 Haziran 2014, 00:28:30
char toplam=0;
toplam+=input(pin_d0);
toplam+=input(pin_d1);
toplam+=input(pin_d2);
toplam+=input(pin_d3);
toplam+=input(pin_d4);
toplam+=input(pin_d5);


if(toplam==1)output_high(PIN_D7); 
if(toplam==2)output_low(PIN_D7); 
if(toplam==3){}//2den fazla buton basıldıysa



@meftun

Aklımı okumuş gibi kodları tam istediğim şekilde yazmışsın. Sade ve yalın. Üzerinde değişiklik yapabiliyorum.

Melih1802

char toplam=0;
toplam+=input((pin_d0)+(pin_d6));   // modife ettiğim satır çalışmadı. Sorumda burası derlendi ama çalışmadı !!..
toplam+=input(pin_d2);                   //Bunlar çalıan satırlar
toplam+=input(pin_d3);
toplam+=input(pin_d4);
toplam+=input(pin_d5);


Yapmak istediğim;
Birden fazla tuş basıldığında b7 çıkışının kesilmesini istiyordum. Fakat bu kural sadece d0 ve d6 beraber basıldığında gerçekleşecek.

Nasıl yapmam gerekirdi.

Gökhan BEKEN

char toplam=0;
toplam+=input(pin_d0);
toplam+=input(pin_d1);
toplam+=input(pin_d2);
toplam+=input(pin_d3);
toplam+=input(pin_d4);
toplam+=input(pin_d5);


if(input(pin_d0) & input(pin_d6)){ //d0 ve d6 butonlarının ikiside basılı ise
    output_low(PIN_D7); 
}
else if(toplam==1){ //d0-d5 arasındaki butonlardan sadece 1 tanesi basılı ise
   output_high(PIN_D7); 
}
Özel mesaj okumuyorum, lütfen göndermeyin.

Melih1802

Sorum şöyle olacak;
"b" portunu çıkış olarak kullanıyorum. Bu portun b0 ve b5 pinlerinden hangisi çıkış verirse versin d7 pinide bununla beraber çıkış verecek.


sadogan

b0 ve b5 pin lere nerde yazıyorsun.
Yazdığın yerde bu pinlere yazarken 2 sinin verisini "or"la sonucu d7 pine yaz.

Melih1802

while(1)
 
 {
 if ((input(pin_d0)==1)&(input(pin_d6)==1)&(input(pin_d1)==0)&(input(pin_d2)==0)&(input(pin_d3)==0)&(input(pin_d4)==0)&(input(pin_d5)==0))
  output_high(pin_b0);
   else
    output_low(pin_b0);
 
 
  {
 if ((input(pin_d1)==1)&(input(pin_d7)==1)&(input(pin_d0)==0)&(input(pin_d2)==0)&(input(pin_d3)==0)&(input(pin_d4)==0)&(input(pin_d5)==0))
  output_high(pin_b1);
   else
    output_low(pin_b1);
  
 
 {
 if ((input(pin_d2)==1)&(input(pin_d0)==0)&(input(pin_d1)==0)&(input(pin_d3)==0)&(input(pin_d4)==0)&(input(pin_d5)==0))
  output_high(pin_b2);
   else
    output_low(pin_b2);
 
 
  {
 if ((input(pin_d3)==1)&(input(pin_d0)==0)&(input(pin_d1)==0)&(input(pin_d2)==0)&(input(pin_d4)==0)&(input(pin_d5)==0))
  output_high(pin_b3);
   else
    output_low(pin_b3);
  
 
  {
 if ((input(pin_d4)==1)&(input(pin_d0)==0)&(input(pin_d1)==0)&(input(pin_d2)==0)&(input(pin_d3)==0)&(input(pin_d5)==0))
  output_high(pin_b4);
   else
    output_low(pin_b4);
  
 
  {
 if ((input(pin_d5)==1)&(input(pin_d0)==0)&(input(pin_d1)==0)&(input(pin_d2)==0)&(input(pin_d3)==0)&(input(pin_d4)==0))
  output_high(pin_b5);
   else
    output_low(pin_b5);


Bunun ardına ekleyeceğim.

mesaj birleştirme:: 21 Haziran 2014, 00:52:01

Alıntı yapılan: sadogan - 20 Haziran 2014, 01:32:43
b0 ve b5 pin lere nerde yazıyorsun.
Yazdığın yerde bu pinlere yazarken 2 sinin verisini "or"la sonucu d7 pine yaz.

Üstad burada sorunum hep şu oldu;

Varsayalım 10 girişim var 10 tanede çıkışım var. Bu 10 çıkıştan hangisi aktif olursa olsun d7 çıkışıda bununla beraber aktif olacak.
Yukarıda verdiğim satırların altına birde d7 çıkışı yazdım, bu seferde program satır satır tarama yaparken d7 çıkışını bir yakıp bir kapatıyordu.

Bu sebeple niyetim " bu 10 çıkıştan biri aktif ise d7 ledini yak" olmalı diye düşünüyorum.

mesaj birleştirme:: 20 Haziran 2014, 11:13:34

    unsigned int8 buton,but_test,i; // yeni satır eklentisi
     
Yapmak istediğim.
b0 ile b5 arasındaki herhangi bir pin çıkış veriyorsa bu çıkışa paralel olarak b7 nin çıkış vermesini istiyorum.

Alttaki kodları yazılan cevaplardan örnekledim derleyici hata verdi.

while(1)
 
 buton=output_b(&0B00111111); // Çıkışları okuyorum.
     but_test=0;                            // "0" değeri ile karşılaştırıyorum
     for(i=0B00100000;i>0;i>>=1)  // burayı kavrayamadım 
     {
        if(i&buton) but_test++;  //  Burada çıkışları saymak istiyorum.
     }
     if(but_test==1) // yanlızca bir çıkış varsa
     {
         output_bit(PIN_b7)); // b7 yi aktif et.


sadogan

@Melih bey,
ccs nin help inde komutların nasıl kullanıldığı var.
'buton=output_b(&0B00111111); // Çıkışları okuyorum.'
output_b() bu fonksiyon adı üzerinde b portuna yazar okumaz.
Size bir soru:
Bahsetiğiniz giriş çıkış işlemlerini 8 girişiniz 8 çıkışınız olsun
Paralel epromla nasıl yapardınız.?

Melih1802

Üstad help içinde yazanlar için ingilizcem biraz yetersiz kalabiliyor. Fakat bir ay sonra olayı çözüp yazılanları anlayabilir duruma geleceğim.