ccs c ile timer kullanımı yardım

Katılım
9 Ara 2011
Mesajlar
14
Puanları
1
merhaba arkadaşlar ;
ccs c dilinde program yazıyorum , programlarımda delay komutunu kullanmak istemiyorum.hemen yazmak istediğim programı anlatayım kısaca 3 tane buton ve 3 tane led var hangi butona basılırsa ona bağlı led 1 dk yanacak ve sönecek ama 1.butona basıldı hemen arkasından 2. butona sılırsa da buton algılayacak delay kullandıgım zaman 1 dk lık döngü bitene kadar diğer butonlar çalısmıyor bununla ilgili timer kullanmam gerektiğini ögrendim bu programla ilgili yardımcı olursanız sevinirim teşekkürler
 
delay_ms(60000) yapma mesela şöyle yap

for (a=0;a<600;a++)

{
tuş_kontrol_et();
delay_ms(100);
}

saniyede 10 kere tuşları kontrol etmiş olursun ki bu gayet yeterli. Bu mantıkta çalışırsan daha kolay çözersin
 
#fuses NOWDT,XT, NOPUT, NOPROTECT
//16f628a
#use delay(clock=4000000)

int16 i=0,r=0,f=0;
int t=0;
void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

for(;;)
{

if(input(pin_a0)) t=1;
if(input(pin_a1)) t=2;
if(input(pin_a2)) t=3;



switch (t)
{
case 1:
i++;r=0;f=0;
delay_ms(1);
output_b(0b00000001);

if(i==58500)
{
output_b(0);
i=0;

for(;;)
{
if(input(pin_a1)||input(pin_a2))
{
break; i=0;
}
}
}
break;
//------------------------------
case 2:

r++;i=0;f=0;
delay_ms(1);
output_b(0b00000010);

if(r==58500)
{
output_b(0);
r=0;

for(;;)
{
if(input(pin_a0)||input(pin_a2))
{
break;r=0;
}
}
}
break;
//---------------------------
case 3:

f++;i=0;r=0;
delay_ms(1);
output_b(0b00000100);

if(f==58500)
{
output_b(0);
f=0;

for(;;)
{
if(input(pin_a0)||input(pin_a1))
{
break;f=0;
}
}
}
break;
//---------------------------
}
}
}

// heralde istediğiniz budur.
 
timer kesmeleri ile yapabilirsin. 1.butona basıldıysa 1. lambayı yak.

set_timer2(5);
setup_timer_2(T2_DIV_BY_8,255,5); 4 mhz osilatör için 1/1mhz *8*(250=255-5)*5= 10 mili saniye

timer kesmesi kısmında da 1. lamba yanıyorsa (10 ms ) için 600. kesme de 1 dakka sonra lambayı söndür gibi

aynı şekilde 2 ve 3 lambalar da yapılır.
 

Forum istatistikleri

Konular
128,149
Mesajlar
915,466
Kullanıcılar
449,888
Son üye
kalemx

Yeni konular

Geri
Üst