Пишу все под Кодевижн. Все Ок пока вокруг тепло
Код: Выделить всё
Temp1: 65465
Temp2: 154 //тут все Ок 15.4°С
Temp1: 65457// а вот тут должно быть чтото типа -7.8°С но на практике получается что не должно
Temp2: 159
Temp1: 65457
Temp2: 170Но вобщем я так понял функция CodeVision ds1820_temperature_10(); возвращает температуру в целочисленном беззнаковом значении. Тоесть 0°С это 65535 значения датчика.
Пытаюсь разобрать эту лабуду вот мой код:
Код: Выделить всё
int Temp1, Temp2;
.
.
.
int GetTemp(char i)
{
int temp;
#asm("cli");
temp= (int) ds1820_temperature_10(&ds1820_rom_codes[i][0])/10; //читаем температуру
#asm("sei");
if (temp>1000){ //если датчик выдаёт больше 1000
temp=(65535-temp)+1; //Но даже при значении 65535 он сюда не проходит!!!!
}
return temp;
}
.
.
.
Temp1=GetTemp(0);
Temp2=GetTemp(1);
printf("Temp1: %u\n\r", Temp1);
printf("Temp2: %u\n\r", Temp2);Помогите пожалуйста!!!!!



