avatar_delimsi

Tek butona iki görev vermek.(yardım)

Başlatan delimsi, 12 Eylül 2019, 22:42:02

delimsi

arkadaşlar merhaba ccs c ye yeni başladım.
bir yerde takıldım ve yardımlarınızı bekliyorum.
buton o konumunda manuel
buton 1 konumunda otomatik seçmek ve alt proğramlarını çalıştırmak istiyorum.
nasıl bir algoritma izlemeliyim.
yardımlarınız için teşekkürler.

ete

Derleyiciye bağlı olmadan mantık ile çözülebilecek bir soru bu.
Buton yada switch üzerinden okuma ile karar verilecek ise ve programda da iki ayrı çalışma mdu mevcut ise okunup 0 ise manuel kısmına 1 ise auto kısmına yönlendirilir program.
Ama genellikle ben tek program döngüsünde bu işi bir AUTO (bit cinsinden değişken) tanımlayarak önce butonu okuyup konumuna göre Auto=0 veya Auto=1 yaaprım. Auto değerine görede programı yönlendiririm.

Ete

fatih88

#2
hocamında dediği gibi push buton kullanacaksan bir bitlik değişken oluşturmalısın (int1) bu değişken sadece 1 veya 0 olabilir aşagıda ufak bir program örneği var deney yapma şansım olmadı tlf yazdım çalışmaya bilir belki fikir verir sana


#define outo_btn pin_b0 //portb.o outo buton tanımlandı trisb dede giriş ayarlanmalı
int1 durum;            //durum adında 1 bitlik değişken
if(!input(outo_btn)){if(durum==0){durum=1;while(!input(outo_btn)); ();}}//butona basıldı ve durum 0 ise butondan el çekene kadar bekle outo fonksiyonuna git durumu1 yap
else{durum=0;while(!input(outo_btn));manuel();}//durum 1 ise durumu sıfırla butondan el çekene kadar bekle manuel fonksiyonuna git
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

delimsi

Alıntı yapılan: ete - 13 Eylül 2019, 08:08:49Derleyiciye bağlı olmadan mantık ile çözülebilecek bir soru bu.
Buton yada switch üzerinden okuma ile karar verilecek ise ve programda da iki ayrı çalışma mdu mevcut ise okunup 0 ise manuel kısmına 1 ise auto kısmına yönlendirilir program.
Ama genellikle ben tek program döngüsünde bu işi bir AUTO (bit cinsinden değişken) tanımlayarak önce butonu okuyup konumuna göre Auto=0 veya Auto=1 yaaprım. Auto değerine görede programı yönlendiririm.

Ete

benim burda 0-1 konumlu buton kullanmam lazım. buton 0 veya 1 konumunda iken proğramda başka işlem yaptıramıyorum.

ete

Ortada yazılmış bir program yokda ondan olsa gerek. Zira olsa buraya koyar ve bizlere daha iyi cevap verme imkanı tanımış olurdun diye düşünüyorum. Böyle havadan konuşarak kimseye bir fayda sağlayacağımız yok anlayacağın.
Sana yolunu gösterdim. Gerisini biraz düşünerek halledebilmen gerekirdi. Halledemiyorsan daha fazla detay vermen gerekir.

Ete

delimsi

hocam şöyle bir kod oluşturdum ama buton bir konumda iken başka işlem yapmıyor.
if(input(pin_d6)==1) x=0;
   if (x==0)
   {otomatik();
   if(input(pin_a0))stop();
      }
   while(input(pin_d6)==1);x=1;
   
   if(x==1)
   {manuel();
   if(input(pin_a0))stop();
   }
   while(input(pin_d6)==0);x==0;

ete

#6
İstersen bu yazdığın kodu birde kelimelerle açıkla onun üzerinden tartışalım;
Mesla;
Şayet Input_Pin_ D6=1 ise x=0 olsun
Burada X=0 'ı sen tanımlıyorsun zaten hemen altına ;
Şayet X==0 ise Otomatik çalışsın diye kod yazılmamalı

Şayet D_6=1 ise X=1 olsun bence. Bunu X'e anlam kazandırmak açısından verelim ve X=0 ise sistem manuel, X=1 ise sistem otomatik çalışsın.
Bu atamayı bağımsız bir satırda ve yalnızca bu atamayı yapacak şekilde yap.
IF D_6=1 ise
  X=1 olsun
else (değil ise)
  X=0 olsun)
Aslında bu atamaya bile gerek yok.
Zira x ile D6 değeri paralellik gösteriyor. O halde direk D6 değerini kullanırım olur biter. Fazladan kod koymaya gerek yok.
If A0=0 and D6=0 ise şunu yap
IF A0=0 and D6=1 ise şunu yap demen yeterli bence.

Sorunun D6 kontrol döngüsü içine A0 kontrolünü sokmuş olman. D6 A0 dan bağımsız olmalı yada her ikisi bir AND lojik kontrol elemanı ile kontrol edilmeli.

Ete

Powered by EzPortal