Lütfen pıc'den gerçekten anlarım diyenler buraya bakarmı?

uufuk944

Üye
Katılım
31 May 2010
Mesajlar
40
Puanları
1
Yaş
30
ş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..
 
C kodu yazıyorum. denemedim ama çalışacağını umuyorum.
RB1 ' e buton bağlı ise

Kod:
bit buton;
char durum=0;
while(RB1){buton=1;}
if(buton&&durum==0){
durum=1;
}
else if(buton&&durum==1){
durum=2;
}
else if(buton&&durum==2){
durum=3;
}
else if(buton&&durum==3){
durum=4;
}
else if(buton&&durum==4) durum=0;
buton=0;
if(durum==0) LEDRESET();
if(durum==1) LED1YAK();
if(durum==2) LED2YAK();
if(durum==3) LED3YAK();
if(durum==4) LED4YAK();
 
C kodu yazıyorum. denemedim ama çalışacağını umuyorum.
RB1 ' e buton bağlı ise

Kod:
bit buton;
char durum=0;
while(RB1){buton=1;}
if(buton&&durum==0){
durum=1;
}
else if(buton&&durum==1){
durum=2;
}
else if(buton&&durum==2){
durum=3;
}
else if(buton&&durum==3){
durum=4;
}
else if(buton&&durum==4) durum=0;
buton=0;
if(durum==0) LEDRESET();
if(durum==1) LED1YAK();
if(durum==2) LED2YAK();
if(durum==3) LED3YAK();
if(durum==4) LED4YAK();







ö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);
}

buda 3'ü butona basınca devreye girecek
while(1)
{
output_high(pin_b0);
delay_ms(50);
output_toogle(pin_b0);
}

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);
}

buda 3'ü butona basınca devreye girecek
while(1)
{
output_high(pin_b0);
delay_ms(50);
output_toogle(pin_b0);
}

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ü)
 

Forum istatistikleri

Konular
129,857
Mesajlar
930,815
Kullanıcılar
452,717
Son üye
Volkan1085

Yeni konular

Geri
Üst