RA0'daki butona 2 kez basıldığında portb deki ledleri 2şer 2 şer sağa kaydırırken, RA1 deki 3 butona 3 kez basıldığında port b deki ledleri 3 er 3 er sola kaydıran programı nasıl yazabilirim ? her buton sürekli taranıyor.
Yardımcı olursanız sevinirim
Akış düyagramı çıkarmalısın,
yani programı öncelikle sözel olarak yazmalısın,
gerisi kolay,
senin aklında nasıl yazmak var?
Direk akış diyagramını yazamıyorsan,
problemin basit versiyonlarını tüetip onları çözmen gerekir.
Misal RA0 daki butona basılınca
PORTB deki tüm ledleri yakan,
RA1 deki butona basılınca
PORTB deki tüm ledleri söndüren program,
gibi...
Alıntı yapılan: RaMu - 31 Mart 2017, 18:50:15
Akış düyagramı çıkarmalısın,
yani programı öncelikle sözel olarak yazmalısın,
gerisi kolay,
senin aklında nasıl yazmak var?
Direk akış diyagramını yazamıyorsan,
problemin basit versiyonlarını tüetip onları çözmen gerekir.
Misal RA0 daki butona basılınca
PORTB deki tüm ledleri yakan,
RA1 deki butona basılınca
PORTB deki tüm ledleri söndüren program,
gibi...
Butona kaç kez basıldığını nasıl tespit edebilirim ? Butonu 1 kez okuyorum ama 2 veya 3 kez olduğunda nasıl yapabilirim ?
Bir regiister tanımlayıp, butona herbastığında içeriğini +1 artırmalısın. Daha sonra register içeriğini kontrol edip ona göre işlem yaptırabilirsi. Örneğin 2 ise ledi yak , 3 ise ledi söndür gibi...
sayaçA değerine 0x02 verip, şu şekilde kullanmaya çalıştım
TEST_RA0
BTFSC PORTA,0
GOTO TEST_RA0
DECFZS SAYACA
GOTO TEST_RA0
sonra diğer sayaçla 2 kez sağ kaymasını kontrol ettim ama çok mantıklı gelmedi bu yardımcı olabilir misiniz nasıl kontrol etmem gerekiyor butonların kaç kez basıldığını
Yanlış:
1:Bit lowmu
2:Sayacı artır
3:başa dön
Doğru
1:Bit lowmu
2:Sayacı artır
3:Bit highmı
4:başa dön (sayacı artırmadan)
Ödev mi bu soru?