B4-B7 kesme sorunu

_MeRKeZ_

Üye
Katılım
30 May 2011
Mesajlar
44
Puanları
1
Yaş
32
Merhaba arkadaşlar,


Programımda B4-B7 kesmesini kullanıyorum (Daha doğrusu sadece B6 ve B7 girişlerini). Sistem istediğim gibi çalışmıyor.


Kod:
#int_RB
void Ayarla()
{
   if(input(PIN_B6))
   {
      delay_ms(20);
      while(input(PIN_B6));
      
      Sayi++;
      
      if(Sayi>5)
         Sayi=5;
   }
   
   else if(input(PIN_B7))
   {
      delay_ms(20);
      while(input(PIN_B7));
      
      Sayi--;
      
      if(Sayi<1)
         Sayi=1;
   }
}


..
   set_tris_b(0xC0);
   output_b(0x00);


   enable_interrupts(int_rb);
   enable_interrupts(GLOBAL);




Sayı değişkenini LCD üzerinde gösteriyorum. Örneğin, sayı değeri 1 iken B6 butonuna basıyorum. Bir anda 3 oluyor,5 oluyor. Aynı durum B7 için de geçerli. Bir anda 2-3 sayı birden azaltıyor. Bazen düzgün çalışıyorlar ama çoğunlukla dengesiz.


Kod:
      delay_ms(20);
      while(input());


kısımlarını silerek de çalıştırdım ama daha da kötüleşti.


Sizce ne yapmalıyım? Hata nerededir?


Teşekkürler
 
selamc den pek anlamam pbasic biliyorum şu yolu izliyorum. ilk olarak kesme ler kesme etiketine gelince kapatılmalıdır.

bundan sonra kodlar işlenir ve gerekirse koşul sona eresiye kadar beklenir.

anladığım kadarı ile kesmeye gelince rb6 ya basılma kontrolunden sonra while ile butona basıldığı sure boyunca sayı değişkenini arttırıyorsun bu da sayının artmasına sebep oluyor.sayı değişkeninin değer atamasını yaptıktan sonra isteseniz buton bırakmayı kesme etiketi içerisinde bekletmeyi deneyin.

örn pbp için:
.
.
.

if portb.6=1 then sayi = sayi + 1
if portb.7=1 then sayi = sayi - 1

while portb.6 = 1 or portb.7=1
pause 10
wend
.
.
.
resume

birde giriş kısmında belki parazit gerçekleşiyordur. siz farket mesenizde sürekli kesme gerçekleşiyordur
 
Evet hocam, sorun buymuş. Kesmenin içerisinde, kesmeyi etkisiz hale getirdiğimizde sorun kalmıyor. Çok teşekkürler
 

Forum istatistikleri

Konular
129,689
Mesajlar
929,035
Kullanıcılar
452,395
Son üye
gkmeens

Yeni konular

Geri
Üst