Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: loveswagen - 19 Ocak 2022, 17:21:04

Başlık: 16F84A Interrupt ile İleri Geri Saydırma
Gönderen: loveswagen - 19 Ocak 2022, 17:21:04
Merhabalar. 16F84A mikroişlemcisi ile H to L yaparak interrupt kullanıp ileri ve geri butonlarına basarak 0'dan 99 a kadar saydırma yapmak istiyorum. Bunu normal bi şekilde yaptım ama interrupt ile bağlantısı ve kodları nasıl olacak anlayamadım. Yardımcı olabilir misiniz.

Devre şeması:

(https://i.ibb.co/N2XSxpF/Ekran-g-r-nt-s-2022-01-19-172011.jpg) (https://ibb.co/N2XSxpF)

Kodlar:

#include<16F84A.h>
#fuses XT,NOWDT,NOPUT,NOPROTECT
#use delay(clock=4000000)

int sayi=0;
int rakam=0;
int A[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};


#byte PortA = 0x05
#byte PortB = 0x06

void main()
{
set_tris_a(0x0C);
set_tris_b(0x00);
   while(true)
   {
       if(bit_test(PortA,2)){
       sayi++;
       delay_ms(300);
       }
       if(bit_test(PortA,3)){
       sayi--;
       delay_ms(300);
       }
   
       if(sayi==100){
       sayi=0;
       }
       
   
       bit_clear(PortA,0);
       bit_set(PortA,1);
       rakam=sayi/10;
       output_b(A[rakam]);
       delay_ms(10);
     
       bit_set(PortA,0);
       bit_clear(PortA,1);
       rakam=(sayi%10);
       output_b(A[rakam]);
       delay_ms(10);
       
   }

}

Üstte de belirttiğim gibi butonları interruptlarla H to L yaparak artırma azaltma işlemini yapmak istiyorum. Yardımcı olur musunuz ?
Başlık: Ynt: 16F84A Interrupt ile İleri Geri Saydırma
Gönderen: sifirzero - 19 Ocak 2022, 17:30:10
Timer kesmeleri kullanmamişsin.timer0 veya timer1 örneklerine bakabilirsin
Başlık: Ynt: 16F84A Interrupt ile İleri Geri Saydırma
Gönderen: loveswagen - 19 Ocak 2022, 17:31:37
Kesmeleri henüz kullanamadım. Sadece buton bağlantılarını anlasam soruyu çözebileceğim ancak iki butonu ra4 e bağlayıp artırma azaltma yapabilir miyim ?
Başlık: Ynt: 16F84A Interrupt ile İleri Geri Saydırma
Gönderen: mehmet - 19 Ocak 2022, 21:08:14
RB0 'ı boşaltın buton kesmesini buraya
bağlayın. Aynı uçları diyot ile şimdiki
butonlarla birleştirin.
Butona basılınca kesme oluşur. Kesme içinde
hangi buton olduğunu anlarsınız.

CCS C bilmiyorum kod kısmında yardımcı olamam...
Başlık: Ynt: 16F84A Interrupt ile İleri Geri Saydırma
Gönderen: sadogan - 19 Ocak 2022, 22:33:41
harici interrup tı aktif etmek için
while loopun üzerne 
enable_interrupts(INT_EXT);
 enable_interrupts(GLOBAL);

#INT_EXT                       
void int_ext_interrupt()
{   
   
}
Bu harici interrut fonsiyonunu main loopun üzerine koyun