Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

16F628A Kesmesi?

Başlatan rogue_cn, 27 Mart 2013, 00:25:51

rogue_cn

Arkadaşlar Aşağıdaki CCS yazılımda b2 ye bir LED bağladım. başta 300ms aralıklarla yanıp sönüyor ver her B0 butonuna bastığımda 50ms azaltıyorum aralığı. Sorun şuki birde arttırma butonu koymak istiyorum(b1 pinine) ama kesme ile yapmak istyorum ve 16F628A da tek dış kesme var galiba(B0). Nasıl bir kesme yapabilirim arttırma butonu için arkadaşlar?

#include <16f628a.h>     
#fuses INTRC_IO,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD 
#use delay (clock=4000000) 
#use fast_io(b) 
long i=300; 
#int_ext               
void  ext_kesmesi ()   
{
i=(i-50);
delay_ms(25);
}
void main ( )
{
   set_tris_b(0x01);  
   output_b(0x00);     
   ext_int_edge(H_TO_L);   
   enable_interrupts(INT_EXT); 
   enable_interrupts(GLOBAL); 
   while(1){
      output_high(pin_b2);
      delay_ms(i);
      output_low(pin_b2);
      delay_ms(i);
   } 
 }

Erol YILMAZ

b4.5.6.7 pinleri değiştiğinde gerçekleşen bir kesme daha var.

Ayrıca kesme içinde delay kullanmak çoook eski zamanlardan beridir hoş görülmez :)

ziyaretci

#2
Alıntı yapılan: Allegro - 27 Mart 2013, 01:42:01
b4.5.6.7 pinleri değiştiğinde gerçekleşen bir kesme daha var.

Ayrıca kesme içinde delay kullanmak çoook eski zamanlardan beridir hoş görülmez :)

#int_rb
void degisiklik_kesmesi()
{
   // @Allegronun dediği gibi delay kullanmamalısın hatta sadece bir değişkeni artırmak yada azaltmak için kullanman daha etkili sonuçlar üretir.
 
    }

Void man(){
enable_interrupts(GLOBAL);
 
for(){
enable_interrupts(int_rda);
}

}