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);
}
}
#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);
}
}