C programlama ile kesme alt programı sorun?

abttr23

Üye
Katılım
3 Haz 2014
Mesajlar
7
Puanları
1
Ccs c ile basit bir kesme alt programı yapmak istiyorum. Programda "tara" işlemini yaparken bekleme süresi olan delay_ms() süresi bitmeden programı, a_0 a bağlı buton ile kesme alt programına aniden geçirmek istiyorum. Kesme alt programının işi bittikten sonra kaldığı yerden devam etmesini istiyorum. Ancak "tara" işlemi devam ederken butona bastığımda kesme alt programını aktif edemiyorum. Yani butona bastığım anda "tara" bitmeden kesme alt programı aktif olmuyor. Yardımcı olabilirseniz sevinirim.

#include <16f877A.h>


#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=20000000)
#use fast_io(a)



#priority timer1
void ileri_git()
{

set_pwm2_duty(250);
output_high(pin_c4);


}
void geri_git()
{

set_pwm2_duty(250);

output_high(pin_c3);
output_low(pin_c4);
}


void durdur()
{
set_pwm2_duty(0);
output_low(pin_c4);
output_low(pin_c3);
}


void tara()
{
ileri_git(); delay_ms(1000); geri_git(); delay_ms(2000);
}


#int_timer1 // Timer1 kesmesi
void timer1_kesme () // Kesme fonksiyonu ismi
{
set_timer1(63036);


durdur();
}
void main ( )
{
setup_psp(PSP_DISABLED);
setup_timer_2(T2_DIV_BY_16,250,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_PWM);
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF);


set_tris_a(0xff);
output_a(0x00);

setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); // Timer1 ayarları yapılıyor
set_timer1(50);

while(1)
{
tara();
if (input(pin_a0)==1)
{
enable_interrupts(INT_timer1);
enable_interrupts(GLOBAL);

}

}
 
Saçmasapan bi program olmuş. Ne yapmaya çalışıyorsun anlaşılmıyor hiç
 
tara ya koşul ilave et butonla o koşulu aktif et.
Bknz. break, forumda yazılı diğer mesajlar...
 
tara ya koşul ilave et butonla o koşulu aktif et.
Bknz. break, forumda yazılı diğer mesajlar...


Tam olarak anlayamadım. tara nın içerisine if ile buton aktifleştirmesi mi yapayım? Ama ben aksi bir durum olmadıkça tarayı devam ettirmek istiyorum. sadece a0=1 olduğunda timer1_kesme devreye girsin istiyorum.
 
PHP:
def unknown_function():
    if condution is real_time :
        while True:
            if error == except_an_error:break
            exec "print i am ver sad"

daha açıklayıcı bir uslubla
PHP:
void loop()
{
(if input_pin == HIGH){
yardir_mursel(); //yardir_mursel fonksiyonunu bi zahmet tanimlayiniz
    }
else{
..............//Gundelik hayat devam ediyor. Ise git,otele don.....
   }
}

ya neyi anlamadığınızı bir anlasam.....
 
Arkadaşım senin derdin şu ki sen interruptlık bir şey yapmamışsın kodunda. Timer1 interrupt ne işe yarıyor ki orada. Yapman gereken butonu INTR pinine bağlamak ve butona basıldığı anda ne yapma istiyorsan yaptırmak. Senin buton şu an bir kesmeye bağlı değil ki. Normal kodun içinde kontrol yapıyorsun. Tabi ki önce tara() yapılacak sonra senin butona sıra gelecek. Programın akışı böyle çünkü.

SOnra // ile açıklama yazmışsın ki neyi açıklıyor bunlar. Timer1 ayarı yapılıyor diye açıklama olur mu. Timer1 i şu ms ye ayarladım filan olacak. Bu tarz saçma sapan açıklamalar yazacağına hiç yazma daha iyi. Komik oluyor bir faydası yok
 

Forum istatistikleri

Konular
127,969
Mesajlar
913,974
Kullanıcılar
449,614
Son üye
Canipk

Yeni konular

Geri
Üst