Buton kilitleme yardim edermisiniz.

Başlatan sifirzero, 11 Nisan 2016, 13:39:51

sifirzero


for(;;) // for sonzuz döngüsü

{

// Eğer pin_b0  butona basılırsa, butona basıldığı müddetçe while döngüsü dönecek ,

//bırakıldığında" i" değişkeni 1 artırılacak.

if(input(pin_b0)) { while(input(pin_b0)); i++; }

//Değişkenimizin üst sınırını belirliyoruz.

if(i==2) { i=0; }

// değişken 1 e eşit olduğunda b1 pinine lojik 1 ver diyoruz.

if(i==1) { output_high(pin_b1);
Delay_ms(250);
output_low(pin_b3);



}

// değişken 0 a eşit olduğunda b1 pinine lojik 0 ver diyoruz.

if(i==0) { output_low(pin_b1); }

   } //sonsuz döngü sonu

} // Ana program sonu



Bu kodu yaziyorum butona basiyorum isleyis calisiyor ama tekrar butona badtigimda isleyis tekrar isliyor buton kilitleme nasil yapabilir yardim.edermisiniz.yanlis kodlarimi kullaniyorum
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

mehmet

Buton mantığını düşünün; basınca neler oluyor, bırakılınca neler
oluyor?
Basıldığını tespit edin. "while" komutu ile basıldığı "false" olana
kadar bekleyiniz.
Ancak "debounce" kısmını atlamayınız...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

dursuncemal

#2
senin yazdigin sekilde tus okunmaz basit bir tus okuma icin program whilede kitlenmez! haa sadece yapacagin is bukadar ise goz ardi edilebilir. bir cok yolu var sana bir tanesini anlatmaya calisayimi hem bu arada bit tanimlamayi ve kullanmayi ogrenmis olursun once bir bit tanimlatalim.

#unsigned char  bitler = 0; //burada bitler adinda  unsigned char  turunde bir degisken tanimladik.
#bit   tus_kilit   = bitler.0 //burda degiskenimizin 0. bitinin adina    tus_kilit  adini verdik.
#bit  _cikis       = bitler.1 //burda degiskenimizin 1. bitinin adina     _cikis    adini verdik.
for(;){

if(input(!pin_b0)) {tus_izin = 1;}//burada tusa basilmamisken   bir alt satirdaki islemi yapmaya izin verecek tus_izin  bitini aktif ediyoruz.

if( tus_izin & input(pin_b0) ){   _cikis = !_cikis;   tus_izin = 0;}//tus izin aktif iken tusa basilisa _cikis adindaki bitimizi tersliyoruz(toggle) ve izin bitini sifiliyoruz ki bir daha izin almadan buraya girmesin.

if(_cikis ){ output_high(pin_b1);    Delay_ms(250);  output_low(pin_b3);} else{ output_low(pin_b1); }

delay_ms(10);


}//for
:=

sifirzero

Dursuncemal kardesim deneyince haber vereyim.kardesim millet satir satir kod yaziyor daha dogru durust bir led yakamiyorum.ondan kopyala buraya yapistir.ama şoyle birsey dusundum.siz nedersiniz bu dusunceye.her bir işlemi ele alarak ogrenmeye caliscam.ornegin pwm iyice ogrencem.daha sonra diger islemler timer0 timer1,comparator counter vb.gibi tektek ogreneyim diyorum.baska yol varsa onerirmisiniz
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

dursuncemal

#4
istanbuldayim gel yardimci olmaya calisirim 1saate siir gibi yazarsin.burda ki bir cok arkadas ben dahil soru soran arkadaslarin belli bir seviyede oldugunu varsayarak cevap veriyo o yuzden sadece copy paste ile istedigini yapamazsin.
:=

sifirzero

İzmirdeyim ustam.istanbukun neresindedin
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sifirzero

ustan den3edim kodları ama bit lerde hata verdi bunda da hata verdi  #unsigned  tanımadı program
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

dursuncemal

#7
hangi derleyiciyi kullaniyorsunuz? unsignedin basindaki yildiz falalik olmus onu sil
,
:=