ds18b20 eksi sıcaklığın birler basamağını neden yanlış alıyorum

Başlatan deli06, 12 Ağustos 2013, 22:35:20

deli06

#include <16f877a.h>
#fuses xt,noprotect,nowrt,nodebug,nolvp,nocpd,nobrownout,nowdt,noput
#use delay(clock=4M)
#define use_portb_lcd TRUE
#include <lcd.c>
#include "ds18b20.c"

//int temp;

unsigned int16 Temp;
unsigned int8 yuzler,yuzler_1,onlar,birler;
float Sicaklik;
char sayidizi[3];

void main()
{
lcd_init(); //lcd yi hazırla
while(1)
{
    set_tris_b(0x00);//B portu komple cikis
   
    //
   
    Sicaklik = ds1820_read()/8;
    //delay_ms(320);
     printf(lcd_putc,"\f"); //lcd yi temizle
      lcd_gotoxy(1,1);
           printf(lcd_putc,"SICAK=%f", Sicaklik);
           
          // lcd_putc(223);
           //lcd_putc("C  ");
           delay_ms(100);
           Temp=Sicaklik*10;
           yuzler=temp/100;
           yuzler_1=Temp/10;//yuzler_1 gecici bir değişken;
           onlar=yuzler_1%10;
           birler=Temp%10;//birler
           sayidizi[0]=yuzler;
           sayidizi[1]=onlar;
           sayidizi[2]=birler;
lcd_gotoxy(1,2);
           printf(lcd_putc,"Temp=%ld", Temp );
        //lcd_putc(223);
        lcd_gotoxy(11,2);
         printf(lcd_putc,"Tam=%i",birler);
}
}
sorunum sadece negatif sıcaklıkarda.

LukeSkywalker


deli06

   LukeSkywalker ilgin için teşekkür ederim fakat sonuça ulaşmış değilim hala başladığım noktadayım.