timer interrupt kullanmayı deneyin. delay lar yerine.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.
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.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.
#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);
}
}
Bu byte komutunun görevi nedir.#byte PORTB = 6
#byte porta=5
Onu denediğimi hatırlıyorum ondada aynısı olmuştu galiba ama bir daha deneyim.switch case yapısı kullan. her buto basışta sıarayla animasyon çalısın
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?