merhaba arkadaşlar,
2 gündür denemediğim program yapmadığım bi iş kalmadı buna rağmen hala c dosyamı proteus da simülasyon yapmak için hex dosyasına çeviremedim hi tech lite ı indirdim. mplabx hi tech c mplite hepsini denedim bi türlü çeviremedim. pic16f877a kullanıyorum. rica etsem benim için çevirip yollayabilir misiniz?
#inlude <pic.h>
#inlude <delay.c>
#inlude <lcd.c>
#inlude <stdio.h>
#inlude <math.h>
/*1sn gecikme*/
void bir_saniye(void)
{
unsigned char j:
for(j=0;j<4;j++)DelayMs(250);
}
/*ses db cevir spl hesapla*/
double ses_db(double p)
{
const double Pref=-93.98; //yükseltici kazanc
conts double gain= 150.0; //mikrofon 19.6mv/pa
conts double elektret= 19.6;
float Pa,spl;
if(p<1.0)spl=0;
else
{
Pa=p/(gain*elektret);
spl=20.0*log10(Pa)-Pref; //ses db olarak
}
return(spl);
}
/*ana program*/
main(void)
{
conts double lsb= 5000.0/1024.0; //lsb değeri
double yuksek,dusuk,volt,ses,mv;
unsigned int dB;
unsigned char goster[]=\"SES(dB)=\";
TRISB=0; //portb cıkış
TRISA=1; //ra2 ra3 cıkış
//ra0 giriş an0
//ad çeviriciyi tanımla
ADCON1=0x8E;
ADCON0=0x41;
lcd_init(); //lcd tanımla
lcd_clear(); //lcd temizle
for(;;) //sonsoz döngü
{
ADCON0=0x8E; //ad çeviriciyi başlat
while((ADCON0&4) !=0); //ad çeviriciyi bekle
yuksek=ADI.ESH; //yüksek bayt oku
dusuk=ADRESL; //düsük bayt oku
volt=256.0*yuksek+dusuk; //okunan sayısal sayı
mv=volt*lsb; //mv olarak gerilim
ses=ses_db(mv) //ses şiddeti db olarak
dB=(int)(ses); //db tam sayı olarak
sprintf(goster+10,\"%d\",dB);
lcd_clear(); //lcd temizle
lcd_puts(goster); //lcdde göster
bir_saniye(); //1 sn bekle
}
}