/*****************************************************
Chip type           : ATmega16
Clock frequency     : 8,000000 MHz
Data Stack size     : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
#include <stdio.h> 
#include <ds18b20.h>
#include <1wire.h>
#include <lcd.h>
#include <math.h>
// 1 Wire Bus functions
#asm
   .equ __w1_port=0x15 ;PORTC
   .equ __w1_bit=0
#endasm

#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm

#define MAX_DEVICES 8
char lcd_buffer[33];
unsigned char rom_code[MAX_DEVICES][9];

void main(void)
{
unsigned char i,devices;
int temp;

PORTB=0x0F;
DDRB=0x00;
PORTC=0x01;
DDRC=0x01;
lcd_init(16);

/* Поиск устройств и отображение числа найденных*/
devices=w1_search(0xf0,rom_code);
sprintf(lcd_buffer,"%u DS18B20\nDevice detected",devices);
lcd_puts(lcd_buffer);
delay_ms(2000); 

       
while (1)
      {
for (i=0;i<devices;)
{ 
temp=ds18b20_temperature(&rom_code[i][0]);
sprintf(lcd_buffer,"t=%i\xdfC",temp/1,(temp%10));  
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(800);      
}; 

      };
}
