#include <avr/io.h>//Подключаем библиотеку для микроконтроллера ATtiny2313
#include <util/delay.h>// Подключаем библиотеку функции задержки
#include <lcd_lib.h>//Подключаем библиотеку для LCD
#include <lcd_lib.c>//Подключаем библиотеку для LCD
int a,b=0;// инициализируем целочисленные переменные a,b и присваиваем им значение 0
int main (void)// главная функция программы 
{ DDRB=0XFF;//порт В как выход (диоды)
  DDRD=0X00;//порт D как вход (кнопки)
  PORTB=0X00;// обнуляем порт B
  PORTD=0XFF;// осуществляем подтяжку внутреннего резистора 
  LCDinit();//инициализируем LCD
  LCDclr();//очищаем экран LCD
   while (1)// задаем бесконечный цикл
  {
      while (~PIND&(1<<PD0))// пока кнопка D0 нажата
      {a++;// инкрементируем значение переменной а
	   
	     if(a<10)//если а-однозначное число
        {LCDGotoXY(0, 0);
	     LCDsendChar(a+48);// выводим  однозначное число а на дисплей
	    }
	    if(a>=10)//если а - двузначное число
	    {LCDGotoXY(0, 0);
	     LCDsendChar(a/10+48);//выводим второй разряд числа а на дисплей
	     LCDGotoXY(1, 0);
	     LCDsendChar(a%10+48);//выводим  первый разряд числа а на дисплей
	  }
	  _delay_ms (300);// ждем 300 мс
	  }
	  
      while (~PIND&(1<<PD1))// пока кнопка D0 нажата
      {b++;// инкрементируем значение переменной b
	   
	     if(b<10)//если b - однозначное
        {LCDGotoXY(3, 0);
	     LCDsendChar(b+48);// выводим  однозначное число b на дисплей
	    }
	    if(b>=10)
	    {LCDGotoXY(3, 0);
	     LCDsendChar(b/10+48);//выводим второй разряд числа b на дисплей
	     LCDGotoXY(4, 0);
	     LCDsendChar(b%10+48);//выводим  первый разряд числа b на дисплей
	  }
	  _delay_ms (300);// ждем 300 мс
	  }
      if (~PIND&(1<<PD2))// если нажата кнопка D2
      {  LCDGotoXY(2, 0);
	     LCDsendChar(43);//выводим символ "+" на дисплей,код которого 43
		 LCDGotoXY(5, 0);
	     LCDsendChar(61);//выводим символ "=" на дисплей,код которого 61
		if(a+b<10)//если результат сложения а и b -однозначное число
        {LCDGotoXY(6, 0);
	     LCDsendChar(a+b+48);// выводим результат сложения на дисплей
	    }
	    if(a+b>=10)//если результат сложения а и b -двузначное число
	    {LCDGotoXY(6, 0);
	     LCDsendChar((a+b)/10+48);// выводим первый разряд результата сложения на дисплей
	     LCDGotoXY(7, 0);
	     LCDsendChar((a+b)%10+48); // выводим второй разряд результата сложения на дисплей
		}
      }
	  if (~PIND&(1<<PD3))// если нажата кнопка D3
      {  LCDGotoXY(2, 0);
	     LCDsendChar(45);
		 LCDGotoXY(5, 0);
	     LCDsendChar(61);
		if(a+b<10)
        {LCDGotoXY(6, 0);
	     LCDsendChar(a-b+48);
	    }
	    if(a+b>=10)
	    {LCDGotoXY(6, 0);
	     LCDsendChar((a-b)/10+48);
	     LCDGotoXY(7, 0);
	     LCDsendChar((a-b)%10+48); 
		}
      }
	  if (~PIND&(1<<PD4))// если нажата кнопка D4
      {  LCDGotoXY(2, 0);
	     LCDsendChar(42);
		 LCDGotoXY(5, 0);
	     LCDsendChar(61);
		if(a*b<10)
        {LCDGotoXY(6, 0);
	     LCDsendChar(a*b+48);
	    }
	    if(a*b>=10)
	    {LCDGotoXY(6, 0);
	     LCDsendChar((a*b)/10+48);
	     LCDGotoXY(7, 0);
	     LCDsendChar((a*b)%10+48); 
		}
      }
	  if (~PIND&(1<<PD5))// если нажата кнопка D5
      {  LCDGotoXY(2, 0);
	     LCDsendChar(47);
		 LCDGotoXY(5, 0);
	     LCDsendChar(61);
		if(a+b<10)
        {LCDGotoXY(6, 0);
	     LCDsendChar(a/b+48);
	    }
	    if(a+b>=10)
	    {LCDGotoXY(6, 0);
	     LCDsendChar((a/b)/10+48);
	     LCDGotoXY(7, 0);
	     LCDsendChar((a/b)%10+48); 
		}
      }
 }
}
  
