Arama butonu
Bu konudaki kullanıcılar: 1 misafir
12
Cevap
1375
Tıklama
0
Öne Çıkarma
pic c den anlayanlara ufak bir soru
T
18 yıl
Yüzbaşı
Konu Sahibi

pic16f84a ve pic c lite için soruyorum

iki tane buton var (böcek buton deniyor herhalde,basınca basılı kalmıyor.darbe şeklinde sinyal üretiyor.).
biri program içindeki bir değişkeni arttıracak diğeri azaltacak her basışta.
bir buton portA.0 diğeri de portA.1 e bağlı olsun misal olarak.

bilene çok kolaydır ama bir yardım edin.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



E
18 yıl
Yüzbaşı

asembbler da desen kodları verirdim ama pic c yi bilmiyorum yani asembbler bana daha kolay geldiği içindiğerleriyle uğrasmıyorum neyse kolay gelsin


Bu mesaja 1 cevap geldi.
M
18 yıl
Yüzbaşı

Butonlara basıldığında butonların toprağa çekildiği mantığıyla kod yazıyorum.Değişken değeri 255 ise arttırma yapmaz değişken değeri sıfır ise azaltmaz.

quote:


int degisken=0;

PORTA=0x00;
TRISA=0XFF;

while(1){
if(RA0==0 && degisken!=255)
degisken++;

if(RA1==0 && degisken!=0)
degisken--;
}



Bu mesaja 1 cevap geldi.
T
18 yıl
Yüzbaşı
Konu Sahibi

E
18 yıl
Yüzbaşı

Hardware yada softwate debouncing yapman gerekli.


Bu mesaja 2 cevap geldi.
T
18 yıl
Yarbay

#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT,PUT

int i=0;

void main(void)
{
while(TRUE)
{
if(!input(pin_a0) && i!=255) //arttırma
{
while(!input(pin_a0)); //elini butondan çekene kadar bekle
i++;
}

if(!input(pin_a1) && i!=0) //azaltma
{
while(!input(pin_a1));
i--;
}
}
}

ben bas bırak buton kullandığını, basılınca porta low değeri (0) gönderdiğini ve değeri artacak değişkeninin de işaretsiz 8 bit (0-255) olduğunu varsaydım. Kod yukarıdaki şekildedir. Arkadaşınkine benzedi.

üstteki kodda #fuses'dan sonra

#define A0 input(pin_a0)
#define A1 input(pin_a1)

eklenirse, "input(pin_a0)" yerine sadece A0, input(pin_a1) yerine de sadece A1 kullanılabilir. Ufak bir ek olsun bu dediklerim.





< Bu mesaj bu kişi tarafından değiştirildi TA2LSM -- 13 Ekim 2007; 14:20:47 >

M
18 yıl
Yüzbaşı

quote:

Orjinalden alıntı: erman374

Hardware yada softwate debouncing yapman gerekli.



Bunu gözardı etme. Kodu yazarken geciktirmeyi unutmuşum. Butonlar için geciktirme lazım. Pic hızlı olduğu için butona bas bırak sırasında bir kere basmanıza rağmen birden fazla basılmış gibi algılayabilir. Network_Killer arkadaş buna dikkat etmiş onunki daha doğru bir kod.


Bu mesaja 1 cevap geldi.
T
18 yıl
Yarbay

@muuzoo

"&& i!=255" bunu bu şekilde yazmayı akıl edememiştim doğrusu. aşağıda bir karşılaştırma daha yaparak 0 ya da 255 olduysa sıfırla ya da 255'de tut diye yazıyordum eskiden. şimdi senin mantıkla bu iş daha iyi yapılıyor. Doğruya doğru.


Bu mesaja 1 cevap geldi.
M
18 yıl
Yüzbaşı

quote:

Orjinalden alıntı: Network KILLER

@muuzoo

"&& i!=255" bunu bu şekilde yazmayı akıl edememiştim doğrusu. aşağıda bir karşılaştırma daha yaparak 0 ya da 255 olduysa sıfırla ya da 255'de tut diye yazıyordum eskiden. şimdi senin mantıkla bu iş daha iyi yapılıyor. Doğruya doğru.



İşinize yaradıysa ne mutlu.


Bu mesaja 1 cevap geldi.
T
18 yıl
Yüzbaşı
Konu Sahibi

cevaplar için teşekkürler..
deboucing tam olarak ne bilmiyorum ama butonun basma bırakma olayını şu şekilde yaptım..

if (!RA0) k0=1;
if(RA0&&k0==1) {if(sayac!=100) sayac++;k0=0;}

yanlız bir şey daha sorayım. şimdid ben ra0 portunu kullanıyorum buton için. butonu direk pin ile toprak arasına bağlıyorum.

şimdi TRISA=0x01 yazıp ra0 ı giriş yaptığım da buton işlemiyor. bunun için butonu nasıl bağlamalıyız.(ayrıca butona seri direnç bağlayarak ta denedim. bir de pine direnç üzerinden 5V bağladım ve pini buton üzerinden toprağa bağladım , bir resimde görmüştüm. ama olmadı)

RA0 ı TRISA=0x00 ile çıkış yapıyorum. RA0=1 yapınca buton işliyor. ama bu sanki yanlış bir kullanım.

bu konuda ne önerebilirsiniz.yani kısaca butonu girişe nasıl bağlarım?

cevaplar için şimdiden teşekkürler..





< Bu mesaj bu kişi tarafından değiştirildi terminator -- 14 Ekim 2007; 1:20:00 >
Bu mesaja 1 cevap geldi.
E
18 yıl
Yüzbaşı

T
18 yıl
Yarbay

Kod + Proteus 7.1 sp2 için simülasyon dosyaları:
http://rapid_share.com/files/62443917/Buton_Okuma.rar.html

Önce simülasyonu çalıştır. bir iki kere butona bas. sonra simülasyonu pause'la. i'nin değerini göreceksin açılan paencereden...





< Bu mesaj bu kişi tarafından değiştirildi TA2LSM -- 14 Ekim 2007; 12:35:51 >

T
18 yıl
Yüzbaşı
Konu Sahibi

quote:

Orjinalden alıntı: erman374

http://forum.donanimhaber.com/m_18313116/tm.htm

sağol hocam.

açıklamışlar burada. biz gözden kaçırmışız konuyu ama....



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.