Diğer diller ve Derleyiciler => CCS => Konuyu başlatan: delimsi - 12 Eylül 2019, 22:42:02
Başlık: Tek butona iki görev vermek.(yardım)
Gönderen: delimsi - 12 Eylül 2019, 22:42:02
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.
Başlık: Ynt: Tek butona iki görev vermek.(yardım)
Gönderen: ete - 13 Eylül 2019, 08:08:49
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
Başlık: Ynt: Tek butona iki görev vermek.(yardım)
Gönderen: fatih88 - 14 Eylül 2019, 09:06:01
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
Başlık: Ynt: Tek butona iki görev vermek.(yardım)
Gönderen: delimsi - 14 Eylül 2019, 20:16:14
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.
Başlık: Ynt: Tek butona iki görev vermek.(yardım)
Gönderen: ete - 15 Eylül 2019, 08:20:05
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
Başlık: Ynt: Tek butona iki görev vermek.(yardım)
Gönderen: delimsi - 15 Eylül 2019, 23:19:39
hocam şöyle bir kod oluşturdum ama buton bir konumda iken başka işlem yapmıyor.
Başlık: Ynt: Tek butona iki görev vermek.(yardım)
Gönderen: ete - 16 Eylül 2019, 07:58:15
İ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.