??HATA NEREDE??

Başlatan slmntr, 24 Ekim 2006, 03:24:23

slmntr

Arkadaşlar aşağıdaki programı HI-TIDE a entegreli PICC lite ile derlemeye çalışıyorum; İlk önce ***unsigned char sonuc[]="SICAKLIK = ";***
satırı hata verirken bu kendiliğinden düzeldi fakat oluşturduğu hex dosyası proteusta çalışmıyor elimde doğru hex var fakat ben neden oluşturamıyorum anlayamadım.PICin modeli 16F877.Yardımcı olursanız sevinirim


#include <pic.h>
#include <delay.c>
#include <lcd.c>
#include <stdio.h>
main (void)
{
// Değişken tanımlamaları
const float lsb=5.0/1024.0;
unsigned char gerilim, ust, alt;
float sicaklik;
unsigned char sonuc[]="SICAKLIK = "; 

// Port konfigürasyonu
TRISB=0; // PORTB çıkış  
TRISA=1; // RA0 analog giriş 

// Ön LCD işlemleri
DelayMs(250); // 250ms bekle
lcd_init(); // LCD'yi hazırla 
lcd_clear(); // LCD'yi temizle

// ADC ayarları
ADCON1=0x8E; // AN0 analog giriş
ADCON0=0x41; // A/D aktif 

for(;;){

// A/D çevrimi başlat 
ADCON0=0x45; 
// Dönüşümün bitmesini bekle
while((ADCON0&4)!=0); 

// Dönüşüm sonucunu kaydet
gerilim=ADRESH; 
gerilim=256*gerilim+ADRESL;

// Sıcaklık bilgisini oluştur
sicaklik=gerilim*lsb*100.0; 

// Tam ve ondalık kısımları ayır
ust=(int)sicaklik; 
alt=(int)(10.0*(sicaklik-ust)); 

// LCD'ye yazdırma işlemlerini yap
sprintf(sonuc+11,"%d.%dC ",ust,alt);

// 1. satıra geç ve LCD'ye yaz
lcd_goto(0x00); 
lcd_puts("Bilim ve Teknik"); 

// 2. satıra geç ve sıcaklık değerini yaz
lcd_goto(0x40); 
lcd_puts(sonuc);  

// Biraz bekle ve ekranı temizle  
DelayMs(250); 
lcd_clear();

} // Ölçümü tekrarla
} // Programın sonu


Code Tag Kullanmak İşimizi Kolaylaştıracaktır.

zafzaf82

bende vermiş oldugun programı CCS C ye uyarladım ve gayet güzel çalışıyor. [proteusta]

#include <16F877.h>
#device *=16 
#device adc=10

#FUSES NOWDT                 	//No Watch Dog Timer
#FUSES NOPUT                 	//No Power Up Timer
#FUSES NOPROTECT             	//Code not protected from reading
#FUSES BROWNOUT              	//Reset when brownout detected
#FUSES LVP                   	//Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                 	//No EE protection

#use delay(clock=4000000,RESTART_WDT)                      

#include <flex lcd.C>

const float lsb=500/1024.0;
float deger;

termo(int16 sicaklik)
{
deger=lsb*sicaklik;
return deger;
}

void main()
{

   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   lcd_init();
   set_adc_channel(0);
   
   do
   {
   delay_ms(250);
   lcd_gotoxy(2,1);
   printf(LCD_PUTC,"Bilim ve Teknik");
   termo( read_adc());
   lcd_gotoxy(1,2);
   printf(LCD_PUTC,"Sicaklik = %.1fC",deger);
   }
   while(1);
}


http://rapidshare.com/files/469822/bilim_ve_teknik__termo_.rar.html
Mikroişlemci bi araçtır, amaç değil.....

slmntr

sanırım ben picc ile derlerken bi hata ile karşılaşıyorum ama hala çözebilmiş değilim yanlış yaptığım ince ayarlar olabilir mi,hangileri olabilir?