/*******************************************************
Date    : 24.09.2023
Chip type               : ATtiny26
AVR Core Clock frequency: 8,000000 MHz
*******************************************************/

#include <tiny26.h>
#include <delay.h>
#include <alcd.h>
#include <1wire.h>
#include <ds18b20.h>


unsigned char ee_code[2][9];  
signed int tem; 



           aaa (unsigned char dev)  // функция считывания t с датчика номер(dev) и вывод значения
                                 //  на лсд с отбросом незначащих нулей (до запятой)
                {          
                      tem=ds18b20_temperature(&ee_code[dev][0])*10; //считываем и умножаем на 10
                           
                       if (tem<0)      // если показание отрицательное
                      {
                            lcd_putsf("-");  //выводим "-" на лсд
                            tem=-tem;        //инвертируем показание 
                     
                      }
                 
                     if (tem<1260) {
                     

                                     if (tem>=1000) goto la1;
                                      if (tem>=100) goto la2;  // отброс незначащих нулей
                                       goto la3 ;             // тоже отброс незначащих нулей
                             la1:           lcd_putchar(tem/1000+48);      // сотни 
                             la2:           lcd_putchar(tem%1000/100+48);  // десятки
                             la3:           lcd_putchar((tem%100)/10+48);  // единицы
                                            lcd_putchar(44);              // запятая
                                            lcd_putchar(tem%10+48);      // десятые градуса
                                            lcd_putchar(223);            // градус °
                                            lcd_putsf("C ");            //C цельсия    
                                     }
                    else lcd_putsf("Err     ");// если t<126 выводим на лсд
                                                                    // иначе выводим "Err" (ошибка)
                      
                 }
void main(void)
{

// RS - PORTA Bit 2
// RD - PORTB Bit 7
// EN - PORTA Bit 3
// D4 - PORTA Bit 4
// D5 - PORTA Bit 5
// D6 - PORTA Bit 6
// D7 - PORTA Bit 7

lcd_init(16);
w1_init();
w1_search(0xf0,ee_code);  // считываем номера датчиков и помещаем в массив ee_code
lcd_putsf("2-ch termometer");
lcd_gotoxy(0,1);
lcd_putsf("Alex_641 KURGAN");
delay_ms (2000);
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Chann.1=");
lcd_gotoxy(0,1);
lcd_putsf("Chann.2=");



while (1)
      {
    lcd_gotoxy(8,0);  
    aaa(0);        //выводим значение температуры 1-го датчика           
    lcd_gotoxy(8,1);
    aaa(1);        //выводим значение температуры 2-го датчика 
      
      }
}
