LM35 Sıcaklık Sensörü Seri Port Çakışması

Başlatan semih, 05 Aralık 2012, 13:19:25

semih

Seri port ile iletişim kuran dc motor sürmek için yazdığım kodlara LM35 sıcaklık sensörünü eklediğim zaman sıcaklıkta değişim olduğunda LCD ekranda göstermiyor.Eğer işlemciye reset atarsam yeni sıcaklığı gösteriyor. "getch" kodunu kullanmadığım zaman devrem çalışıyor.Fakat bu kodu eklediğimde sorunla karşılaşıyorum.Aşağıda kodları verdim.Bu hata "getch" ile mi ilgili yoksa başka bir hata mı var?
#include <16f877a.h>
#device adc=10
#fuses xt,nowdt,nowrt,noprotect,nodebug,noput,nobrownout,nolvp,nocpd
#use delay(clock=4M)
#use fast_io(a)
#define use_portb_lcd true
#include <lcd.c>
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,parity=N,stop=1)

int dijital;
float sicaklik,milivolt;

void main()
{
   set_tris_b(0x00);
   output_b(0x00);
   set_tris_a(0x01);
   setup_adc(adc_clock_div_32);
   setup_adc_ports(AN0);
   set_adc_channel(0);
   delay_us(250);
   lcd_init();
   printf(lcd_putc,"\fSicaklik=");
   while(1)
   {
      dijital=read_adc();
      milivolt=(0.0048828412*dijital)*1000;.
      sicaklik=(milivolt/10)-0.33;
      lcd_gotoxy(10,1);//1.satır 10.sütun
      printf(lcd_putc,"%f%cC",sicaklik,223);
      if(getch()=='w')
      {
         output_low(pin_d0);
         output_high(pin_d1);
         output_low(pin_d2);
         output_low(pin_d3);
      }
      if(getch()=='s')
      {
         output_low(pin_d0);
         output_low(pin_d1);
         output_high(pin_d2);
         output_low(pin_d3);
    }
}

JKramer

Kullanma kılavuzuna bakarsanız, getch fonksiyonunun karakter gelene kadar "çakılıp" beklediğini görebilirsiniz. Bunun yerine rs232 alım kesmesini kullanabilirsiniz. Global bir değişken tanımlayıp kesme içerisinde bu değişkene gelen karakteri atayın. Daha sonra ana programda getch() yazan yerlere tanımladığınız değişkeni yazmanız yeterli. Pek yeterli değil, yazarken aklıma geldi :), bir değişken de gelen data'nın işlenip işlenmediğini takip etmek için gerekli.

semih

Teşekkür ederim.Sorun kesme kullanmamamdan kaynaklanıyormuş.