yardım lütfen

Başlatan nemesis83, 11 Ağustos 2016, 10:24:47

nemesis83

merhaba arkadaşlari,

pic konusunda acemi bir kardeşiniz olarak yardıma ihtiyacım var

pic16877 kullanarak sıcaklık ölçen ve sıcaklık değeri belirlenen değeri geçince çıkış verecek olan bir pic projesi hazırlıyorum

derleyici hata vermiyor ama bir türlü interrupt ile istediğim değişimi yapamıyorum

devre resmi burada

http://i.hizliresim.com/7Am5LN.jpg

kodu da buraya ekliyorum

inşallah bi çözüm önerirsiniz

hepinize saygılar teşekkürler

#include <16f877.h>     

#device ADC=10 

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#use fast_io(a)

#use fast_io(b)

#use fast_io(d)

#define use_portb_lcd TRUE   

#include <lcd.c> 

#int_timer0

unsigned long int bilgi;
float voltaj,sicaklik;   

timer0_kesmesi()
{
   if (sicaklik>30)
   output_high(pin_d1);
   else
   output_low(pin_d1);   
}

void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı
   set_tris_a(0x01);  // RA0 Giriş olarak yönlendiriliyor
   set_tris_d(0x00);
   output_d(0x00);
   setup_timer_0(RTCC_INTERNAL |RTCC_DIV_4);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   setup_adc(adc_clock_div_32);   // ADC clock frekansı fosc/32
   setup_adc_ports(AN0); //RA0/AN0 girişi analog
   lcd_init();   // LCD hazır hale getiriliyor
   set_adc_channel(0);   // RA0/AN0 ucundaki sinyal A/D işlemine tabi tutulacak
   delay_us(20);         // Kanal seçiminde sonra bu bekleme süresi verilmelidir
   printf(lcd_putc,"\fSicaklik="); // LCD'ye yazı yazdırılıyor
   while(1)   // sonsuz döngü
   {
      bilgi=read_adc();  // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
      voltaj=(0.0048828125*bilgi)*1000;   // Dijitale çevirme işlemine uğrayan sinyalin mV olarak gerilimi hesaplanıyor
      sicaklik=(voltaj/10)+2;    // Her 10mV'ta 1 derece artma
      lcd_gotoxy(10,1); // İmleç 1. satır 10.sütunda
      printf(lcd_putc,"%5.1f'C",sicaklik); // LCD'ye sıcaklık değeri yazdırılıyor
      delay_ms(100); // 100 msn gecikme
   }
}