CCS C Yardım Bekliyorum...

ercanatnr

Üye
Katılım
19 Ara 2010
Mesajlar
290
Puanları
1
Merhaba CCS C programında kendimce 8 adet led için amatör bir animasyon programı yazdım. RA0 pinine bağlı buton ile animasyonlar arası geçiş yapabiliyorum ancak şöyle bir sorun var. Butona basar basmaz animasyon değişmiyor yani şöyle ki o animasyon bitene kadar butona basılı tutmak gerekiyor mesela 6. Animasyon (hepsinin karışımı olan animasyon) çok uzun olduğu için değiştirmek için butona if döngüsü başa dönene kadar basılı tutmak gerekiyor ne yaptım ise çözemedim bu sorunu nasıl çözebilirim. ISIS ve CCS C dosyası ekte yardımlarınızı bekliyorum. TEŞEKKÜRLER...
 

Ekli dosyalar

  • Animasyon.rar
    13 KB · Görüntüleme: 22
aralarda delay fonksiyonu kullanmıssınız o yuzden delay bitmeden daha dogrusu animasyon foksiyonun içinde o delaylar. dolayısı ile fonksiyon bitmeden tuşu algılamıyordur yazdıgınız program.
 
aralarda delay fonksiyonu kullanmıssınız o yuzden delay bitmeden daha dogrusu animasyon foksiyonun içinde o delaylar. dolayısı ile fonksiyon bitmeden tuşu algılamıyordur yazdıgınız program.
timer interrupt kullanmayı deneyin. delay lar yerine.
 
timerlara belli bir sayıdan sonra sıfırlanıp basa sayması, her sıfırlanmada timerın interuptının aktif olması,
ister picin timer interruptlarıyla yapın bunu.

isterseniz delay 1 ms demek yerine
her bir mikro saniyede 0 dan 1000 e kadar artan program yazın. bu program sürekli kossun. 10000 olunca 1 ms yapsın. ledi yakın. led yakan programdan cıkın. 0 sıfırdan 1000 saymayı yine baslatın. 1000 olunca yine bir iş yaptırabilirsiniz veya bişey yaptırmayın sıfırlayıp yeniden baslatın 0 dan 1000 e sayan programı, 1000 gelsin yeni bir iş yaptırmak isterseniz onu yaptırın, mesala yanan ledi sondursun baska led yaksın, programdan cıksın. gene 0 dan 1000 e sayan program calıssın ..... gibi gibi.
 
timerlara belli bir sayıdan sonra sıfırlanıp basa sayması, her sıfırlanmada timerın interuptının aktif olması,
ister picin timer interruptlarıyla yapın bunu.

isterseniz delay 1 ms demek yerine
her bir mikro saniyede 0 dan 1000 e kadar artan program yazın. bu program sürekli kossun. 10000 olunca 1 ms yapsın. ledi yakın. led yakan programdan cıkın. 0 sıfırdan 1000 saymayı yine baslatın. 1000 olunca yine bir iş yaptırabilirsiniz veya bişey yaptırmayın sıfırlayıp yeniden baslatın 0 dan 1000 e sayan programı, 1000 gelsin yeni bir iş yaptırmak isterseniz onu yaptırın, mesala yanan ledi sondursun baska led yaksın, programdan cıksın. gene 0 dan 1000 e sayan program calıssın ..... gibi gibi.
Sayın toyer vaktiniz varsa küçük bir uygulama üzerinde anlattığınızı gösterebilirmisiniz. Pic için ders almıyorum internetten izlediğim videolar ile yapıyorum o yüzden biraz acemiyim.
 
butonu b0 bacağına bağla... onuda harici kesme olacak şekilde ayarla... program nerede olursa olsun b0 butonuna bastığında dediğin işlemi yapacaktır...

Kod:
#include <16F84A.h>
#byte PORTB = 6
#byte porta=5
#Fuses XT,NOWDT,NOPUT,NOPROTECT
#use delay(clock=4000000)        // Osilatör 4 MH
int i=0;

#int_EXT
EXT_isr()
{
porta=0x00;
}



void main()
{
set_tris_b( 0x01 );
set_tris_a( 0x00 );
  porta=0;
   enable_interrupts(INT_EXT);
   enable_interrupts(global);
  
   while(true)
{
i++;
porta=i;
delay_ms(500);
}

}
 
switch case yapısı kullan. her buto basışta sıarayla animasyon çalısın
 

Forum istatistikleri

Konular
129,877
Mesajlar
930,959
Kullanıcılar
452,744
Son üye
ProCan

Yeni konular

Geri
Üst