Lcdli termometre programı derleme sorunu

Başlatan jokerSM100, 25 Kasım 2011, 18:27:48

jokerSM100

Program aşağıdaki gibi
#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




hitech derleyicisi kullanıyorum verdiği hatada aşağıdaki gibi
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Users\bekir\Desktop\ahmet.mcs".
Clean: Done.
Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"delay.cce" "delay.c" -O"delay.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A
Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"lcd.cce" "lcd.c" -O"lcd.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A
Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"Untitled.cce" "Untitled.c" -O"Untitled.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A
Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -E"ahmet.lde" "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\delay.obj" "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\lcd.obj" "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\Untitled.obj" -M"ahmet.map" -O"ahmet.cof" -O"ahmet.hex" -Q -MPLAB -16F877A
BUILD FAILED: Fri Nov 25 18:23:09 2011


Nasıl düzeltebilirim?

yamak

for(;{ yerine " for( ; ; ) {} " yazıp dener misiniz?

jokerSM100

Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\delay.obj".
Clean: Deleted file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\delay.cce".
Clean: Deleted file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\lcd.obj".
Clean: Deleted file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\lcd.cce".
böyle hata veriyor bu kez de



Clean: Deleted file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\Untitled.obj".
Clean: Deleted file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\samples\LCDemo\Untitled.cce".
Clean: Done.
Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"delay.cce" "delay.c" -O"delay.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A
Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"lcd.cce" "lcd.c" -O"lcd.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A
Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"Untitled.cce" "Untitled.c" -O"Untitled.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A
Halting build on first failure as requested.
BUILD FAILED: Fri Nov 25 19:02:00 2011

elektronikhobi

#3
O programda 2 bölümün düzelmesi gerekiyor. Aslında tabi hazırlayan arkadaşımız doğru hazırlamış. Hatta bu kodları ve kendimiz yapalım köşesini hazırlayan arkadaşı çok beğendiğimi itiraf etmeliyim  :) Bence iyi bir elektronik mühendisi böyle olmalı.

http://www.biltek.tubitak.gov.tr/gelisim/elektronik/

Ama bir zaman sonra yazılımların yeni sürümleri ile programlar güncelliğini kaybedebiliyor.

İlkönce lcd.c dosyasını kullandığımız devreye uygun olarak düzenliyoruz.

#define	LCD_RS RA2
//#define	LCD_RW RA4
#define LCD_EN RA3

#define LCD_DATA	PORTB

#define	LCD_STROBE()	((LCD_EN = 1),(LCD_EN=0))


Tam olarak çalışan program da şu şekilde:

#include <pic.h>
#include "lcd.h"
#include "secenek.h"
#include <stdio.h>

int main()
{
    const float katsayi = 5000.0 / 1024.0;
    unsigned char ust, alt;
    float miliVolt, derece, sicaklik;
    int santigrat;
    unsigned char sonuc[] = "SICAKLIK = ";

    lcd_init();		// LCD'yi hazırla

    TRISB = 0;
    TRISA = 1;

    ADCON1 = 0x8e;
    ADCON0 = 0x41;

    for (; ;) {
        ADCON0 = 0x45;
        while ((ADCON0 & 4) != 0);	// analoj dijital çevrim bitene kadar bekle
        sicaklik = ADRESH;
        sicaklik = 256 * sicaklik + ADRESL;
        miliVolt = sicaklik * katsayi;
        derece = miliVolt / 10.0;
        lcd_goto(0);
        ust = (int) derece;
        alt = (int) (10.0 * (derece - ust));
        sprintf(sonuc + 11, "%d.%dC",ust, alt);
        lcd_puts(sonuc);
        __delay_ms(250);
    }
}


Ben Ubuntu 11.10 altında PicKit2 kullanıyorum ve seçenek yazmaçlarım da şu şekilde:

// secenek.h

#include <htc.h>

#ifndef _XTAL_FREQ
 // Saat pulsunu 4 Mhz olarak ayarlıyoruz
 #define _XTAL_FREQ 4000000
#endif

__CONFIG (FOSC_XT & WDTE_OFF & LVP_OFF & CPD_OFF & CP_OFF);