CCS de RB0 kesmesinin içinde Portlara veri gönderemiyorum.

Başlatan remzi, 23 Eylül 2006, 12:56:27

remzi

Arkadaşlar CCS de yazdığım kodda RB0 kesmesinin içindeyken PORTA ya veri gönderemiyorum.

mesela aşağıdaki 1. kodda porta nın 7. bitini flash yaptırabiliyorum.

#int_EXT
EXT_isr()
{

   delay_ms(100);
   
   veri_b=input_b();
   
   data=veri_b & 0x1E;
   
   data=data>>1;

   if( data==3 && şifre_1==0)     
      {   
      şifre_1=1;
      şifre_2=1;
      }
      
   if( data==4 && şifre_2==1)
      {
      şifre_3=1;
      şifre_2=0;  
      }
      
   if( data==12 && şifre_3==1)
      {
      şifre_4=1;
      şifre_3=0; 
      }
      
    if( data==1 && şifre_4==1 && girilmedi==0)
      {
      a7=1;
      girilmedi=1;
      degisim=1;
      }
        
    if( data==4 && şifre_4==1 )
      {
      a7=0;
      girilmedi=0;
      degisim=1;
      }
      
    if(degisim==1)
      {
      degisim=0;
    
      if(a7==1)
         {
         output_high(PIN_A7);
         delay_ms(250);
         output_low(PIN_A7);
         delay_ms(250);
         }
      else
         output_low(PIN_A7);                              //write_eeprom(0,0);
      }
      
}




ama aşağıdaki programda output_high(PIN_A7); dediğimde PIN_A7 biti aktif olmuyor. (en alttaki if else de)


#int_EXT
EXT_isr()
{

   delay_ms(100);
   
   veri_b=input_b();
   
   data=veri_b & 0x1E;
   
   data=data>>1;

   if( data==3 && şifre_1==0)     
      {   
      şifre_1=1;
      şifre_2=1;
      }
      
   if( data==4 && şifre_2==1)
      {
      şifre_3=1;
      şifre_2=0;  
      }
      
   if( data==12 && şifre_3==1)
      {
      şifre_4=1;
      şifre_3=0; 
      }
      
    if( data==1 && şifre_4==1 && girilmedi==0)
      {
      a7=1;
      girilmedi=1;
      degisim=1;
      }
        
    if( data==4 && şifre_4==1 )
      {
      a7=0;
      girilmedi=0;
      degisim=1;
      }
      
    if(degisim==1)
      {
      degisim=0;
    
      if(a7==1)
         {
         output_high(PIN_A7);
         }
      else
         output_low(PIN_A7);                              //write_eeprom(0,0);
      }
      
}


sizce bunun sebebi nedir. Aslında benim yapmak istediğim portb den girilen bilgileri okuyarak şifreyi doğrulamak. Şifre doğru ve girişten 1 bilgisi gelirse porta nın 7. bitini aktif yapmak. girişten 4 bilgisi gelirse çıkışı pasif yapmak.

yardımlarınızı bekliyorum...
teşekkürler...

remzi

Arkadaşlar CCS  bazı yerlerde hata veriyor. Hiç ummadığım yerlerde değiik yapınca program düzeldi. Herkese hayırlı işler. kolay gelsin...

zafzaf82

@remzi programı şöyle yazsan daha mantıklı olmazmıydı.

#int_EXT
EXT_isr()
{
delay_ms(100);
kesme=1; 
}

main()
{
   while(kesme==1)
   {
    veri_b=input_b();
   
   data=veri_b & 0x1E;
   
   data=data>>1;

   if( data==3 && şifre_1==0)     
      {   
      şifre_1=1;
      şifre_2=1;
      }
     
   if( data==4 && şifre_2==1)
      {
      şifre_3=1;
      şifre_2=0; 
      }
     
   if( data==12 && şifre_3==1)
      {
      şifre_4=1;
      şifre_3=0;
      }
     
    if( data==1 && şifre_4==1 && girilmedi==0)
      {
      a7=1;
      girilmedi=1;
      degisim=1;
      }
       
    if( data==4 && şifre_4==1 )
      {
      a7=0;
      girilmedi=0;
      degisim=1;
      }
     
    if(degisim==1)
      {
      degisim=0;
   
      if(a7==1)
         {
         output_high(PIN_A7);
         }
      else
         output_low(PIN_A7);                              //write_eeprom(0,0);
      } 
      kesme=0;
      }
}


böylece birçok hatanın önüne geçebilirsin.

Alıntı YapArkadaşlar CCS bazı yerlerde hata veriyor. Hiç ummadığım yerlerde değiik yapınca program düzeldi.
Peki bu düzeltme olayını niye bizimle paylaşma gereği duymadın. Pek anlayamadım. :)

Kolay gelsin....
Mikroişlemci bi araçtır, amaç değil.....