INTERRUPTS-KESME BİLGİSİ OLANLAR LÜTFEN YARDIM

Başlatan NBR07, 12 Mart 2013, 02:21:24

NBR07

LEDLER KAYIYOR AMA KESMEYİ GÖRMÜYOR.....ALTTA PROGRAM BAKARMISINIZ..
ÖRNEK=PORTBDE LEDLER KAYCAK
RB0 KESMESİ GELİNCE
BUZZERDAN 1 KHZ SES ÇIKARAN PROGRAM......
//////////////////////////////////////////////////////////////////////////////////////
#include<16f628A.h>
#use delay(clock=4000000)
#int_ext

void beep(void)
  {int i;
  for(i=0;i<150;i++)
    {output_high(pin_a0);
    delay_us(500);
    output_low(pin_a0);
    delay_us(500);
    }}



main()
{int sayac;
while(1)
    {sayac=0x01;
     while(sayac!=0)
        {output_b(sayac);
         delay_ms(200);
         sayac=sayac<<1;
        }}
set_tris_b(0x01);
enable_interrupts(int_ext);
ext_int_edge(H_TO_L);
enable_interrupts(global);
while(1);
}






yilmaz_kk

 Sanırım program aşağıdaki döngüye girip çıkamadığından kesmeye giremiyor. Kesme ayarlarını yukarıda yaparsanız çalışabilir.



while(1)
    {sayac=0x01;
     while(sayac!=0)
        {output_b(sayac);
         delay_ms(200);
         sayac=sayac<<1;
        }

haydarpasamikro

main()
{int sayac;

set_tris_b(0x01);
enable_interrupts(int_ext);
ext_int_edge(H_TO_L);
enable_interrupts(global);

while(1)
    {sayac=0x01;
     while(sayac!=0)
        {output_b(sayac);
         delay_ms(200);
         sayac=sayac<<1;
        }}


}


gibi..
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

NBR07

teşekkürler arkadaşlar ama döngü hep doğru yani koşul hep 1 olduğundan kayarken while(sayac!=0) bu döngüden çıkabılsE belki olcak ..

ayrıca kafama takılan diğer soru işaretide...
HEM PORTBDE KAYIYO LEDLER
HEMDE PORBDEKİ B0 KULLANARAK KESME NASIL OLCAK 1 TANE PİNE NASIL 2 ADET KOMUT YOLLANACAK

sadogan

Alıntı yapılan: NBR07 - 12 Mart 2013, 12:21:38
teşekkürler arkadaşlar ama döngü hep doğru yani koşul hep 1 olduğundan kayarken while(sayac!=0) bu döngüden çıkabılsE belki olcak ..

ayrıca kafama takılan diğer soru işaretide...
HEM PORTBDE KAYIYO LEDLER
HEMDE PORBDEKİ B0 KULLANARAK KESME NASIL OLCAK 1 TANE PİNE NASIL 2 ADET KOMUT YOLLANACAK
B0 pinin de hem led bağlı hemde kesmemi üretmek istiyorsun.
Şemanı paslaşırsan ne yapmak istedigin daha net anlaşılır.

NBR07

SORU GAYET AÇIKTI...
PORTBDE LEDLER KAYARKEN..RB0.. KESME GELİNCE BUZERDAN SES ÇIKARACAK...

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

GreeN

Alıntı yapılan: NBR07 - 12 Mart 2013, 13:11:22
SORU GAYET AÇIKTI...
PORTBDE LEDLER KAYARKEN..RB0.. KESME GELİNCE BUZERDAN SES ÇIKARACAK...

b0 'dan external interrupt ayarladığında bir kere bu pini giriş ayarlaman gerekli. Ama led'i yakmak için çıkış ayarlaman gerekli.

Ne yapmak istiyorsun ? ikisini birden yapamazsın. Çıkış ayarlanmış bir pinden external int dinlemesi yapamazsın ki.
Terörü Lanetliyoruz.

sadogan

Alıntı yapılan: NBR07 - 12 Mart 2013, 13:11:22
SORU GAYET AÇIKTI...
PORTBDE LEDLER KAYARKEN..RB0.. KESME GELİNCE BUZERDAN SES ÇIKARACAK...
Peki


t2

Alıntı yapılan: OG - 12 Mart 2013, 13:12:04
Küçük harf ile...

Belki de bu tarihten sonra foruma  yeni bir eklenti, yapılacak ya da Gevv hocam olaya el atacak hepsi büyük harfle yazılsa bile yazılar otomatik küçük harfli olacak. hatta ders olsun diye daha da küçük harfe dönüşebilir. 

NBR07

set_tris_b(0x01)... b0 giriş yapıyorum zaten....

bunu a0da kesme yapıp portbdeki ledleri mi kaydırmam gerekiyor peki?

yada aynı mantık olarak 1 led yanıp sönerken kesme tuşu basılıysa sönük kalsın çekince devam etsin..? bunları 1 buton 1 led aynı mantık değilmi???
bnm isteğimde böyle bişeydi ledler kayacak(ör:1 led),kesme gelince buzerdan ses çıkarcak(yani tuş basılıysa) yanlış mı düşünüyorum yoksa mantık olarak

NBR07

kardeşim dalgınlığıma geldi büyük harf yanlış anlaşılmak istemem ...özür dilerim..(saygıda kusur etmek istemem) emeğinize sağlık şimdiden

GreeN

Alıntı yapılan: NBR07 - 12 Mart 2013, 14:18:43
set_tris_b(0x01)... b0 giriş yapıyorum zaten....

bunu a0da kesme yapıp portbdeki ledleri mi kaydırmam gerekiyor peki?

yada aynı mantık olarak 1 led yanıp sönerken kesme tuşu basılıysa sönük kalsın çekince devam etsin..? bunları 1 buton 1 led aynı mantık değilmi???
bnm isteğimde böyle bişeydi ledler kayacak(ör:1 led),kesme gelince buzerdan ses çıkarcak(yani tuş basılıysa) yanlış mı düşünüyorum yoksa mantık olarak

sorun; external interrupt için kullanılan pin portb de yer alıyor. sen portb'ye bağladığın ledlerden bahsediyorsun.
portb 0 nolu pine buton bağlantısı olacak. diğer pinlerde ledler olacak. böyle olur.
yada porta ya ledleri bağla ...

kullandığın işlemcide external interrupt sadece portb.0 pininden olur.
bir butonun konumunu kesme ile değerlendirmek istiyorsan bunu sadece portb.0 pini ile yapabilirsin. porta ile yada başka bir pin ile olmaz.
Terörü Lanetliyoruz.

NBR07

Son olarak bunu denedim yine işin içinden çıkamadım...

#include<16f628A.h>
#use delay(clock=4000000)
void beep (void);
int sayac;
#int_ext
void kesme (void)
{
beep();
}

main()
{set_tris_b(0x01);
sayac=0x80;
output_b(sayac);
  {while(sayac==1)
  sayac=sayac>>1;
enable_interrupts(int_ext);
ext_int_edge(L_TO_H);
enable_interrupts(global);
while(1)
   {if(sayac==0x02)
   sayac=sayac>>1;
   output_b(sayac);
   delay_ms(150);
   }}}
   
   
   void beep(void)
   {int i;
      for(i=0;i<150;i++);
      {output_high(pin_a0);
      delay_us(500);
      output_low(pin_a0);
      delay_us(500);
      }
   }
   

necati

#include<16f628A.h>
#use delay(clock=4000000)
#FUSES   NOWDT,XT,NOPUT,NOPROTECT,NOBROWNOUT

//void beep (void);
int sayac;
int8 bp=0;
int i=0;
/////////////////////////////////////
#int_timer1
void timer_doldu(){
set_timer1(65035);//65535-65035=500usn
if(bp==1){
output_toggle(pin_a0);
i++;
}
if(i==150){bp=0;output_bit(pin_a0,0);}
}
/////////////////////////////////////
#int_ext
void kesme (void){
bp=1;
}
//////////////////////////////////////////////////////////////////////////
void main(){

setup_timer_1(t1_internal|t1_div_by_1);
SET_TIMER1(65035);
enable_interrupts(int_timer1);
enable_interrupts(int_ext);
ext_int_edge(L_TO_H);
enable_interrupts(global);
set_tris_b(0x01);
sayac=0x80;
output_b(sayac);
 
while(sayac==1)
sayac=sayac>>1;

while(true){
if(sayac==0x02)
   sayac=sayac>>1;
   output_b(sayac);
   delay_ms(150);
   }}
///////////////////////////////////////////////////////////////////////////////   
   /*
   void beep(void){
      //int i;
      for(i=0;i<150;i++);
      {output_high(pin_a0);
      delay_us(500);
      output_low(pin_a0);
      delay_us(500);
      }
   }
   */


[email]entegreterbiyecisi@yahoo.com[/email]