kesme ile buton on off

Başlatan semli, 05 Ağustos 2015, 12:09:15

semli

Herkeze hayırlı günler Arkadaşlar kesme ile buton on off nasıl olur acaba internette araştırdığım kadarıyla ccs c dilinde kesme örnekleri çok az

ziyaretci


MrDarK

Hangi kesme türünü tercih edersin :) RB0 kesmesi ile ilgili örnekleri arat. Bu şekilde açıklayıcı bilgiler vermez isen yardımcı olan sayısı azalacaktır.
Bak aşağıdaki linkte nasıl konu açılır anlatılıyor. Link = https://www.picproje.org/index.php/topic,57135.0.html
Picproje Eğitim Gönüllüleri ~ MrDarK

polleme

Sanırım buton ile kesme yapmak istiyorsunuz. Bu durumda dış kesme kullanmanız gerekir. Aşağıda işlemcinin RB0 portuna bağlı butona basıldığında kesme oluşturan ve bir LED yakan kod var. İncelerseniz fikir verecektir. Yine linkteki kitabı edinmenizi tavsiye ederim.

http://ccspic.com/dis-kesme-external-interrupt-uygulamasi/


semli

#4
#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(b) 
int kesme=0;  
#int_ext   

//__________________________DIŞ KESME FONKSİYONU______________________________

void ext_kesmesi ()  
{
   while(input(pin_b0==0)) 
   {}
   kesme=1; // 
}

//__________________________Main Fonksiyonu______________________________

void main ()   
{
   setup_psp(PSP_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
   
   
   set_tris_b(0b00000001); // 

   enable_interrupts(INT_EXT);        
   enable_interrupts(GLOBAL);        
   ext_int_edge(H_TO_L);              
   
       for(;;)                           
         {
            if(kesme==1) 
               {
                  output_toggle(pin_b3);
                  kesme=0;               
               }
         }
}       
sanırım sorumun cevabı(denenmiştir) ihtiyacı olan benim gibi yeni başlayan arkadaşlara yardımcı olur.Ayrıca  cevaplayan arkadaşlara teşekkür ederim.Şimdi konuyu biraz daha açarsak buton on off kesme ile yapmak isteme sebebim butona süre koymak istiyorum.butona 2 saniye BASILI TUTULURSA çıkış vermesini istiyorum.Bastıktan 2 saniye sonra değil bununla ilgili yardımcı olabilirmisiniz.Birde kullanmadığm pin leri devrede boşta bırakabilirmiyim.

ziyaretci

#5
Şimdiye kadar bu şekilde yaptım demek istediğini.

#define buton  input(pin_xx)

Void yapilacak_islem(){
// işlemleriniz.
}

Void main(){
For(;;){
if(buton){
while(buton && i<200){
i++;
Delay_MS(10);
  }
if(i==200){
output_high(pin_yy); 
While(buton); 
Output_low(pin_yy);
yapilacak_islem();
      }
i=0; 
    }
  }
}

semli

Alıntı yapılan: erkantr67 - 22 Ağustos 2015, 03:30:10
Şimdiye kadar bu şekilde yaptım demek istediğini.

#define buton  input(pin_xx)

Void yapilacak_islem(){
// işlemleriniz.
}

Void main(){
For(;;){
if(buton){
while(buton && i<200){
i++;
Delay_MS(10);
  }
if(i==200){
output_high(pin_yy); 
While(buton); 
Output_low(pin_yy);
yapilacak_islem();
      }
i=0; 
    }
  }
}
Hocam bu kodları çalıştıramadım.Acaba çalıştırdığınız bir projeyi paylaşabilirmisiniz.

ziyaretci

#7
Dur bir tane yapayım senin için.

mesaj birleştirme:: 23 Ağustos 2015, 03:46:15

Buyur: http://elektrocavus.com/?TR=0x011&Tr=528

semli

Alıntı yapılan: erkantr67 - 23 Ağustos 2015, 03:11:06
Dur bir tane yapayım senin için.

mesaj birleştirme:: 23 Ağustos 2015, 03:46:15

Buyur: http://elektrocavus.com/?TR=0x011&Tr=528
(Resim gizlendi görmek için tıklayın.)
Hocam elinize sağlık son olarak butonu  pull-up ile nasıl yapabilirim

ziyaretci

A0 pinini 10k dirençle 5V 'a bağla. Yine  A0 pininden butona gir. Butonun diğer ucunu toprağa bağla.

Yazılımıda;
#define buton  !input(pin_a0)   // olarak değiştir.