Code
#include <mega8.h>
#include <delay.h>
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>
#include <ds18b20.h>
void main(void)
{
unsigned char devices;
int temp;
devices = w1_init();
PORTD = 0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD = 0xFF;
while(devices>0)
{
temp=ds18b20_temperature(0); //читаем температуру
if (temp>1000) //если датчик выдаёт больше 1000
{
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "минус"
}
if (temp<18) // устанавливаем нижней порог
PORTD.0 = 1;
else PORTD.0=0;
if (temp>28) // установим верхний порог
PORTD.1=1;
else PORTD.1=0;
}
}