portb.0 kesmesi esnasında portd.0 durumuna göre hareket etmek??

Başlatan forumsad, 30 Ağustos 2010, 22:17:58

forumsad

kodumda port_b0 kesmesi kullanıyorum...kesme esnasında port_d0'ı da takip edip 0 olması durumunda başka bir bölümün çalışmasını nasıl sağlarım..

#use fast_io(b)
int i;
int1 p;  //port çışışı kontrolü 1 bitlik veri


#int_ext
void portb0kesmesi()
{
//output_high(pin_e0);    //sayıcı say
//delay_ms(1000);        //bekle 
//output_low(pin_e0);    //sayıcı dur

 output_high(pin_b7);    //makine çalış 
 delay_ms(1000);        //bekle    

 
 for (i=0; i<10; i++)
 {
 p=input(pin_d0);
  output_high(pin_e0);     
 delay_ms(1000);        //bekle    
 output_low(pin_e0);    
 delay_ms(1000);        //bekle
 
    if(p=0){ 
           for (i=0; i<10; i++)
           {
           output_high(pin_e0);     
           delay_ms(100);        //bekle    
           output_low(pin_e0);    
           delay_ms(100);        //bekle
           }
    }

 
 }
 
}


burda kesme gerçekleştiğinde led 1 sn aralıklarla yanıp sönüyor bu arada port_d0 'a bakıyor port_d0 sıfır olduğu anada  led daha hızlı yanıp sönerek döngü
sona eriyor ...

burda kesme çalışıyor ama port_d0 durumunu okuyamıyorummm

yardımcı olmanız rica olunur..

radres

Kesme fonksiyonunda PD0 değerini p değişkenine atıyorsun. Burda sorun yok ama,

if(p=0)

ifadesinde sanırım p değerini yani PD0 girişi lojik-0 ise birşeyler yaptırıyorsun. Ama burada if(p=0) yerine

if(p==0) yazman gerekli. 2 eşittir li yani. tek eşittir p'ye bir değer atamak için. Çift eşittir istediğin değere eşit olup olmadığını sorgulamak için.

forumsad

#include "E:\elektronik\ccs_pic\uygulamalar\button_uyg\button_led\main.h"

   #use fast_io(b)    //b portu yönlendirme açık
   #use fast_io(d)    //b portu yönlendirme açık
   
   int1 p;
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab

   // TODO: USER CODE!!

   
   set_tris_b(0x00);   //b portu çıkış
   set_tris_d(0b111111111);   //d portu giriş
   set_tris_e(0x00);   //e portu çıkış
   output_b(0x00);     //b portu komle çıkış 0 temizle
   output_d(0x00);     //d portu komle çıkış 0 temizle
   output_e(0x00);     //e portu komle çıkış 0 temizle
   
   basla:
   p=input(pin_d0);
   
   //output_bit(pin_b7,p);
   if (p==1)
             {
               output_high(pin_b7);
             }
   
   output_high(pin_e0);
   delay_ms(500);
   output_low(pin_e0);
   delay_ms(500);
   
   
   goto basla;

}


kodu daha basit hale getirdim ama hala portd0 'ın durumunu okuyamıyorum ney eksik anlayamadım??

JKramer

set_tris_b(0x00);   //b portu çıkış
   set_tris_d(0b111111111);   //d portu giriş
   set_tris_e(0x00);   //e portu çıkış
   output_b(0x00);     //b portu komle çıkış 0 temizle
   output_d(0x00);     //d portu komle çıkış 0 temizle
   output_e(0x00);     //e portu komle çıkış 0 temizle


output_x() komutu, x portunu çıkış yapar, yani tris ayarlarını değiştirir.

forumsad