şimdi sizin için kolay ama benim için zor olan bir konu pıc16f877a ile bir butonla 8 ayrı ledi 4 değişik şekilde tasarlamam gerekiyor.ben 4 şekili yaptım while döngüsü ile ama sadece bir buton koymam gerekiyor yani asıl anlatmak istediğim butona basınca ilk tasarladığım şekilde ledler yanacak yada sönecek 2. Basışımızda 2 şekilde tasarladığım ledler yanacak ve sönecek bu böyle devam edecek
yani butona 4 defa basıcam her basışımda ayrı şekilde tasarladğım konfigürasyonlarım çalışacak sizden istediğim butonu nasıl koyabilirim ???
Ben 4 şekli yaptım ama butonsuz.şimdiden yardım edenlere çok teşekkür ederim..
Yazılan dili dikkate almadan,mantık şu şekilde olabilir;
Kod:
butona basıldımı?
basıldı ise 1. durumdaki ledi yak
1.durum sonunda butona basıldımı?
hayır; 1.duruma devam et
evet; 2. duruma geç
2.durum sonunda butona basıldımı?
hayır; 2.duruma devam et
evet; 3.duruma geç
Fakat burada 1. durum sürekli devam edecekse butonun yakalanması gibi bir problem olabilir. Eğer durumlar tekrarlanmayacaksa yukarıda yazılan açıklama yeterli olur.
Fakat durumlar tekrarlanacak ve her butona basışta diğer duruma geçecekse yazılan programa göre "kesme" oluşturarak yine yukarda yazılan mantıkla olayı çözebilirsin..
İlk anda aklıma gelen bu, programın yazarken alternatif oluşabilir, yada arkadaşlar farklı alternatifler sunabilirler..
örnek olarak şöyle söyleyim
bu birinci kısım:buton 1'e basınca burası çalışacaktır?
set_tris_a(0xff);
set_tris_b(0x00);
output_b(0x00);
while(1)
{
output_high(pin_b0);
delay_ms(50);
output_low(pin_b0);
}
bu ikinci kısım:buton 2'ye basınca bu kısım çalışcaktır:?
while
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
delay_ms(50);
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
}
anlatmak istediğim bu bu devrelere nasıl buton bağlıycam birinci butona basınca 1 konfigürasyon
2.butona basınca 2.konfigürasyon
3.butona basınca 3.konfigürasyon devreye girecek bu devreler buton nasıl bağlarım bu şekilde.??
örnek olarak şöyle söyleyim
bu birinci kısım:buton 1'e basınca burası çalışacaktır?
set_tris_a(0xff);
set_tris_b(0x00);
output_b(0x00);
while(1)
{
output_high(pin_b0);
delay_ms(50);
output_low(pin_b0);
}
bu ikinci kısım:buton 2'ye basınca bu kısım çalışcaktır:?
while
{
output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
delay_ms(50);
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
}
anlatmak istediğim bu bu devrelere nasıl buton bağlıycam birinci butona basınca 1 konfigürasyon
2.butona basınca 2.konfigürasyon
3.butona basınca 3.konfigürasyon devreye girecek bu devreler buton nasıl bağlarım bu şekilde.??
ilk başta söylediğin şeyle şuan söylediklerin farklı farkındasın di mi?
bu yazdıgın koda cevap vereyim.
"while(1)" yazdıgın yerlere "while(RB0)" yazarsan RB0 butonuna basılı olduğu sürece orası çalışır. ama unutma basılı olduğu sürece. farklı birşey düşünüyorsan eğer başka fikirler üretmen gerekecek.
Bu arada while(1) i 'devamlı olarak' çalışacak kısım için yazacaksın. programın devamlı çalışacak kısımları while(1) içinde olacak(yani tüm program). (set kısımları değil tabi onlar bir kere yapılacak çünkü)