ext_rb kesmesi sağlıklı çalışmıyor?

Başlatan forumsad, 11 Ocak 2011, 14:47:56

forumsad

bu ext_rb uygulamasını proteusda sağlıklı çalıştıramıyorum nerde hata yapıyorum acaba  teşekkürler


#include "E:\elektronik\ccs_c\ccs_uygulamalar\877\RB_kesmesi5\main.h"

#use fast_io(b)
int in1,in2;





#int_rb
void portb_rb_kesmesi()
{ 
if  (input(PIN_B7)==0) { in1=1;}
else  if (input(PIN_B6)==0) { in2=1;} 
}






void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   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);

   // TODO: USER CODE!!
   set_tris_a(0x00);    //porta çıkış
   set_tris_b(0xff);    //portb giriş
   set_tris_c(0x00);    //portc çıkış
   set_tris_d(0x00);    //portd çıkış
   set_tris_e(0x00);    //porte çıkış
   
   output_a(0x00);     //portu temizle
   output_b(0x00);     //portu temizle
   output_c(0x00);     //portu temizle
   output_d(0x00);     //portu temizle
   output_e(0x00);     //portu temizle
   
   
 ext_int_edge(H_TO_L);        //KESME DÜŞEN KENARDA;(1 DEN 0 OLURKEN) AKTİF OLSUN
 enable_interrupts(INT_RB);   //rb kesmesi aktif
 enable_interrupts(GLOBAL);   //TÜM KESMELERE İZİN VER  
   
 
    while(1)
{
 
 
//**************************************************
if ((in1==1)&(in2==1)){ 
                     output_high(pin_d0);
}
//**************************************************
else if (in1==1){
                 output_high(pin_d1); 
}
//**************************************************
else if (in2==1){
                 output_high(pin_d2); 
}
//**************************************************
         




in1,in2=0;

 }
   
   
   
   
}

forumsad

aralara gecikme koyduğumda düzeldi teşekkürler...

çalışan hali:
#include "E:\elektronik\ccs_c\ccs_uygulamalar\877\RB_kesmesi5\main.h"



#define use_portd_lcd TRUE //lcd bilgisi için port d'yi kullanıyoruz
#include <LCD.C>   //2x16 LCD
//#include <FLEX_LCD420.C>    //4x20 LCD
#use fast_io(b)
int in1,in2;
int durum;





#int_rb
void portb_rb_kesmesi()
{ 
durum=0;
in1=0;
in2=0;
if  (input(PIN_B7)==0) { in1=1;} 
if (input(PIN_B6)==0) { in2=1;}
}


lcd_init(); //lcd ekranımızı kuruyoruz

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   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);

   // TODO: USER CODE!!
   set_tris_a(0x00);    //porta çıkış
   set_tris_b(0xff);    //portb giriş
   set_tris_c(0x00);    //portc çıkış
   set_tris_d(0x00);    //portd çıkış
   set_tris_e(0x00);    //porte çıkış
   
   output_a(0x00);     //portu temizle
   output_b(0x00);     //portu temizle
   output_c(0x00);     //portu temizle
   output_d(0x00);     //portu temizle
   output_e(0x00);     //portu temizle
   
   
 ext_int_edge(H_TO_L);        //KESME DÜŞEN KENARDA;(1 DEN 0 OLURKEN) AKTİF OLSUN

 enable_interrupts(GLOBAL);   //TÜM KESMELERE İZİN VER  
   
lcd_init(); //lcd ekranımızı kuruyoruz
durum=0;
while(1)
{
enable_interrupts(INT_RB);   //rb kesmesi aktif

//**************************************************
delay_ms(50);
if ((in1==1)&(in2==1)){ 
                     lcd_gotoxy(1,1);
                     printf(lcd_putc,"in1=%d",in1);
                     lcd_gotoxy(7,1);
                     printf(lcd_putc,"in2=%d",in2);
                     durum=1;
                     delay_ms(10);
}

//**************************************************

else if ( (durum==0)&(in1==1) ){           
                 lcd_gotoxy(1,2);
                 printf(lcd_putc,"in1=1 \n");
                 durum=1;
                 delay_ms(10);
}
//**************************************************
else if ( (durum==0)&(in2==1) ){ 
                 lcd_gotoxy(7,2);
                 printf(lcd_putc,"in2=1 \n");
}
//**************************************************

         

}
   
   
   
   
}