diff --git a/.vs/hdlc_screen/v14/.atsuo b/.vs/hdlc_screen/v14/.atsuo
new file mode 100644
index 0000000..f74bc15
Binary files /dev/null and b/.vs/hdlc_screen/v14/.atsuo differ
diff --git a/Lсd_print/lcd.h b/Lсd_print/lcd.h
deleted file mode 100644
index f798ae0..0000000
--- a/Lсd_print/lcd.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef Lsd_print_h
-#define Lsd_print_h
-#include "protocol.h"
-
-void Lcd_inciliation();
-void printLcd(struct message* decode_message);
-
-#endif
\ No newline at end of file
diff --git a/MyLCD/MyLCD.h b/MyLCD/MyLCD.h
deleted file mode 100644
index f9d17f9..0000000
--- a/MyLCD/MyLCD.h
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#ifndef MYLCD_H_
-#define MYLCD_H_
-
-
-// ���������� ��� ����
-#include <avr/io.h>
-#include <util/delay.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include <compat/twi.h>
-#include <inttypes.h>
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-#include <stdio.h>
-#include "lcdpcf8574.h"
-#include "pcf8574.h"
-#include "i2cmaster.h"
-
-
-#endif
\ No newline at end of file
diff --git a/MyLCD/lcdpcf8574.cpp b/MyLCD/lcdpcf8574.cpp
deleted file mode 100644
index c5808d5..0000000
--- a/MyLCD/lcdpcf8574.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-#include "MyLCD.h"
-
-// задержеки через асемблер
-#define lcd_e_delay()   __asm__ __volatile__( "rjmp 1f\n 1:" );
-#define lcd_e_toggle()  toggle_e()
-
-
-volatile uint8_t dataport = 0;
-
-static void toggle_e(void);
-
-// сама реализация задержек
-static inline void _delayFourCycles(unsigned int __count)
-{
-    if ( __count == 0 )    
-        __asm__ __volatile__( "rjmp 1f\n 1:" );    
-    else
-        __asm__ __volatile__ (
-    	    "1: sbiw %0,1" "\n\t"                  
-    	    "brne 1b"                              
-    	    : "=w" (__count)
-    	    : "0" (__count)
-    	   );
-}
-
-// тупа оборачиваем функцию в макрос
-#define delay(us)  _delayFourCycles( ( ( 1*(F_CPU/4000) )*us)/1000 )
-
-// переключение пина для начала записи команды
-static void toggle_e(void)
-{
-	pcf8574_setoutputpinhigh(LCD_PCF8574_DEVICEID, LCD_E_PIN);
-    lcd_e_delay();
-    pcf8574_setoutputpinlow(LCD_PCF8574_DEVICEID, LCD_E_PIN);
-}
-
-
-// отправка байта для контроллера LCD
-static void lcd_write(uint8_t data,uint8_t rs) 
-{
-	if (rs) //отправка данных (RS=1, RW=0)
-		dataport |= _BV(LCD_RS_PIN);
-	else // отпрака инструкций(RS=0, RW=0)
-		dataport &= ~_BV(LCD_RS_PIN);
-	dataport &= ~_BV(LCD_RW_PIN);
-	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-
-	// отправка старшего полубайта
-    dataport &= ~_BV(LCD_DATA3_PIN);
-    dataport &= ~_BV(LCD_DATA2_PIN);
-    dataport &= ~_BV(LCD_DATA1_PIN);
-    dataport &= ~_BV(LCD_DATA0_PIN);
-	if(data & 0x80) dataport |= _BV(LCD_DATA3_PIN);
-	if(data & 0x40) dataport |= _BV(LCD_DATA2_PIN);
-	if(data & 0x20) dataport |= _BV(LCD_DATA1_PIN);
-	if(data & 0x10) dataport |= _BV(LCD_DATA0_PIN);
-	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-	lcd_e_toggle();
-
-	// отправка младшего полубайта
-	dataport &= ~_BV(LCD_DATA3_PIN);
-	dataport &= ~_BV(LCD_DATA2_PIN);
-	dataport &= ~_BV(LCD_DATA1_PIN);
-	dataport &= ~_BV(LCD_DATA0_PIN);
-	if(data & 0x08) dataport |= _BV(LCD_DATA3_PIN);
-	if(data & 0x04) dataport |= _BV(LCD_DATA2_PIN);
-	if(data & 0x02) dataport |= _BV(LCD_DATA1_PIN);
-	if(data & 0x01) dataport |= _BV(LCD_DATA0_PIN);
-	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-	lcd_e_toggle();
-
-	// завершаем передачу
-	dataport |= _BV(LCD_DATA0_PIN);
-	dataport |= _BV(LCD_DATA1_PIN);
-	dataport |= _BV(LCD_DATA2_PIN);
-	dataport |= _BV(LCD_DATA3_PIN);
-	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-}
-
-// чтение байта
-static uint8_t lcd_read(uint8_t rs) 
-{
-    uint8_t data;
-
-    if (rs) // запись данных (RS=1, RW=0) 
-    	dataport |= _BV(LCD_RS_PIN);
-    else // запись инструкций (RS=0, RW=0)
-    	dataport &= ~_BV(LCD_RS_PIN);
-    dataport |= _BV(LCD_RW_PIN);
-    pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-
-    pcf8574_setoutputpinhigh(LCD_PCF8574_DEVICEID, LCD_E_PIN);
-	lcd_e_delay();
-	// чтение страшего полубайта
-	data = pcf8574_getoutputpin(LCD_PCF8574_DEVICEID, LCD_DATA0_PIN) << 4;   
-	pcf8574_setoutputpinlow(LCD_PCF8574_DEVICEID, LCD_E_PIN);
-
-	lcd_e_delay();                  
-
-	pcf8574_setoutputpinhigh(LCD_PCF8574_DEVICEID, LCD_E_PIN);
-	lcd_e_delay();
-	// чтение младшего полубайта
-	data |= pcf8574_getoutputpin(LCD_PCF8574_DEVICEID, LCD_DATA0_PIN) &0x0F; 
-	pcf8574_setoutputpinlow(LCD_PCF8574_DEVICEID, LCD_E_PIN);
-
-    return data;
-}
-
-// ждем пока ЖК освободится
-static uint8_t lcd_waitbusy(void)
-
-{
-    register uint8_t c;
-    
-    // ждем
-    while ( (c=lcd_read(0)) & (1<<LCD_BUSY)) {}
-    // задержка
-    delay(2);
-	// получаем адрес
-    return (lcd_read(0)); 
-}
-
-
-// перемещение курсора по строкам
-static inline void lcd_newline(uint8_t pos)
-{
-    register uint8_t addressCounter;
-
-
-#if LCD_LINES==1
-    addressCounter = 0;
-#endif
-#if LCD_LINES==2
-    if ( pos < (LCD_START_LINE2) )
-        addressCounter = LCD_START_LINE2;
-    else
-        addressCounter = LCD_START_LINE1;
-#endif
-#if LCD_LINES==4
-    if ( pos < LCD_START_LINE3 )
-        addressCounter = LCD_START_LINE2;
-    else if ( (pos >= LCD_START_LINE2) && (pos < LCD_START_LINE4) )
-        addressCounter = LCD_START_LINE3;
-    else if ( (pos >= LCD_START_LINE3) && (pos < LCD_START_LINE2) )
-        addressCounter = LCD_START_LINE4;
-    else 
-        addressCounter = LCD_START_LINE1;
-#endif
-    lcd_command((1<<LCD_DDRAM)+addressCounter);
-}
-
-// служебная функция для отправки команд дисплею
-void lcd_command(uint8_t cmd)
-{
-    lcd_waitbusy();
-    lcd_write(cmd,0);
-}
-
-// отправка байта на дисплей
-void lcd_data(uint8_t data)
-{
-    lcd_waitbusy();
-    lcd_write(data,1);
-}
-
-// перемещение курсора по координатам
-void lcd_gotoxy(uint8_t x, uint8_t y)
-{
-#if LCD_LINES==1
-    lcd_command((1<<LCD_DDRAM)+LCD_START_LINE1+x);
-#endif
-#if LCD_LINES==2
-    if ( y==0 ) 
-        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE1+x);
-    else
-        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE2+x);
-#endif
-#if LCD_LINES==4
-    if ( y==0 )
-        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE1+x);
-    else if ( y==1)
-        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE2+x);
-    else if ( y==2)
-        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE3+x);
-    else
-        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE4+x);
-#endif
-}
-
-// тырим координаты
-int lcd_getxy(void)
-{
-    return lcd_waitbusy();
-}
-
-// очистка дисплея
-void lcd_clrscr(void)
-{
-    lcd_command(1<<LCD_CLR);
-}
-
-// вкл и откл подсветки
-void lcd_led(uint8_t onoff)
-{
-	if(onoff)
-		dataport &= ~_BV(LCD_LED_PIN);
-	else
-		dataport |= _BV(LCD_LED_PIN);
-	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-}
-
-// курсов в начало координат
-void lcd_home(void)
-{
-    lcd_command(1<<LCD_HOME);
-}
-
-// отображение символа в текущей позиции курсора
-void lcd_putc(char c)
-{
-    uint8_t pos;
-
-    pos = lcd_waitbusy();
-    if (c=='\n')
-    {
-        lcd_newline(pos);
-    }
-    else
-    {
-#if LCD_WRAP_LINES==1
-#if LCD_LINES==1
-        if ( pos == LCD_START_LINE1+LCD_DISP_LENGTH ) {
-            lcd_write((1<<LCD_DDRAM)+LCD_START_LINE1,0);
-        }
-#elif LCD_LINES==2
-        if ( pos == LCD_START_LINE1+LCD_DISP_LENGTH ) {
-            lcd_write((1<<LCD_DDRAM)+LCD_START_LINE2,0);    
-        }else if ( pos == LCD_START_LINE2+LCD_DISP_LENGTH ){
-            lcd_write((1<<LCD_DDRAM)+LCD_START_LINE1,0);
-        }
-#elif LCD_LINES==4
-        if ( pos == LCD_START_LINE1+LCD_DISP_LENGTH ) {
-            lcd_write((1<<LCD_DDRAM)+LCD_START_LINE2,0);    
-        }else if ( pos == LCD_START_LINE2+LCD_DISP_LENGTH ) {
-            lcd_write((1<<LCD_DDRAM)+LCD_START_LINE3,0);
-        }else if ( pos == LCD_START_LINE3+LCD_DISP_LENGTH ) {
-            lcd_write((1<<LCD_DDRAM)+LCD_START_LINE4,0);
-        }else if ( pos == LCD_START_LINE4+LCD_DISP_LENGTH ) {
-            lcd_write((1<<LCD_DDRAM)+LCD_START_LINE1,0);
-        }
-#endif
-        lcd_waitbusy();
-#endif
-        lcd_write(c, 1);
-    }
-}
-
-// вывод строки на дисплей
-void lcd_puts(const char *s)
-{
-    register char c;
-
-    while ( (c = *s++) ) {
-        lcd_putc(c);
-    }
-}
-
-// вывод строки из памяти
-void lcd_puts_p(const char *progmem_s)
-{
-    register char c;
-
-    while ( (c = pgm_read_byte(progmem_s++)) ) {
-        lcd_putc(c);
-    }
-}
-
-// инициализация дисплея
-void lcd_init(uint8_t dispAttr)
-{
-	#if LCD_PCF8574_INIT == 1
-	//инициализация pcf
-	pcf8574_init();
-	#endif
-
-	dataport = 0;
-	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-
-    delay(16000);
-
-    // первоначальная запись на ЖК-дисплей — 8 бит
-    dataport |= _BV(LCD_DATA1_PIN);  // _BV(LCD_FUNCTION)>>4;
-    dataport |= _BV(LCD_DATA0_PIN);  // _BV(LCD_FUNCTION_8BIT)>>4;
-    pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-
-	// дрючим дисплей чтобы он начал работать
-    lcd_e_toggle();
-    delay(4992);
-    lcd_e_toggle();      
-    delay(64);        
-    lcd_e_toggle();      
-    delay(64);          
-
-    // переходим в 4 битный режим
-    dataport &= ~_BV(LCD_DATA0_PIN);
-    pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
-    lcd_e_toggle();
-    delay(64); 
-    
-
-    lcd_command(LCD_FUNCTION_DEFAULT);      // настраиваем кол-во строк
-    lcd_command(LCD_DISP_OFF);              // вырубаем дисплей
-    lcd_clrscr();                           // чистим экран
-    lcd_command(LCD_MODE_DEFAULT);          // запускаемся в стандартном режиме
-    lcd_command(dispAttr);                  // отправляем настройки
-}
diff --git a/MyLCD/pcf8574.cpp b/MyLCD/pcf8574.cpp
deleted file mode 100644
index e93f3d8..0000000
--- a/MyLCD/pcf8574.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#include "MyLCD.h"
-uint8_t pcf8574_pinstatus[PCF8574_MAXDEVICES];
-
-// инициализация pcf
-void pcf8574_init() {
-	#if PCF8574_I2CINIT == 1
-	// инитим i2c
-	i2c_init();
-	_delay_us(10);
-	#endif
-	uint8_t i = 0;
-	for(i=0; i<PCF8574_MAXDEVICES; i++)
-		pcf8574_pinstatus[i] = 0;
-
-}
-
-// получаем статус вывода
-int8_t pcf8574_getoutput(uint8_t deviceid) {
-	int8_t data = -1;
-	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES)) {
-		data = pcf8574_pinstatus[deviceid];
-	}
-	return data;
-}
-
-// получаем статус пинов вывода
-int8_t pcf8574_getoutputpin(uint8_t deviceid, uint8_t pin) {
-	int8_t data = -1;
-	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) {
-		data = pcf8574_pinstatus[deviceid];
-		data = (data >> pin) & 0b00000001;
-	}
-	return data;
-}
-
-// настройка вывода
-int8_t pcf8574_setoutput(uint8_t deviceid, uint8_t data) {
-	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES)) {
-		pcf8574_pinstatus[deviceid] = data;
-		i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE);
-		i2c_write(data);
-		i2c_stop();
-		return 0;
-	}
-	return -1;
-}
-
-// установить выходные контакты, заменить фактический статус устройства из pinstart для i2c
-int8_t pcf8574_setoutputpins(uint8_t deviceid, uint8_t pinstart, uint8_t pinlength, int8_t data) {
-	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pinstart - pinlength + 1 >= 0 && pinstart - pinlength + 1 >= 0 && pinstart < PCF8574_MAXPINS && pinstart > 0 && pinlength > 0)) {
-	    uint8_t b = 0;
-	    b = pcf8574_pinstatus[deviceid];
-	    uint8_t mask = ((1 << pinlength) - 1) << (pinstart - pinlength + 1);
-		data <<= (pinstart - pinlength + 1);
-		data &= mask;
-		b &= ~(mask);
-		b |= data;
-	    pcf8574_pinstatus[deviceid] = b;
-	    //рестартим
-		i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE);
-		i2c_write(b);
-		i2c_stop();
-		return 0;
-	}
-	return -1;
-}
-
-// настройка пинов вывода
-int8_t pcf8574_setoutputpin(uint8_t deviceid, uint8_t pin, uint8_t data) {
-	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) {
-	    uint8_t b = 0;
-	    b = pcf8574_pinstatus[deviceid];
-	    b = (data != 0) ? (b | (1 << pin)) : (b & ~(1 << pin));
-	    pcf8574_pinstatus[deviceid] = b;
-	    //рестартим
-		i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE);
-		i2c_write(b);
-		i2c_stop();
-		return 0;
-	}
-	return -1;
-}
-
-// установка высокого уровня на выходных пинах
-int8_t pcf8574_setoutputpinhigh(uint8_t deviceid, uint8_t pin) {
-	return pcf8574_setoutputpin(deviceid, pin, 1);
-}
-
-// установка низкого уровня на выходных пинах
-int8_t pcf8574_setoutputpinlow(uint8_t deviceid, uint8_t pin) {
-	return pcf8574_setoutputpin(deviceid, pin, 0);
-}
-
-// получение входных данных
-int8_t pcf8574_getinput(uint8_t deviceid) {
-	int8_t data = -1;
-	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES)) {
-		i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_READ);
-		data = ~i2c_readNak();
-		i2c_stop();
-	}
-	return data;
-}
-
-// получение входного контакта (высокий или низкий)
-int8_t pcf8574_getinputpin(uint8_t deviceid, uint8_t pin) {
-	int8_t data = -1;
-	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) {
-		data = pcf8574_getinput(deviceid);
-		if(data != -1) {
-			data = (data >> pin) & 0b00000001;
-		}
-	}
-	return data;
-}
\ No newline at end of file
diff --git a/MyLCD/twimaster.cpp b/MyLCD/twimaster.cpp
deleted file mode 100644
index 2fad0d7..0000000
--- a/MyLCD/twimaster.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-#include "MyLCD.h"
-
-// инициализация интерфейса i2c
-void i2c_init(void)
-{
-  // предделитель тактовой частоты равен 1 
-  TWSR = 0;     
-  // рассчет скорости передачи данных                   
-  TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// передача условия СТАРТ на шину
-unsigned char i2c_start(unsigned char address)
-{
-    uint8_t   twst;
-	
-	// отправка условия СТАРТ
-	TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
-	// ожидание завершения передачи условия СТАРТ
-	while(!(TWCR & (1<<TWINT)));
-	// проверка значений регистра
-	twst = TW_STATUS & 0xF8;
-	if ( (twst != TW_START) && (twst != TW_REP_START)) return 1;
-	// отправка адреса устрой-ва
-	TWDR = address;
-	TWCR = (1<<TWINT) | (1<<TWEN);
-	// ожидание ответа от ведомого уст-ва
-	while(!(TWCR & (1<<TWINT)));
-	// проверка полученных значений
-	twst = TW_STATUS & 0xF8;
-	if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1;
-
-	return 0;
-
-}
-
-// ждем, если устрой-во занято, а потом передаем условие СТАРТ на шину
-void i2c_start_wait(unsigned char address)
-{
-    uint8_t   twst;
-
-    for(;;)
-    {
-	    // отправка условия СТАРТ
-	    TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
-    	// ожидание завершения передачи условия СТАРТ
-    	while(!(TWCR & (1<<TWINT)));
-    	// проверка значений регистра
-    	twst = TW_STATUS & 0xF8;
-    	if ( (twst != TW_START) && (twst != TW_REP_START)) continue;
-    	// отправка адреса устрой-ва
-    	TWDR = address;
-    	TWCR = (1<<TWINT) | (1<<TWEN);
-    	 // ожидание ответа от ведомого уст-ва
-    	while(!(TWCR & (1<<TWINT)));
-    	// проверка занято ли ведомое уст-во
-    	twst = TW_STATUS & 0xF8;
-    	if ( (twst == TW_MT_SLA_NACK )||(twst ==TW_MR_DATA_NACK) ) 
-    	{    	    
-    	    // устройство занято, отправьте условие остановки для прекращения операции записи
-	        TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-	        // ждем освобождения шины
-	        while(TWCR & (1<<TWSTO));
-    	    continue;
-    	}
-    	break;
-     }
-}
-
-// тупа повторяем условие СТАРТ
-unsigned char i2c_rep_start(unsigned char address)
-{
-    return i2c_start(address);
-}
-
-// передача условия СТОП на шину
-void i2c_stop(void)
-{
-    // отправка условия СТОП
-	TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-	// ждем выполнения условия остановки
-	while(TWCR & (1<<TWSTO));
-}
-
-// отправка данных, если функция вернет 0, то все успешно, иначе нет
-unsigned char i2c_write( unsigned char data )
-{	
-    uint8_t   twst;
-    
-	// отправляем данные на уст-во
-	TWDR = data;
-	TWCR = (1<<TWINT) | (1<<TWEN);
-	// ждем завершения передачи
-	while(!(TWCR & (1<<TWINT)));
-	// записываем ответ от ведомого уст-ва
-	twst = TW_STATUS & 0xF8;
-	if( twst != TW_MT_DATA_ACK) return 1;
-	return 0;
-}
-
-// читаем данные и продолжаем вещание
-unsigned char i2c_readAck(void)
-{
-	TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
-	while(!(TWCR & (1<<TWINT)));    
-
-    return TWDR;
-}
-
-// читаем данные и после их получения передаем услови СТОП
-unsigned char i2c_readNak(void)
-{
-	TWCR = (1<<TWINT) | (1<<TWEN);
-	while(!(TWCR & (1<<TWINT)));
-	
-    return TWDR;
-}
diff --git a/UART/uart.c b/UART/uart.c
deleted file mode 100644
index 1b31d04..0000000
--- a/UART/uart.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <stdint.h>
-#include <string.h>
-#include "circular_buf.h"
-#include "uart.h"
-
-struct circular_buffer uartRxBuffer;
-struct circular_buffer uartTxBuffer;
-
-void UART_init(void) {
-	UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0) | (1<<TXCIE0) | (1 << UDRIE0); // прерывание по приему и передаче
-	UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
-	UBRR0H = 0;
-	UBRR0L = 103;
-}
-
-void UART_send(uint8_t* data, size_t length) {
-	for (size_t i = 0; i < length; i++) {
-		if (!buffer_full(&uartTxBuffer)) {
-			write_buffer(&uartTxBuffer, data[i]);
-			} else {
-			break; // если буфер передачи заполнен, то отправка прерывается
-		}
-	}
-	UCSR0B |= (1 << TXCIE0); // включаем прерывание по завершении передачи
-}
-
-// Получение данных из буфера
-int UART_receive(uint8_t* data, size_t length) {
-    char overflow = 0;  // Флаг переполнения, который устанавливается, если превышен размер массива 
-    uint32_t byteCount = 0;  // Счетчик байтов, принятых из буфера приема
-    // Пока буфер приема не пуст и не превышен лимит длины массива,
-    // функция продолжает читать байты из буфера и сохранять их в массив data.
-    while (!buffer_empty(&uartRxBuffer) && byteCount < length) {
-        int reader = read_buffer(&uartRxBuffer);  // Прием и запись символа в переменную
-        data[byteCount] = reader;  // Запись в массив с индексом byteCount
-        byteCount++;
-    }
-    // Проверка переполнения
-    if (byteCount > length) {
-        overflow = 1;
-    }
-    return overflow ? -1 : byteCount;  // Возвращает количество успешно принятых байт или -1 в случае переполнения
-}
-
-// прерывание по завершению приема
-ISR(USART_RX_vect) {
-	uint8_t data = UDR0; // читаем из регистра UDR0
-	if (!buffer_full(&uartRxBuffer)) {
-		write_buffer(&uartRxBuffer, data);// записываем символ в буфер приема
-	}
-}
-
-ISR(USART_TX_vect) {
-	if (!buffer_empty(&uartTxBuffer)) {
-		UDR0 = read_buffer(&uartTxBuffer);
-	} else {
-		UCSR0B &= ~(1 << TXCIE0); // отключаем прерывание, когда все данные отправлены
-	}
-}
\ No newline at end of file
diff --git a/UART/uart.h b/UART/uart.h
deleted file mode 100644
index 99fd06c..0000000
--- a/UART/uart.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef UART_H
-#define UART_H
-#include <stdint.h> 
-#include <stddef.h>
-
-#define F_CPU 16000000
-
-void UART_init(void);
-void UART_send(uint8_t* data, size_t length);
-int UART_receive(uint8_t* data, size_t length);
-
-
-#endif /* UART_H */
\ No newline at end of file
diff --git a/hdlc/main.c b/hdlc/main.c
deleted file mode 100644
index bf69aa9..0000000
--- a/hdlc/main.c
+++ /dev/null
@@ -1,181 +0,0 @@
-//#include "hdlc.h"
-#include "stdio.h"
-#include "client.h"
-
-int main(){
-    struct Client hdlc;
-    init_hdlc_client(&hdlc, 200);
-    hdlc_connect(&hdlc);
-    uint8_t buffer_for_ex[20];
-    uint8_t fake_buffer;
-    hdlc_get_raw_frame(&hdlc, buffer_for_ex, sizeof(buffer_for_ex));
-
-    for (int i = 0; i < 200; i++){
-        int z = hdlc_timeout_handler(&hdlc, 1);
-        hdlc_decode_recived_raw_data(&hdlc, &fake_buffer, sizeof(fake_buffer), 0, 0);
-    }
-
-    hdlc_get_raw_frame(&hdlc, buffer_for_ex, sizeof(buffer_for_ex));
-    int i = hdlc_decode_recived_raw_data(&hdlc, buffer_for_ex, sizeof(buffer_for_ex), 0, 0);
-    if (i < 0){
-        printf("err connect: %d\n", i);
-    }
-
-    uint8_t data[] = {32, 233, 132, 102, 12, 12, 44, 121, 34};
-    hdlc_send_data(&hdlc, data, sizeof(data));
-    uint8_t buffer_for_ex_data[20];
-
-    hdlc_get_raw_frame(&hdlc, buffer_for_ex_data, 20);
-
-    //printf("first_ex:%d\n", buffer_for_ex_data[0]);
-    uint8_t recivedData[] = {};
-    size_t len_recived_data = 0;
-    int x = hdlc_decode_recived_raw_data(&hdlc, buffer_for_ex_data, 20, recivedData, &len_recived_data);
-    if (x < 0){
-        printf("err send: %d\n", x);
-    }
-    printf("recived data: %d\n", recivedData[1]);
-
-
-
-
-//    uint8_t send[64];
-//    uint8_t buffer[134];
-//    for (int i = 0; i < sizeof(send); i++) {
-//        send[i] = (uint8_t) (rand() % 0x70);
-//    }
-//    send_data(&hdlc, send, sizeof(send_data));
-//    //get_frame(&hdlc, buffer, sizeof(buffer), send_data, sizeof(send_data));
-//
-//    hdlc_get_raw_data(&hdlc, buffer, sizeof(buffer));
-
-    // test 1
-
-//    int ret;
-//    uint8_t frame_data[8], recv_data[8];
-//    size_t i, frame_length = 0, recv_length = 0;
-//    hdlc_control_t control_send, control_recv;
-
-//    // Run through the supported sequence numbers (3-bit)
-//    for (i = 0; i <= 7; i++) {
-//        // Initialize the control field structure with frame type and sequence number
-//        control_send.frame = HDLC_FRAME_ACK;
-//        control_send.seq_no = i;
-//
-//        // Create an empty frame with the control field information
-//        ret = hdlc_frame_data(&control_send, NULL, 0, frame_data, &frame_length);
-//
-//        // Get the data from the frame
-//        ret = hdlc_get_data(&control_recv, frame_data, frame_length, recv_data,
-//                              &recv_length);
-//
-//        // Result should be frame_length minus start flag to be discarded and no bytes received
-//        if(ret != (int )frame_length - 1){
-//            printf("err");
-//        }
-//    }
-//    if (recv_length != 0){
-//        printf("err2");
-//    }
-//
-//    if (control_send.frame != control_recv.frame){
-//        printf("err3");
-//    }
-//
-//    if (control_send.seq_no != control_recv.seq_no){
-//        printf("err4");
-//    }
-
-    // test 2
-
-    // Run through the supported sequence numbers (3-bit)
-//    for (i = 0; i <= 7; i++) {
-//        // Initialize the control field structure with frame type and sequence number
-//        control_send.frame = HDLC_FRAME_DATA;
-//        control_send.seq_no = i;
-//
-//        char* input = "311";
-//        uint8_t data = (uint8_t)atoi(input);
-//
-//        // Create an empty frame with the control field information
-//        ret = hdlc_frame_data(&control_send, &data, 3, frame_data, &frame_length);
-//        if (ret != 0){
-//            printf("err123\n");
-//        }
-//
-//        // Get the data from the frame
-//        ret = hdlc_get_data(&control_recv, frame_data, frame_length, recv_data,
-//                            &recv_length);
-//
-//        // Result should be frame_length minus start flag to be discarded and no bytes received
-//        if(ret != (int )frame_length - 1){
-//            printf("err333\n");
-//        }
-//        if (recv_length != 0){
-//            printf("err2\n");
-//        }
-//
-//        // Verify the control field information
-//        if (control_send.frame != control_recv.frame){
-//            printf("err3\n");
-//        }
-//
-//        if (control_send.seq_no != control_recv.seq_no){
-//            printf("err4\n");
-//        }
-//    }
-
-//    int ret;
-//    hdlc_control_t control;
-//    uint8_t send_data[512], frame_data[530], recv_data[530];
-//    size_t i, frame_length = 0, recv_length = 0, buf_length = 16;
-//
-//    // Initialize data to be send with random values (up to 0x70 to keep below the values to be escaped)
-//    for (i = 0; i < sizeof(send_data); i++) {
-//        send_data[i] = (uint8_t) (rand() % 0x70);
-//    }
-//
-//    // Initialize control field structure and create frame
-//    control.frame = HDLC_FRAME_DATA;
-//    ret = hdlc_frame_data(&control, send_data, sizeof(send_data), frame_data,
-//                            &frame_length);
-//
-//    // Check that frame length is maximum 2 bytes larger than data due to escape of FCS value
-//    if(frame_length >= ((sizeof(send_data) + 6) + 2)){
-//        printf("1");
-//    }
-//    if(ret != 0){
-//        printf("2");
-//    }
-//
-//    // Run though the different buffers (simulating decode of buffers from UART)
-//    for (i = 0; i <= sizeof(send_data); i += buf_length) {
-//        // Decode the data
-//        ret = hdlc_get_data(&control, &frame_data[i], buf_length, recv_data,
-//                              &recv_length);
-//
-//        printf("%zu: %s\n", i, recv_data);
-//
-//        if (i < sizeof(send_data)) {
-//            // All chunks until the last should return no message and zero length
-//            if (ret != -ENOMSG){
-//                printf("3");
-//            }
-//            if (recv_length != 0){
-//                printf("1231");
-//            }
-//        } else {
-//            if (ret > 7){
-//                printf("332");
-//            }
-//            if (recv_length != sizeof(send_data)){
-//                printf("88888");
-//            }
-//            // The last chunk should return max 6 frame bytes - 1 start flag sequence byte + 2 byte for the possible
-//            // escaped FCS = 7 bytes
-////            BOOST_CHECK(ret <= 7);
-////            BOOST_CHECK_EQUAL(recv_length, sizeof(send_data));
-//            //printf("5");
-//        }
-//    }
-}
\ No newline at end of file
diff --git a/hdlc_screen.atsln b/hdlc_screen.atsln
new file mode 100644
index 0000000..012050c
--- /dev/null
+++ b/hdlc_screen.atsln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Atmel Studio Solution File, Format Version 11.00
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "hdlc_screen", "hdlc_screen\hdlc_screen.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|AVR = Debug|AVR
+		Release|AVR = Release|AVR
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR
+		{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR
+		{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR
+		{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/hdlc_screen/.gitignore b/hdlc_screen/.gitignore
new file mode 100644
index 0000000..14484fa
--- /dev/null
+++ b/hdlc_screen/.gitignore
@@ -0,0 +1,14 @@
+hdlc1.c
+hdlc1.h
+hdlc_frame.c
+hdlc_frame.h
+main1.c
+uart.c
+uart.h
+
+!./hdlc
+/.idea/Display_Avr_3.iml
+/.idea/.gitignore
+/.idea/vcs.xml
+/.idea/modules.xml
+/CMakeLists.txt
diff --git a/hdlc_screen/Debug/LCD/Lcd_print.d b/hdlc_screen/Debug/LCD/Lcd_print.d
new file mode 100644
index 0000000..ff5c8f2
--- /dev/null
+++ b/hdlc_screen/Debug/LCD/Lcd_print.d
@@ -0,0 +1,81 @@
+LCD/Lcd_print.d LCD/Lcd_print.o: ../LCD/Lcd_print.c ../LCD/lcd_headers.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \
+ ../LCD/lcdpcf8574.h ../LCD/pcf8574.h ../LCD/i2cmaster.h ../LCD/lcd.h
+
+../LCD/lcd_headers.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
+
+../LCD/lcdpcf8574.h:
+
+../LCD/pcf8574.h:
+
+../LCD/i2cmaster.h:
+
+../LCD/lcd.h:
diff --git a/hdlc_screen/Debug/LCD/Lcd_print.o b/hdlc_screen/Debug/LCD/Lcd_print.o
new file mode 100644
index 0000000..f7cbbd1
Binary files /dev/null and b/hdlc_screen/Debug/LCD/Lcd_print.o differ
diff --git a/hdlc_screen/Debug/LCD/lcdpcf8574.d b/hdlc_screen/Debug/LCD/lcdpcf8574.d
new file mode 100644
index 0000000..5154933
--- /dev/null
+++ b/hdlc_screen/Debug/LCD/lcdpcf8574.d
@@ -0,0 +1,80 @@
+LCD/lcdpcf8574.d LCD/lcdpcf8574.o: ../LCD/lcdpcf8574.c \
+ ../LCD/lcd_headers.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \
+ ../LCD/lcdpcf8574.h ../LCD/pcf8574.h ../LCD/i2cmaster.h
+
+../LCD/lcd_headers.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
+
+../LCD/lcdpcf8574.h:
+
+../LCD/pcf8574.h:
+
+../LCD/i2cmaster.h:
diff --git a/hdlc_screen/Debug/LCD/lcdpcf8574.o b/hdlc_screen/Debug/LCD/lcdpcf8574.o
new file mode 100644
index 0000000..1a577c1
Binary files /dev/null and b/hdlc_screen/Debug/LCD/lcdpcf8574.o differ
diff --git a/hdlc_screen/Debug/LCD/pcf8574.d b/hdlc_screen/Debug/LCD/pcf8574.d
new file mode 100644
index 0000000..9737a21
--- /dev/null
+++ b/hdlc_screen/Debug/LCD/pcf8574.d
@@ -0,0 +1,79 @@
+LCD/pcf8574.d LCD/pcf8574.o: ../LCD/pcf8574.c ../LCD/lcd_headers.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \
+ ../LCD/lcdpcf8574.h ../LCD/pcf8574.h ../LCD/i2cmaster.h
+
+../LCD/lcd_headers.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
+
+../LCD/lcdpcf8574.h:
+
+../LCD/pcf8574.h:
+
+../LCD/i2cmaster.h:
diff --git a/hdlc_screen/Debug/LCD/pcf8574.o b/hdlc_screen/Debug/LCD/pcf8574.o
new file mode 100644
index 0000000..cd5ea5f
Binary files /dev/null and b/hdlc_screen/Debug/LCD/pcf8574.o differ
diff --git a/hdlc_screen/Debug/LCD/twimaster.d b/hdlc_screen/Debug/LCD/twimaster.d
new file mode 100644
index 0000000..b441c06
--- /dev/null
+++ b/hdlc_screen/Debug/LCD/twimaster.d
@@ -0,0 +1,79 @@
+LCD/twimaster.d LCD/twimaster.o: ../LCD/twimaster.c ../LCD/lcd_headers.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \
+ ../LCD/lcdpcf8574.h ../LCD/pcf8574.h ../LCD/i2cmaster.h
+
+../LCD/lcd_headers.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
+
+../LCD/lcdpcf8574.h:
+
+../LCD/pcf8574.h:
+
+../LCD/i2cmaster.h:
diff --git a/hdlc_screen/Debug/LCD/twimaster.o b/hdlc_screen/Debug/LCD/twimaster.o
new file mode 100644
index 0000000..b8e0201
Binary files /dev/null and b/hdlc_screen/Debug/LCD/twimaster.o differ
diff --git a/hdlc_screen/Debug/Makefile b/hdlc_screen/Debug/Makefile
new file mode 100644
index 0000000..8fbb4dd
--- /dev/null
+++ b/hdlc_screen/Debug/Makefile
@@ -0,0 +1,251 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+SHELL := cmd.exe
+RM := rm -rf
+
+USER_OBJS :=
+
+LIBS := 
+PROJ := 
+
+O_SRCS := 
+C_SRCS := 
+S_SRCS := 
+S_UPPER_SRCS := 
+OBJ_SRCS := 
+ASM_SRCS := 
+PREPROCESSING_SRCS := 
+OBJS := 
+OBJS_AS_ARGS := 
+C_DEPS := 
+C_DEPS_AS_ARGS := 
+EXECUTABLES := 
+OUTPUT_FILE_PATH :=
+OUTPUT_FILE_PATH_AS_ARGS :=
+AVR_APP_PATH :=$$$AVR_APP_PATH$$$
+QUOTE := "
+ADDITIONAL_DEPENDENCIES:=
+OUTPUT_FILE_DEP:=
+LIB_DEP:=
+LINKER_SCRIPT_DEP:=
+
+# Every subdirectory with source files must be described here
+SUBDIRS :=  \
+../hdlc \
+../LCD \
+../UART \
+../protocol
+
+
+# Add inputs and outputs from these tool invocations to the build variables 
+C_SRCS +=  \
+../hdlc/client.c \
+../hdlc/fcs.c \
+../hdlc/hdlc.c \
+../LCD/lcdpcf8574.c \
+../LCD/Lcd_print.c \
+../LCD/pcf8574.c \
+../LCD/twimaster.c \
+../main.c \
+../protocol/protocol.c \
+../UART/circular_buf.c \
+../UART/uart.c
+
+
+PREPROCESSING_SRCS += 
+
+
+ASM_SRCS += 
+
+
+OBJS +=  \
+hdlc/client.o \
+hdlc/fcs.o \
+hdlc/hdlc.o \
+LCD/lcdpcf8574.o \
+LCD/Lcd_print.o \
+LCD/pcf8574.o \
+LCD/twimaster.o \
+main.o \
+protocol/protocol.o \
+UART/circular_buf.o \
+UART/uart.o
+
+OBJS_AS_ARGS +=  \
+hdlc/client.o \
+hdlc/fcs.o \
+hdlc/hdlc.o \
+LCD/lcdpcf8574.o \
+LCD/Lcd_print.o \
+LCD/pcf8574.o \
+LCD/twimaster.o \
+main.o \
+protocol/protocol.o \
+UART/circular_buf.o \
+UART/uart.o
+
+C_DEPS +=  \
+hdlc/client.d \
+hdlc/fcs.d \
+hdlc/hdlc.d \
+LCD/lcdpcf8574.d \
+LCD/Lcd_print.d \
+LCD/pcf8574.d \
+LCD/twimaster.d \
+main.d \
+protocol/protocol.d \
+UART/circular_buf.d \
+UART/uart.d
+
+C_DEPS_AS_ARGS +=  \
+hdlc/client.d \
+hdlc/fcs.d \
+hdlc/hdlc.d \
+LCD/lcdpcf8574.d \
+LCD/Lcd_print.d \
+LCD/pcf8574.d \
+LCD/twimaster.d \
+main.d \
+protocol/protocol.d \
+UART/circular_buf.d \
+UART/uart.d
+
+OUTPUT_FILE_PATH +=hdlc_screen.elf
+
+OUTPUT_FILE_PATH_AS_ARGS +=hdlc_screen.elf
+
+ADDITIONAL_DEPENDENCIES:=
+
+OUTPUT_FILE_DEP:= ./makedep.mk
+
+LIB_DEP+= 
+
+LINKER_SCRIPT_DEP+= 
+
+
+# AVR32/GNU C Compiler
+hdlc/client.o: ../hdlc/client.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+hdlc/fcs.o: ../hdlc/fcs.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+hdlc/hdlc.o: ../hdlc/hdlc.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+LCD/lcdpcf8574.o: ../LCD/lcdpcf8574.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+LCD/Lcd_print.o: ../LCD/Lcd_print.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+LCD/pcf8574.o: ../LCD/pcf8574.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+LCD/twimaster.o: ../LCD/twimaster.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+./main.o: .././main.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+protocol/protocol.o: ../protocol/protocol.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+UART/circular_buf.o: ../UART/circular_buf.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+UART/uart.o: ../UART/uart.c
+	@echo Building file: $<
+	@echo Invoking: AVR/GNU C Compiler : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE)  -x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"   -o "$@" "$<" 
+	@echo Finished building: $<
+	
+
+
+
+
+# AVR32/GNU Preprocessing Assembler
+
+
+
+# AVR32/GNU Assembler
+
+
+
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
+endif
+
+# Add inputs and outputs from these tool invocations to the build variables 
+
+# All Target
+all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
+
+$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP)
+	@echo Building target: $@
+	@echo Invoking: AVR/GNU Linker : 5.4.0
+	$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="hdlc_screen.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group -Wl,--gc-sections -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"  
+	@echo Finished building target: $@
+	"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures  "hdlc_screen.elf" "hdlc_screen.hex"
+	"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom  --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0  --no-change-warnings -O ihex "hdlc_screen.elf" "hdlc_screen.eep" || exit 0
+	"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "hdlc_screen.elf" > "hdlc_screen.lss"
+	"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "hdlc_screen.elf" "hdlc_screen.srec"
+	"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "hdlc_screen.elf"
+	
+	
+
+
+
+
+
+# Other Targets
+clean:
+	-$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)  
+	-$(RM) $(C_DEPS_AS_ARGS)   
+	rm -rf "hdlc_screen.elf" "hdlc_screen.a" "hdlc_screen.hex" "hdlc_screen.lss" "hdlc_screen.eep" "hdlc_screen.map" "hdlc_screen.srec" "hdlc_screen.usersignatures"
+	
\ No newline at end of file
diff --git a/hdlc_screen/Debug/UART/circular_buf.d b/hdlc_screen/Debug/UART/circular_buf.d
new file mode 100644
index 0000000..322208c
--- /dev/null
+++ b/hdlc_screen/Debug/UART/circular_buf.d
@@ -0,0 +1,25 @@
+UART/circular_buf.d UART/circular_buf.o: ../UART/circular_buf.c \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \
+ ../UART/circular_buf.h
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h:
+
+../UART/circular_buf.h:
diff --git a/hdlc_screen/Debug/UART/circular_buf.o b/hdlc_screen/Debug/UART/circular_buf.o
new file mode 100644
index 0000000..60f1aaf
Binary files /dev/null and b/hdlc_screen/Debug/UART/circular_buf.o differ
diff --git a/hdlc_screen/Debug/UART/uart.d b/hdlc_screen/Debug/UART/uart.d
new file mode 100644
index 0000000..921522d
--- /dev/null
+++ b/hdlc_screen/Debug/UART/uart.d
@@ -0,0 +1,48 @@
+UART/uart.d UART/uart.o: ../UART/uart.c \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ ../UART/circular_buf.h ../UART/uart.h
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+../UART/circular_buf.h:
+
+../UART/uart.h:
diff --git a/hdlc_screen/Debug/UART/uart.o b/hdlc_screen/Debug/UART/uart.o
new file mode 100644
index 0000000..5b6409f
Binary files /dev/null and b/hdlc_screen/Debug/UART/uart.o differ
diff --git a/hdlc_screen/Debug/hdlc/client.d b/hdlc_screen/Debug/hdlc/client.d
new file mode 100644
index 0000000..79e090e
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc/client.d
@@ -0,0 +1,32 @@
+hdlc/client.d hdlc/client.o: ../hdlc/client.c ../hdlc/client.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \
+ ../hdlc/hdlc.h ../hdlc/fcs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h
+
+../hdlc/client.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h:
+
+../hdlc/hdlc.h:
+
+../hdlc/fcs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
diff --git a/hdlc_screen/Debug/hdlc/client.o b/hdlc_screen/Debug/hdlc/client.o
new file mode 100644
index 0000000..d2db73c
Binary files /dev/null and b/hdlc_screen/Debug/hdlc/client.o differ
diff --git a/hdlc_screen/Debug/hdlc/fcs.d b/hdlc_screen/Debug/hdlc/fcs.d
new file mode 100644
index 0000000..3b73636
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc/fcs.d
@@ -0,0 +1,3 @@
+hdlc/fcs.d hdlc/fcs.o: ../hdlc/fcs.c ../hdlc/fcs.h
+
+../hdlc/fcs.h:
diff --git a/hdlc_screen/Debug/hdlc/fcs.o b/hdlc_screen/Debug/hdlc/fcs.o
new file mode 100644
index 0000000..0ab82ea
Binary files /dev/null and b/hdlc_screen/Debug/hdlc/fcs.o differ
diff --git a/hdlc_screen/Debug/hdlc/hdlc.d b/hdlc_screen/Debug/hdlc/hdlc.d
new file mode 100644
index 0000000..bbe987e
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc/hdlc.d
@@ -0,0 +1,17 @@
+hdlc/hdlc.d hdlc/hdlc.o: ../hdlc/hdlc.c ../hdlc/hdlc.h ../hdlc/fcs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h
+
+../hdlc/hdlc.h:
+
+../hdlc/fcs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
diff --git a/hdlc_screen/Debug/hdlc/hdlc.o b/hdlc_screen/Debug/hdlc/hdlc.o
new file mode 100644
index 0000000..2149b24
Binary files /dev/null and b/hdlc_screen/Debug/hdlc/hdlc.o differ
diff --git a/hdlc_screen/Debug/hdlc_screen.eep b/hdlc_screen/Debug/hdlc_screen.eep
new file mode 100644
index 0000000..7c166a1
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc_screen.eep
@@ -0,0 +1 @@
+:00000001FF
diff --git a/hdlc_screen/Debug/hdlc_screen.elf b/hdlc_screen/Debug/hdlc_screen.elf
new file mode 100644
index 0000000..ae2623f
Binary files /dev/null and b/hdlc_screen/Debug/hdlc_screen.elf differ
diff --git a/hdlc_screen/Debug/hdlc_screen.hex b/hdlc_screen/Debug/hdlc_screen.hex
new file mode 100644
index 0000000..bbba2b5
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc_screen.hex
@@ -0,0 +1,508 @@
+:100000000C9434000C9451000C9451000C94510049
+:100010000C9451000C9451000C9451000C9451001C
+:100020000C9451000C9451000C9451000C9451000C
+:100030000C9451000C9451000C9451000C945100FC
+:100040000C9451000C9451000C94100B0C94510022
+:100050000C94420B0C9451000C9451000C945100E0
+:100060000C9451000C94510011241FBECFEFD8E026
+:10007000DEBFCDBF13E0A0E0B1E0E2E5FDE102C0EC
+:1000800005900D92A234B107D9F723E0A2E4B3E0C2
+:1000900001C01D92A639B207E1F70E9426070C9411
+:1000A000A70E0C940000FC0181E0808372836183C1
+:1000B000709344036093430384E1838314828FEF3E
+:1000C0009FEF9683858390878783928781871486A5
+:1000D0001386168615860895FC0183E08083808947
+:1000E000887F808B81E0878713820895FC0180815F
+:1000F000823089F485E080834134510578F4828927
+:10010000887F828B118A748B638B568B458B13820D
+:1001100080E090E008958CEF9FEF08958FEF9FEFC0
+:100120000895CF92DF92EF92FF920F931F93CF9398
+:10013000DF9300D0CDB7DEB77C016B015A834983D2
+:10014000FC0180818530D1F44589568963897489A1
+:100150008E010F5F1F4F9601C70141960E94480311
+:10016000992364F49F938F9380E091E09F938F9302
+:100170000E94990B0F900F900F900F90F7018081C4
+:100180008330D1F48E010F5F1F4F960140E050E0A5
+:1001900060E070E0C7010F960E944803992364F461
+:1001A0009F938F9380E091E09F938F930E94990B90
+:1001B0000F900F900F900F90F70180818430D1F451
+:1001C0008E010F5F1F4F960140E050E060E070E04D
+:1001D000C70147960E944803992364F49F938F9325
+:1001E00080E091E09F938F930E94990B0F900F9066
+:1001F0000F900F9080E090E00F900F90DF91CF91E3
+:100200001F910F91FF90EF90DF90CF9008952F9264
+:100210003F924F925F926F927F928F929F92AF9296
+:10022000BF92CF92DF92EF92FF920F931F93CF93E3
+:10023000DF9300D000D0CDB7DEB75C015C834B8389
+:10024000222E332E38018DB69EB6C42ED52E8DB7F4
+:100250009EB78C199D090FB6F8949EBF0FBE8DBF37
+:10026000EDB7FEB731962F01CE0103967C018F01C9
+:100270009601AB01BE016F5F7F4FC50104960E94DE
+:10028000220299230CF448C08A81877090E0F5011E
+:10029000238130E08217930751F084E08083808DC2
+:1002A000887F808F82E0878B8AEF9FEF35C08981BE
+:1002B000813049F018F08230D9F025C0F2E0CF1A31
+:1002C000D10829F40EC082E0F50180831CC0F20140
+:1002D000A22DB32D4C0C5D1C81918D93E415F50579
+:1002E000D9F7F301D182C08286E0F50180830BC08B
+:1002F00084E0F5018083808D887F808F82E0878B0A
+:100300008AEF9FEF09C08091430390914403F50168
+:100310009283818380E090E00FB6F8949EBE0FBE7A
+:100320008DBE0F900F900F900F90DF91CF911F9186
+:100330000F91FF90EF90DF90CF90BF90AF909F9084
+:100340008F907F906F905F904F903F902F90089587
+:10035000FC0121813281261B370B32832183121647
+:1003600013061CF480E090E008958BEF9FEF089552
+:10037000FC01E627FF27EE0FFF1FEA5EFE4F892FE5
+:10038000992720813181822793270895FA0193E8E4
+:10039000980F923070F420813181A9014F5F5F4F37
+:1003A00051834083DB01A20FB31F9DE79C9390E232
+:1003B000892720813181A9014F5F5F4F518340839D
+:1003C000FB01E20FF31F80830895982F80FF0BC07D
+:1003D00086958695837011F082E001C081E0929548
+:1003E0009695977003C09695977080E097700895E2
+:1003F000FC019081913049F018F0923061F011C009
+:1004000081818770880F8061089581818295880F2E
+:10041000807E8160089581818295880F807E8960C9
+:10042000089580E00895FC018FEF9FEF9283818310
+:100430009683858394838383128611861086178220
+:10044000108208953F924F925F926F927F928F92A7
+:100450009F92AF92BF92CF92DF92EF92FF920F9353
+:100460001F93CF93DF9300D000D0CDB7DEB70097B6
+:1004700009F4EAC06115710509F4E9C04115510597
+:1004800009F4E8C00115110509F4E7C0E114F1040D
+:1004900009F4E6C0380149017A8369839C838B8320
+:1004A0002115310509F499C08A01C12CD12C689419
+:1004B000442445F833243394590121E0A21AB108A9
+:1004C000AB81BC8113968D919C91149799239CF4D8
+:1004D000F80180818E3709F070C0CA14DB0420F463
+:1004E00081818E3709F470C0EB81FC818781908512
+:1004F0009483838362C0F80150802EE7521219C0A2
+:10050000CA14DB0420F421812E3709F45DC0AB81CD
+:10051000BC8117962D913C911897AC014F5F5F4FAE
+:100520004217530709F450C016963C932E93159723
+:100530005DC0BDE75B1204C0EB81FC8130823DC031
+:10054000AB81BC818C91882319F01C92508054247B
+:10055000652DEB81FC81818192810E94B801AB8184
+:10056000BC8112969C938E93119717962D913C9176
+:10057000189713968D919C91149702962817390716
+:1005800041F4852D0E94E501E981FA819183808300
+:1005900014C0821793078CF4AB81BC8119968D919E
+:1005A0009C911A979C012F5F3F4F1A963C932E9374
+:1005B0001997F301E80FF91F5082EB81FC818781C5
+:1005C0009085019690878783FFEFCF1ADF0A0F5F30
+:1005D0001F4F8C149D0409F073CFAB81BC8113961F
+:1005E0008D919C91149799233CF06401EB81FC81DF
+:1005F00025813681332334F4D7011D921C928EE07D
+:1006000092ED30C00496281739073CF0EB81FC814D
+:1006100081819281883B904F31F0D701CD92DC925D
+:100620000EE012ED0AC0EB81FC8181859285029774
+:10063000D7018D939C930C2D1D2D8B819C810E9445
+:100640001302802F912F0EC08EE092ED0BC08EE032
+:1006500092ED08C08EE092ED05C08EE092ED02C0F2
+:100660008EE092ED0F900F900F900F90DF91CF9151
+:100670001F910F91FF90EF90DF90CF90BF90AF90C0
+:100680009F908F907F906F905F904F903F900895D4
+:100690005F926F927F928F929F92AF92BF92CF9212
+:1006A000DF92EF92FF920F931F93CF93DF9300D0CF
+:1006B000CDB7DEB7009709F473C06115710521F459
+:1006C0004115510509F06FC02115310509F46EC0BF
+:1006D0000115110509F46DC0380179015A014B016A
+:1006E0008C0181E090E09A8389838EE7F901808311
+:1006F0006FEF8FEF9FEF0E94B8016C01AE014F5F6B
+:100700005F4FB7018FEF0E94C601C8010E94F80138
+:10071000582E682FC6010E94B8016C01AE014F5FD0
+:100720005F4FB701852D0E94C601F80180818111BC
+:1007300019C0A114B104B1F084018A0C9B1C5801AA
+:10074000F80161918F01C6010E94B8016C01AE01F0
+:100750004F5F5F4FB701F50180810E94C60180168F
+:10076000910669F7C094D094AE014F5F5F4FB70117
+:100770008C2D0E94C601AE014F5F5F4FB7018D2DDA
+:100780000E94C60189819A81F701E80FF91F2EE7BF
+:1007900020830196F3019183808380E090E00BC079
+:1007A0008EE092ED08C08EE092ED05C08EE092EDF5
+:1007B00002C08EE092ED0F900F90DF91CF911F91CC
+:1007C0000F91FF90EF90DF90CF90BF90AF909F90F0
+:1007D0008F907F906F905F900895CF93882331F032
+:1007E0008091420381608093420305C0809142035F
+:1007F0008E7F809342038091420382608093420304
+:100800006091420380E00E94950662E080E00E94D1
+:10081000D60600C064E080E00E948106C82F62E036
+:1008200080E00E94DA0600C062E080E00E94D60606
+:1008300000C064E080E00E948106C295C07F8F7096
+:10084000C82B62E080E00E94DA068C2FCF910895D9
+:1008500080E00E94ED038823DCF300C080E00E946A
+:10086000ED03089562E080E00E94D60600C062E0D9
+:1008700080E00E94DA060895CF93C82F662331F0F6
+:100880008091420381608093420305C080914203BE
+:100890008E7F80934203809142038D7F8093420339
+:1008A0006091420380E00E949506809142038F7719
+:1008B00080934203809142038F7B80934203809117
+:1008C00042038F7D80934203809142038F7E809309
+:1008D0004203CC232CF4809142038068809342032E
+:1008E000C6FF05C080914203806480934203C5FF28
+:1008F00005C080914203806280934203C4FF05C01B
+:10090000809142038061809342036091420380E0C2
+:100910000E9495060E943204809142038F77809353
+:100920004203809142038F7B809342038091420374
+:100930008F7D80934203809142038F7E8093420398
+:10094000C3FF05C080914203806880934203C2FFC9
+:1009500005C080914203806480934203C1FF05C0BB
+:1009600080914203806280934203C0FF05C0809162
+:1009700042038061809342036091420380E00E94C1
+:1009800095060E9432048091420380618093420365
+:10099000809142038062809342038091420380648D
+:1009A0008093420380914203806880934203609168
+:1009B000420380E00E949506CF910895CF93C82FFF
+:1009C0000E94280460E08C2F0E943C04CF9108957F
+:1009D000611104C080580E94DE04089580540E9472
+:1009E000DE04089581E00E94DE040895882331F03A
+:1009F00080914203877F8093420305C08091420328
+:100A00008860809342036091420380E00E949506D3
+:100A1000089582E00E94DE040895CF93C82F0E94BB
+:100A20002804CA3049F4803410F080E001C080E42A
+:100A300080580E94DE0413C0803129F460E080EC0D
+:100A40000E943C0406C0803521F460E080E80E94EA
+:100A50003C040E94280461E08C2F0E943C04CF914A
+:100A60000895CF93DF93EC012196FC0180818823C8
+:100A700029F00E940D0589918111FBCFDF91CF9163
+:100A800008951F93CF93DF93182F0E94780610923A
+:100A900042036091420380E00E94950680EA9FE055
+:100AA0000197F1F780914203806280934203809125
+:100AB00042038061809342036091420380E00E9480
+:100AC00095060E94320480EE94E00197F1F70E94AF
+:100AD0003204C0E1D0E0CE010197F1F70E94320468
+:100AE000CE010197F1F7809142038F7E80934203FC
+:100AF0006091420380E00E9495060E943204219793
+:100B0000F1F788E20E94DE0488E00E94DE040E9481
+:100B1000F20486E00E94DE04812F0E94DE04DF9151
+:100B2000CF911F9108958DE00E9441050E94090513
+:100B300080E00E94F6040895CF92DF92EF92FF9238
+:100B40000F931F93CF93DF938C017B01C901F801B1
+:100B500001900020E9F73197BF01601B710B0E94E3
+:100B6000760B670120E1C20ED11CE7019C012E1912
+:100B70003F09F80101900020E9F73197BF01601BA0
+:100B8000710BC9018C0F9D1F0E94760BF801E80FB5
+:100B9000F91F80818993CC15DD0559F7F701108A7B
+:100BA000DF91CF911F910F91FF90EF90DF90CF9049
+:100BB0000895AF92BF92CF92DF92EF92FF920F9380
+:100BC0001F931F930F93FF92EF925F934F933F9367
+:100BD0002F939F938F937F936F9386E193E09F93DF
+:100BE0008F93BF92AF92DF92CF920E94AF0B8DB7DF
+:100BF0009EB742960FB6F8949EBF0FBE8DBF1F9151
+:100C00000F91FF90EF90DF90CF90BF90AF9008953D
+:100C10006F927F92AF92BF92CF92DF92EF92FF924C
+:100C20000F931F93CF93DF93CDB7DEB7C254D10993
+:100C30000FB6F894DEBF0FBECDBF3C012091490333
+:100C400030914A0341E150E0BE016F5F7F4F0E9447
+:100C50009C05F301E85BFF4FE080F1800281138186
+:100C60003497208131814281538134976081718131
+:100C7000828193810F2EF1E1AF2EB12CF02DFE0178
+:100C800072966F010E94D90540E150E0BE016F5F8E
+:100C90007F4FCE0183960E948A0B40E150E0B6015F
+:100CA000CE01C3960E948A0B60E080E00E94E804B7
+:100CB000CE0183960E94310561E080E00E94E80445
+:100CC000CE01C3960E943105CE5BDF4F0FB6F8947C
+:100CD000DEBF0FBECDBFDF91CF911F910F91FF906F
+:100CE000EF90DF90CF90BF90AF907F906F9008957E
+:100CF0000E94DE0683E08A95F1F7000010924B0314
+:100D0000089581110EC0683070F480914B03082E55
+:100D1000000C990B02C0959587956A95E2F7817052
+:100D200008958FEF08958FEF0895CF9381110DC02F
+:100D3000C62F60934B038EE40E94E4068C2F0E9422
+:100D400014070E940B0780E001C08FEFCF91089538
+:100D5000CF93DF93811124C0683020F580914B033D
+:100D6000442349F0C1E0D0E002C0CC0FDD1F6A95FA
+:100D7000E2F7C82B09C0C1E0D0E002C0CC0FDD1FF4
+:100D80006A95E2F7C095C823C0934B038EE40E9496
+:100D9000E4068C2F0E9414070E940B0780E003C01A
+:100DA0008FEF01C08FEFDF91CF91089541E00E9456
+:100DB000A806089540E00E94A80608951092B90080
+:100DC0008DEF8093B800089594EA9093BC00ECEB0B
+:100DD000F0E090819923ECF79091B900987F9830DA
+:100DE00011F09031A1F48093BB0084E88093BC00A3
+:100DF000ECEBF0E080818823ECF79091B900987FCC
+:100E0000983139F081E0903429F480E0089581E050
+:100E1000089580E0089584E98093BC00ECEBF0E055
+:100E2000808184FDFDCF08958093BB0084E880938A
+:100E3000BC00ECEBF0E080818823ECF79091B900E6
+:100E4000987F81E0983209F480E008954F925F9294
+:100E50006F927F928F929F92AF92BF92CF92DF92CA
+:100E6000EF92FF920F931F93CF93DF93CDB7DEB72F
+:100E7000C350D2400FB6F894DEBF0FBECDBF0E9464
+:100E800093050E949E0A68EC70E0CE0101960E94D4
+:100E90005300CE0101960E946C004AE050E0BE0172
+:100EA000665E7F4FCE0101960E9491006AE070E07D
+:100EB000CE014A960E94AA0A64E170E0CE018051F8
+:100EC0009E4F0E94CE0A61E070E0CE0101960E9422
+:100ED000A801059681F44AE050E0BE01665E7F4FAE
+:100EE000CE0101960E9491006AE070E0CE014A9620
+:100EF0000E94AA0AE1CF00E010E020E030E044E1E7
+:100F000050E0BE0160517E4FCE0101960E94070164
+:100F10008C019923ACF40A3F8FEF1807B1F444E138
+:100F200050E0BE01605A7E4FCE0101960E949100B2
+:100F300064E170E0CE01805A9E4F0E94AA0A05C06B
+:100F40008981823009F0B8CF03C0802F912FFEC075
+:100F500084EA90E7ADE9BFE38CA39DA3AEA3BFA352
+:100F60008DEC9CECA0EBB1E488A799A7AAA7BBA73E
+:100F700080E090E0A8ECB2E48CA79DA7AEA7BFA745
+:100F800083E090E099AB88AB85E293E09BAB8AABC2
+:100F900082E090E09DAB8CAB2E01E6E74E0E511C3B
+:100FA0005F924F923E01F6E36F0E711C7F926F923B
+:100FB0008CA09DA0AEA0BFA0C8A4D9A4EAA4FBA405
+:100FC0000CA51DA52EA53FA548A959A96AA97BA9CD
+:100FD0008CA99DA90E945C09F20140815181B30155
+:100FE000CE0101960E94760048E450E0BE016858A8
+:100FF0007F4FCE0101960E94910068E470E0CE011F
+:1010000088589F4F0E94AA0A0F900F900F900F9040
+:1010100060E970E0CE01805A9E4F0E94CE0A61E0E6
+:1010200070E0CE0101960E94A801059689F448E47B
+:1010300050E0BE0168587F4FCE0101960E9491009A
+:1010400068E470E0CE0188589F4F0E94AA0AE0CF62
+:101050008E0113959E0120543F4F40E950E0BE01A0
+:10106000605A7E4FCE0101960E9407018C019923A0
+:101070009CF40696B1F444E150E0BE0160517E4F0D
+:10108000CE0101960E94910064E170E0CE01805192
+:101090009E4F0E94AA0A05C08981863009F0B8CF08
+:1010A00003C0802F912F52C0C050DF4F68817981DB
+:1010B000C050D140AE014E5F5E4FCE0180549F4F75
+:1010C0000E94BE08CE5FDE4F88819981AA81BB81D4
+:1010D000C250D140CC5ADE4F88839983AA83BB8308
+:1010E000C455D140CA5FDE4F88819981AA81BB81F6
+:1010F000C650D140C85ADE4F88839983AA83BB83E8
+:10110000C855D140C65FDE4F88819981AA81BB81D5
+:10111000CA50D140C45ADE4F88839983AA83BB83C7
+:10112000CC55D140C05FDE4F68817981C051D1403C
+:101130004FE350E0CE018C5E9E4F0E948A0BCE01A1
+:101140008C5E9E4F0E94080680E090E0CD5FDD4FF0
+:101150000FB6F894DEBF0FBECDBFDF91CF911F91C8
+:101160000F91FF90EF90DF90CF90BF90AF909F9046
+:101170008F907F906F905F904F9008958F929F9285
+:10118000AF92BF92CF92DF92EF92FF920F931F9395
+:10119000CF93DF93CDB7DEB7C054D1090FB6F89423
+:1011A000DEBF0FBECDBF4B01672B09F46CC020E042
+:1011B00030E060E070E0A12CB12C6E01E5E0CE0ED5
+:1011C000D11CFE0131967F01FC01E20FF31F20814B
+:1011D000211127C0DB011196A80FB91FFE0131961E
+:1011E0002D912193EC15FD05D9F76C5F7F4FF5012B
+:1011F000EE0FFF1FEE0FFF1FE40FF51F09811A818D
+:101200002B813C810083118322833383FA0124855F
+:1012100035852F5F3F4F3587248795012F5F3F4FDF
+:101220005901FC01E60FF71F2081213021F59B01B8
+:101230002F5F3F4FFC01E20FF31FE081EE2399F097
+:101240006E5F7F4FDC01A60FB71FF701B9016F5F1B
+:101250007F4F2D91219330E08F010E191F09021746
+:101260001307ACF301C0B90129813A81FA0137872C
+:101270002687118A108A6F5F7F4F9B016815790559
+:1012800008F4A2CF02C0A12CB12CFA01B586A48625
+:10129000C05CDF4F0FB6F894DEBF0FBECDBFDF914D
+:1012A000CF911F910F91FF90EF90DF90CF90BF9063
+:1012B000AF909F908F9008954F925F926F927F9220
+:1012C0008F929F92AF92BF92CF92DF92EF92FF9256
+:1012D0000F931F93CF93DF93CDB7DEB7C255D109DC
+:1012E0000FB6F894DEBF0FBECDBF22968FAE229709
+:1012F00023969FAE23972496AFAE24972596BFAE34
+:1013000025972696CFAE26972796DFAE2797289665
+:10131000EFAE28972996FFAE29972A960FAF2A9706
+:101320002B961FAF2B972C962FAF2C972D963FAF58
+:101330002D972E964FAF2E972F965FAF2F976096D3
+:101340006FAF609761967FAF619762968FAF62973C
+:1013500063969FAF6397A7960EAD1FADA7972F9685
+:10136000CEACDFAC2F9763966EAD7FAD6397C114A3
+:10137000D10409F466C07801CE018F5B9F4F5601FE
+:10138000AA0CBB1CAA0CBB1CA80EB91EAE014B5F5D
+:101390005F4FF7011192DC014D905D906D907D9053
+:1013A000CD0149825A826B827C82DE0111963D9189
+:1013B0003193A417B507D9F7B5E0EB0EF11C8A15E8
+:1013C0009B0539F79601220F331F220F331F2C0D77
+:1013D0003D1D6115710509F1D801A20FB31F81E010
+:1013E0008C93D9011196A00FB11F2E5F3F4F6C93C4
+:1013F00061968EAD9FAD61979A838983DE011196C8
+:10140000F801E20FF31F80E090E02F5F3F4F4D9116
+:101410004193019686179707C0F3A996EEADFFADED
+:10142000A9973183208313C081E0F8018083618311
+:1014300061968EAD9FAD61979A83898322E030E0FB
+:10144000DDCF6115710581F720E030E0E6CFCE5A9F
+:10145000DF4F0FB6F894DEBF0FBECDBFDF91CF9147
+:101460001F910F91FF90EF90DF90CF90BF90AF90C2
+:101470009F908F907F906F905F904F900895FC01A8
+:1014800081E090E030A121A1321711F080E090E0DE
+:101490000895FC0121A130E02F5F3F4F2F7130787C
+:1014A000332334F421503109206E3F6F2F5F3F4FBB
+:1014B000FC0140A150E081E090E02417350711F0D5
+:1014C00080E090E008951F93CF93DF93EC01162FF7
+:1014D0000E94490A892B81F489A190E0FE01E80F5E
+:1014E000F91F108301968F719078992324F4019746
+:1014F000806E9F6F019689A3DF91CF911F91089510
+:10150000FC0120A181A12817B1F030E0DF01A20F7A
+:10151000B31F4C9150E02F5F3F4F2F713078332332
+:1015200034F421503109206E3F6F2F5F3F4F20A3CD
+:10153000842F952F08958FEF9FEF089588EF809364
+:10154000C10086E08093C2001092C50087E68093B8
+:10155000C40008950F931F93CF93DF936115710516
+:1015600099F08C01EC01060F171F8EE693E00E94A4
+:10157000490A892B49F4699170E08EE693E00E9454
+:10158000630AC017D10789F7E1ECF0E0808180643D
+:101590008083DF91CF911F910F9108958F929F9239
+:1015A000AF92BF92CF92DF92EF92FF920F931F9371
+:1015B000CF93DF938B01EC01C12CD12C76014B0131
+:1015C000A12CB12C0AC08CE493E00E94800A89937C
+:1015D0008FEFC81AD80AE80AF80A8CE493E00E9450
+:1015E0003F0A892B29F4C814D904EA04FB0458F3F0
+:1015F00020E030E00C151D052E053F0510F0C6015A
+:1016000002C08FEF9FEFDF91CF911F910F91FF905D
+:10161000EF90DF90CF90BF90AF909F908F90089504
+:101620001F920F920FB60F9211242F933F934F9357
+:101630005F936F937F938F939F93AF93BF93CF935A
+:10164000EF93FF93C091C6008CE493E00E94490A97
+:10165000892B31F46C2F70E08CE493E00E94630AD4
+:10166000FF91EF91CF91BF91AF919F918F917F911A
+:101670006F915F914F913F912F910F900FBE0F90FF
+:101680001F9018951F920F920FB60F9211242F934F
+:101690003F934F935F936F937F938F939F93AF93FA
+:1016A000BF93EF93FF938EE693E00E943F0A892B4E
+:1016B00039F48EE693E00E94800A8093C60005C04C
+:1016C000E1ECF0E080818F7B8083FF91EF91BF910F
+:1016D000AF919F918F917F916F915F914F913F91CA
+:1016E0002F910F900FBE0F901F901895AA1BBB1B38
+:1016F00051E107C0AA1FBB1FA617B70710F0A61B12
+:10170000B70B881F991F5A95A9F780959095BC0132
+:10171000CD010895FB01DC014150504048F001909B
+:101720000D920020C9F701C01D9241505040E0F7D2
+:101730000895A0E0B0E0EFE9FBE00C94800EAE016C
+:101740004B5F5F4FFA0161917191AF0180919203FC
+:10175000909193030E94DF0BE2E00C949C0EAEE0AC
+:10176000B0E0E5EBFBE00C947E0E0D891E898F89BD
+:10177000988D26E02C831A83098397FF02C080E0AE
+:1017800090E801979E838D83AE01455E5F4F698D22
+:101790007A8DCE0101960E94DF0B4D815E8157FD4F
+:1017A0000AC02F813885421753070CF49A01F801BB
+:1017B000E20FF31F10822E96E4E00C949A0EABE039
+:1017C000B0E0E5EEFBE00C94700E6C017B018A0149
+:1017D000FC0117821682838181FFCCC1CE01019664
+:1017E0003C01F6019381F70193FD859193FF81916F
+:1017F0007F01882309F4BAC1853239F493FD8591BC
+:1018000093FF81917F01853229F4B60190E00E9417
+:10181000D60DE7CF912C212C312CFFE1F315D8F018
+:101820008B3279F038F4803279F08332A1F4232DB1
+:1018300020611DC08D3261F0803369F4232D216059
+:1018400016C0832D8260382EE32DE4603E2E2AC020
+:10185000F32DF8601DC037FC2DC020ED280F2A3075
+:1018600040F08E32B9F436FC81C1232D2064322E33
+:1018700019C036FE06C08AE0989E200D1124922ED3
+:1018800011C0EAE02E9E200D1124222EF32DF062CD
+:101890003F2E08C08C3621F4832D8068382E02C07C
+:1018A000883641F4F70193FD859193FF81917F0183
+:1018B0008111B3CF982F9F7D9554933028F40C5FFE
+:1018C0001F4F9FE399830DC0833631F0833771F04A
+:1018D000833509F059C021C0F801808189830E5FEA
+:1018E0001F4F88248394912C530113C02801F2E0E8
+:1018F0004F0E511CF801A080B18036FE03C0692D47
+:1019000070E002C06FEF7FEFC5010E94CB0D4C016C
+:101910008201F32DFF773F2E16C0280122E0420EF0
+:10192000511CF801A080B18036FE03C0692D70E023
+:1019300002C06FEF7FEFC5010E94C00D4C01F32D77
+:10194000F0683F2E820133FC1BC0822D90E0881688
+:101950009906B0F4B60180E290E00E94D60D2A9478
+:10196000F4CFF50137FC859137FE81915F01B60117
+:1019700090E00E94D60D21102A9421E0821A91084D
+:101980008114910471F7E8C0843611F0893641F56D
+:10199000F80137FE07C060817181828193810C5FFD
+:1019A0001F4F08C060817181072E000C880B990BB6
+:1019B0000E5F1F4FF32DFF763F2E97FF09C09095C6
+:1019C0008095709561957F4F8F4F9F4FF0683F2EA8
+:1019D0002AE030E0A3010E94120E882E861845C02E
+:1019E000853731F4232D2F7EB22E2AE030E025C03A
+:1019F000932D997FB92E8F36C1F018F4883579F080
+:101A0000B5C0803719F0883721F0B0C0E92FE06108
+:101A1000BE2EB4FE0DC0FB2DF460BF2E09C034FEF7
+:101A20000AC0292F2660B22E06C028E030E005C08B
+:101A300020E130E002C020E132E0F801B7FE07C04B
+:101A400060817181828193810C5F1F4F06C060812C
+:101A5000718180E090E00E5F1F4FA3010E94120E83
+:101A6000882E8618FB2DFF773F2E36FE0DC0232DC6
+:101A70002E7FA22E891458F434FE0BC032FC09C00C
+:101A8000832D8E7EA82E05C0B82CA32C03C0B82CA5
+:101A900001C0B92CA4FE0FC0FE01E80DF11D80812C
+:101AA000803321F49A2D997EA92E09C0A2FE06C08A
+:101AB000B394B39404C08A2D867809F0B394A3FC40
+:101AC00011C0A0FE06C0B21488F4280C922C9B18FA
+:101AD0000EC0B21460F4B60180E290E00E94D60D10
+:101AE000B394F7CFB21418F42B1802C0982C212C01
+:101AF000A4FE10C0B60180E390E00E94D60DA2FEC5
+:101B000017C0A1FC03C088E790E002C088E590E020
+:101B1000B6010CC08A2D867859F0A1FE02C08BE276
+:101B200001C080E2A7FC8DE2B60190E00E94D60DD4
+:101B3000891438F4B60180E390E00E94D60D9A949F
+:101B4000F7CF8A94F301E80DF11D8081B60190E092
+:101B50000E94D60D8110F5CF222009F442CEB601A5
+:101B600080E290E00E94D60D2A94F6CFF60186819D
+:101B7000978102C08FEF9FEF2B96E2E10C948C0EC1
+:101B8000FC010590615070400110D8F78095909548
+:101B90008E0F9F1F0895FC0161507040019001104D
+:101BA000D8F7809590958E0F9F1F08950F931F93E0
+:101BB000CF93DF93FB01238121FD03C08FEF9FEFC4
+:101BC0002CC022FF16C046815781248135814217DF
+:101BD000530744F4A081B1819D012F5F3F4F3183B2
+:101BE00020838C93268137812F5F3F4F3783268355
+:101BF00014C08B01EC01FB010084F185E02D0995F7
+:101C0000892BE1F6D80116968D919C911797019634
+:101C100017969C938E931697CE01DF91CF911F91CB
+:101C20000F910895FA01AA27283051F1203181F14E
+:101C3000E8946F936E7F6E5F7F4F8F4F9F4FAF4FD4
+:101C4000B1E03ED0B4E03CD0670F781F891F9A1FE7
+:101C5000A11D680F791F8A1F911DA11D6A0F711D9B
+:101C6000811D911DA11D20D009F468943F912AE0A7
+:101C7000269F11243019305D3193DEF6CF0108958F
+:101C8000462F4770405D4193B3E00FD0C9F7F6CFC0
+:101C9000462F4F70405D4A3318F0495D31FD405288
+:101CA000419302D0A9F7EACFB4E0A695979587951E
+:101CB00077956795BA95C9F70097610571050895FD
+:101CC0009B01AC010A2E06945795479537952795A9
+:101CD000BA95C9F7620F731F841F951FA01D089541
+:101CE0002F923F924F925F926F927F928F929F922C
+:101CF000AF92BF92CF92DF92EF92FF920F931F931A
+:101D0000CF93DF93CDB7DEB7CA1BDB0B0FB6F894CA
+:101D1000DEBF0FBECDBF09942A88398848885F840A
+:101D20006E847D848C849B84AA84B984C884DF807B
+:101D3000EE80FD800C811B81AA81B981CE0FD11D5F
+:101D40000FB6F894DEBF0FBECDBFED010895F89435
+:021D5000FFCFC3
+:101D520065727220696E206765745F6672616D6577
+:101D62003A2025640A000000891112239B3224467E
+:101D7200AD573665BF74488CC19D5AAFD3BE6CCA8D
+:101D8200E5DB7EE9F7F88110080193331A22A556A4
+:101D92002C47B7753E64C99C408DDBBF52AEEDDA6D
+:101DA20064CBFFF976E802218B3010029913266783
+:101DB200AF763444BD554AADC3BC588ED19F6EEB4D
+:101DC200E7FA7CC8F5D983310A2091121803A77764
+:101DD2002E66B5543C45CBBD42ACD99E508FEFFB2D
+:101DE20066EAFDD874C904428D5316619F702004BF
+:101DF200A9153227BB364CCEC5DF5EEDD7FC68880D
+:101E0200E1997AABF3BA85520C4397711E60A11423
+:101E12002805B3373A26CDDE44CFDFFD56ECE998EC
+:101E22006089FBBB72AA06638F7214409D51222502
+:101E3200AB343006B9174EEFC7FE5CCCD5DD6AA9CC
+:101E4200E3B8788AF19B87730E6295501C41A335E3
+:101E52002A24B1163807CFFF46EEDDDC54CDEBB9AC
+:101E620062A8F99A708B088481951AA793B62CC23E
+:101E7200A5D33EE1B7F04008C919522BDB3A644EB4
+:101E8200ED5F766DFF7C899400859BB712A6ADD27B
+:101E920024C3BFF136E0C1184809D33B5A2AE55E94
+:101EA2006C4FF77D7E6C0AA583B4188691972EE35A
+:101EB200A7F23CC0B5D14229CB38500AD91B666F74
+:101EC200EF7E744CFD5D8BB502A499961087AFF33B
+:101ED20026E2BDD034C1C3394A28D11A580BE77F54
+:101EE2006E6EF55C7C4D0CC685D71EE597F4288096
+:101EF200A1913AA3B3B2444ACD5B5669DF78600C34
+:101F0200E91D722FFB3E8DD604C79FF516E4A990FA
+:101F12002081BBB332A2C55A4C4BD7795E68E11C13
+:101F2200680DF33F7A2E0EE787F61CC495D52AA1D9
+:101F3200A3B03882B193466BCF7A5448DD59622DF3
+:101F4200EB3C700EF91F8FF706E69DD414C5ABB1BA
+:101F520022A0B9923083C77B4E6AD5585C49E33DD3
+:101F62006A2CF11E780F252E32662E252E32662E11
+:101F7200252E326600776F72642077617220696E57
+:101F8200206E657720776F726C6420696F206578A8
+:021F920000004D
+:00000001FF
diff --git a/hdlc_screen/Debug/hdlc_screen.lss b/hdlc_screen/Debug/hdlc_screen.lss
new file mode 100644
index 0000000..116c3eb
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc_screen.lss
@@ -0,0 +1,4530 @@
+
+hdlc_screen.elf:     file format elf32-avr
+
+Sections:
+Idx Name          Size      VMA       LMA       File off  Algn
+  0 .data         00000242  00800100  00001d52  00001de6  2**0
+                  CONTENTS, ALLOC, LOAD, DATA
+  1 .text         00001d52  00000000  00000000  00000094  2**1
+                  CONTENTS, ALLOC, LOAD, READONLY, CODE
+  2 .bss          00000054  00800342  00800342  00002028  2**0
+                  ALLOC
+  3 .comment      0000008c  00000000  00000000  00002028  2**0
+                  CONTENTS, READONLY
+  4 .note.gnu.avr.deviceinfo 00000040  00000000  00000000  000020b4  2**2
+                  CONTENTS, READONLY
+  5 .debug_aranges 00000320  00000000  00000000  000020f4  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  6 .debug_info   0000378f  00000000  00000000  00002414  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  7 .debug_abbrev 00001589  00000000  00000000  00005ba3  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  8 .debug_line   00001e37  00000000  00000000  0000712c  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  9 .debug_frame  000009a0  00000000  00000000  00008f64  2**2
+                  CONTENTS, READONLY, DEBUGGING
+ 10 .debug_str    00000cc5  00000000  00000000  00009904  2**0
+                  CONTENTS, READONLY, DEBUGGING
+ 11 .debug_loc    00002fe7  00000000  00000000  0000a5c9  2**0
+                  CONTENTS, READONLY, DEBUGGING
+ 12 .debug_ranges 000002e8  00000000  00000000  0000d5b0  2**0
+                  CONTENTS, READONLY, DEBUGGING
+
+Disassembly of section .text:
+
+00000000 <__vectors>:
+       0:	0c 94 34 00 	jmp	0x68	; 0x68 <__ctors_end>
+       4:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+       8:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+       c:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      10:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      14:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      18:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      1c:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      20:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      24:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      28:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      2c:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      30:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      34:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      38:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      3c:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      40:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      44:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      48:	0c 94 10 0b 	jmp	0x1620	; 0x1620 <__vector_18>
+      4c:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      50:	0c 94 42 0b 	jmp	0x1684	; 0x1684 <__vector_20>
+      54:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      58:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      5c:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      60:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+      64:	0c 94 51 00 	jmp	0xa2	; 0xa2 <__bad_interrupt>
+
+00000068 <__ctors_end>:
+      68:	11 24       	eor	r1, r1
+      6a:	1f be       	out	0x3f, r1	; 63
+      6c:	cf ef       	ldi	r28, 0xFF	; 255
+      6e:	d8 e0       	ldi	r29, 0x08	; 8
+      70:	de bf       	out	0x3e, r29	; 62
+      72:	cd bf       	out	0x3d, r28	; 61
+
+00000074 <__do_copy_data>:
+      74:	13 e0       	ldi	r17, 0x03	; 3
+      76:	a0 e0       	ldi	r26, 0x00	; 0
+      78:	b1 e0       	ldi	r27, 0x01	; 1
+      7a:	e2 e5       	ldi	r30, 0x52	; 82
+      7c:	fd e1       	ldi	r31, 0x1D	; 29
+      7e:	02 c0       	rjmp	.+4      	; 0x84 <__do_copy_data+0x10>
+      80:	05 90       	lpm	r0, Z+
+      82:	0d 92       	st	X+, r0
+      84:	a2 34       	cpi	r26, 0x42	; 66
+      86:	b1 07       	cpc	r27, r17
+      88:	d9 f7       	brne	.-10     	; 0x80 <__do_copy_data+0xc>
+
+0000008a <__do_clear_bss>:
+      8a:	23 e0       	ldi	r18, 0x03	; 3
+      8c:	a2 e4       	ldi	r26, 0x42	; 66
+      8e:	b3 e0       	ldi	r27, 0x03	; 3
+      90:	01 c0       	rjmp	.+2      	; 0x94 <.do_clear_bss_start>
+
+00000092 <.do_clear_bss_loop>:
+      92:	1d 92       	st	X+, r1
+
+00000094 <.do_clear_bss_start>:
+      94:	a6 39       	cpi	r26, 0x96	; 150
+      96:	b2 07       	cpc	r27, r18
+      98:	e1 f7       	brne	.-8      	; 0x92 <.do_clear_bss_loop>
+      9a:	0e 94 26 07 	call	0xe4c	; 0xe4c <main>
+      9e:	0c 94 a7 0e 	jmp	0x1d4e	; 0x1d4e <_exit>
+
+000000a2 <__bad_interrupt>:
+      a2:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>
+
+000000a6 <init_hdlc_client>:
+
+#define SIZE_DATA_BUFFERS 64
+
+int connecting_frame_timeout_bf;
+
+void init_hdlc_client(struct Client* client, int connecting_frame_timeout){
+      a6:	fc 01       	movw	r30, r24
+    client->state = IDLE_STATE;
+      a8:	81 e0       	ldi	r24, 0x01	; 1
+      aa:	80 83       	st	Z, r24
+    client->connecting_frame_timeout = connecting_frame_timeout;
+      ac:	72 83       	std	Z+2, r23	; 0x02
+      ae:	61 83       	std	Z+1, r22	; 0x01
+    connecting_frame_timeout_bf = connecting_frame_timeout;
+      b0:	70 93 44 03 	sts	0x0344, r23	; 0x800344 <connecting_frame_timeout_bf+0x1>
+      b4:	60 93 43 03 	sts	0x0343, r22	; 0x800343 <connecting_frame_timeout_bf>
+    client->current_index_frame = 20;
+      b8:	84 e1       	ldi	r24, 0x14	; 20
+      ba:	83 83       	std	Z+3, r24	; 0x03
+
+    client->current_state_hdlc.control_escape = 0;
+      bc:	14 82       	std	Z+4, r1	; 0x04
+    client->current_state_hdlc.fcs = FCS_INIT_VALUE;
+      be:	8f ef       	ldi	r24, 0xFF	; 255
+      c0:	9f ef       	ldi	r25, 0xFF	; 255
+      c2:	96 83       	std	Z+6, r25	; 0x06
+      c4:	85 83       	std	Z+5, r24	; 0x05
+    client->current_state_hdlc.start_index = -1;
+      c6:	90 87       	std	Z+8, r25	; 0x08
+      c8:	87 83       	std	Z+7, r24	; 0x07
+    client->current_state_hdlc.end_index = -1;
+      ca:	92 87       	std	Z+10, r25	; 0x0a
+      cc:	81 87       	std	Z+9, r24	; 0x09
+    client->current_state_hdlc.src_index = 0;
+      ce:	14 86       	std	Z+12, r1	; 0x0c
+      d0:	13 86       	std	Z+11, r1	; 0x0b
+    client->current_state_hdlc.dest_index = 0;
+      d2:	16 86       	std	Z+14, r1	; 0x0e
+      d4:	15 86       	std	Z+13, r1	; 0x0d
+      d6:	08 95       	ret
+
+000000d8 <hdlc_connect>:
+}
+
+void hdlc_connect(struct Client* client){
+      d8:	fc 01       	movw	r30, r24
+    client->state = CONNECTING;
+      da:	83 e0       	ldi	r24, 0x03	; 3
+      dc:	80 83       	st	Z, r24
+
+    client->frameS.seq_no = 0;
+      de:	80 89       	ldd	r24, Z+16	; 0x10
+      e0:	88 7f       	andi	r24, 0xF8	; 248
+      e2:	80 8b       	std	Z+16, r24	; 0x10
+    client->frameS.frame = S_FRAME;
+      e4:	81 e0       	ldi	r24, 0x01	; 1
+      e6:	87 87       	std	Z+15, r24	; 0x0f
+    client->current_index_frame = client->frameS.seq_no;
+      e8:	13 82       	std	Z+3, r1	; 0x03
+      ea:	08 95       	ret
+
+000000ec <hdlc_send_data>:
+}
+
+int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len){
+      ec:	fc 01       	movw	r30, r24
+    if (client->state != READY_STATE){
+      ee:	80 81       	ld	r24, Z
+      f0:	82 30       	cpi	r24, 0x02	; 2
+      f2:	89 f4       	brne	.+34     	; 0x116 <hdlc_send_data+0x2a>
+        return ERR_INVALID_STATE;
+    }
+
+    client->state = RECIVING;
+      f4:	85 e0       	ldi	r24, 0x05	; 5
+      f6:	80 83       	st	Z, r24
+
+    if (SIZE_DATA_BUFFERS < data_len){
+      f8:	41 34       	cpi	r20, 0x41	; 65
+      fa:	51 05       	cpc	r21, r1
+      fc:	78 f4       	brcc	.+30     	; 0x11c <hdlc_send_data+0x30>
+        return ERR_INVALID_DATA_SIZE;
+    }
+
+    client->frameI.seq_no = 0;
+      fe:	82 89       	ldd	r24, Z+18	; 0x12
+     100:	88 7f       	andi	r24, 0xF8	; 248
+     102:	82 8b       	std	Z+18, r24	; 0x12
+    client->frameI.frame = I_FRAME;
+     104:	11 8a       	std	Z+17, r1	; 0x11
+    client->data_i_frame = data;
+     106:	74 8b       	std	Z+20, r23	; 0x14
+     108:	63 8b       	std	Z+19, r22	; 0x13
+    client->len_data_i_frame = data_len;
+     10a:	56 8b       	std	Z+22, r21	; 0x16
+     10c:	45 8b       	std	Z+21, r20	; 0x15
+    client->current_index_frame = client->frameI.seq_no;
+     10e:	13 82       	std	Z+3, r1	; 0x03
+
+    client->state = RECIVING;
+    return 0;
+     110:	80 e0       	ldi	r24, 0x00	; 0
+     112:	90 e0       	ldi	r25, 0x00	; 0
+     114:	08 95       	ret
+    client->current_index_frame = client->frameS.seq_no;
+}
+
+int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len){
+    if (client->state != READY_STATE){
+        return ERR_INVALID_STATE;
+     116:	8c ef       	ldi	r24, 0xFC	; 252
+     118:	9f ef       	ldi	r25, 0xFF	; 255
+     11a:	08 95       	ret
+    }
+
+    client->state = RECIVING;
+
+    if (SIZE_DATA_BUFFERS < data_len){
+        return ERR_INVALID_DATA_SIZE;
+     11c:	8f ef       	ldi	r24, 0xFF	; 255
+     11e:	9f ef       	ldi	r25, 0xFF	; 255
+    client->len_data_i_frame = data_len;
+    client->current_index_frame = client->frameI.seq_no;
+
+    client->state = RECIVING;
+    return 0;
+}
+     120:	08 95       	ret
+
+00000122 <hdlc_get_raw_frame>:
+
+int hdlc_get_raw_frame(struct Client *client, uint8_t* buffer, size_t lenBuffer) {
+     122:	cf 92       	push	r12
+     124:	df 92       	push	r13
+     126:	ef 92       	push	r14
+     128:	ff 92       	push	r15
+     12a:	0f 93       	push	r16
+     12c:	1f 93       	push	r17
+     12e:	cf 93       	push	r28
+     130:	df 93       	push	r29
+     132:	00 d0       	rcall	.+0      	; 0x134 <hdlc_get_raw_frame+0x12>
+     134:	cd b7       	in	r28, 0x3d	; 61
+     136:	de b7       	in	r29, 0x3e	; 62
+     138:	7c 01       	movw	r14, r24
+     13a:	6b 01       	movw	r12, r22
+     13c:	5a 83       	std	Y+2, r21	; 0x02
+     13e:	49 83       	std	Y+1, r20	; 0x01
+    if(client->state == RECIVING){
+     140:	fc 01       	movw	r30, r24
+     142:	80 81       	ld	r24, Z
+     144:	85 30       	cpi	r24, 0x05	; 5
+     146:	d1 f4       	brne	.+52     	; 0x17c <hdlc_get_raw_frame+0x5a>
+        int ret = hdlc_frame_data(&client->frameI, client->data_i_frame,
+     148:	45 89       	ldd	r20, Z+21	; 0x15
+     14a:	56 89       	ldd	r21, Z+22	; 0x16
+     14c:	63 89       	ldd	r22, Z+19	; 0x13
+     14e:	74 89       	ldd	r23, Z+20	; 0x14
+     150:	8e 01       	movw	r16, r28
+     152:	0f 5f       	subi	r16, 0xFF	; 255
+     154:	1f 4f       	sbci	r17, 0xFF	; 255
+     156:	96 01       	movw	r18, r12
+     158:	c7 01       	movw	r24, r14
+     15a:	41 96       	adiw	r24, 0x11	; 17
+     15c:	0e 94 48 03 	call	0x690	; 0x690 <hdlc_frame_data>
+                                  client->len_data_i_frame, buffer, &lenBuffer);
+        if (ret < 0){
+     160:	99 23       	and	r25, r25
+     162:	64 f4       	brge	.+24     	; 0x17c <hdlc_get_raw_frame+0x5a>
+            printf("err in get_frame: %d\n", ret);
+     164:	9f 93       	push	r25
+     166:	8f 93       	push	r24
+     168:	80 e0       	ldi	r24, 0x00	; 0
+     16a:	91 e0       	ldi	r25, 0x01	; 1
+     16c:	9f 93       	push	r25
+     16e:	8f 93       	push	r24
+     170:	0e 94 99 0b 	call	0x1732	; 0x1732 <printf>
+     174:	0f 90       	pop	r0
+     176:	0f 90       	pop	r0
+     178:	0f 90       	pop	r0
+     17a:	0f 90       	pop	r0
+        }
+    }
+
+    if (client->state == CONNECTING){
+     17c:	f7 01       	movw	r30, r14
+     17e:	80 81       	ld	r24, Z
+     180:	83 30       	cpi	r24, 0x03	; 3
+     182:	d1 f4       	brne	.+52     	; 0x1b8 <hdlc_get_raw_frame+0x96>
+        int ret = hdlc_frame_data(&client->frameS, NULL, 0, buffer, &lenBuffer);
+     184:	8e 01       	movw	r16, r28
+     186:	0f 5f       	subi	r16, 0xFF	; 255
+     188:	1f 4f       	sbci	r17, 0xFF	; 255
+     18a:	96 01       	movw	r18, r12
+     18c:	40 e0       	ldi	r20, 0x00	; 0
+     18e:	50 e0       	ldi	r21, 0x00	; 0
+     190:	60 e0       	ldi	r22, 0x00	; 0
+     192:	70 e0       	ldi	r23, 0x00	; 0
+     194:	c7 01       	movw	r24, r14
+     196:	0f 96       	adiw	r24, 0x0f	; 15
+     198:	0e 94 48 03 	call	0x690	; 0x690 <hdlc_frame_data>
+
+        if (ret < 0){
+     19c:	99 23       	and	r25, r25
+     19e:	64 f4       	brge	.+24     	; 0x1b8 <hdlc_get_raw_frame+0x96>
+            printf("err in get_frame: %d\n", ret);
+     1a0:	9f 93       	push	r25
+     1a2:	8f 93       	push	r24
+     1a4:	80 e0       	ldi	r24, 0x00	; 0
+     1a6:	91 e0       	ldi	r25, 0x01	; 1
+     1a8:	9f 93       	push	r25
+     1aa:	8f 93       	push	r24
+     1ac:	0e 94 99 0b 	call	0x1732	; 0x1732 <printf>
+     1b0:	0f 90       	pop	r0
+     1b2:	0f 90       	pop	r0
+     1b4:	0f 90       	pop	r0
+     1b6:	0f 90       	pop	r0
+        }
+    }
+
+    if (client->state == DISCONNECTING){
+     1b8:	f7 01       	movw	r30, r14
+     1ba:	80 81       	ld	r24, Z
+     1bc:	84 30       	cpi	r24, 0x04	; 4
+     1be:	d1 f4       	brne	.+52     	; 0x1f4 <hdlc_get_raw_frame+0xd2>
+        int ret = hdlc_frame_data(&client->frame_rej, NULL, 0, buffer, &lenBuffer);
+     1c0:	8e 01       	movw	r16, r28
+     1c2:	0f 5f       	subi	r16, 0xFF	; 255
+     1c4:	1f 4f       	sbci	r17, 0xFF	; 255
+     1c6:	96 01       	movw	r18, r12
+     1c8:	40 e0       	ldi	r20, 0x00	; 0
+     1ca:	50 e0       	ldi	r21, 0x00	; 0
+     1cc:	60 e0       	ldi	r22, 0x00	; 0
+     1ce:	70 e0       	ldi	r23, 0x00	; 0
+     1d0:	c7 01       	movw	r24, r14
+     1d2:	47 96       	adiw	r24, 0x17	; 23
+     1d4:	0e 94 48 03 	call	0x690	; 0x690 <hdlc_frame_data>
+
+        if (ret < 0){
+     1d8:	99 23       	and	r25, r25
+     1da:	64 f4       	brge	.+24     	; 0x1f4 <hdlc_get_raw_frame+0xd2>
+            printf("err in get_frame: %d\n", ret);
+     1dc:	9f 93       	push	r25
+     1de:	8f 93       	push	r24
+     1e0:	80 e0       	ldi	r24, 0x00	; 0
+     1e2:	91 e0       	ldi	r25, 0x01	; 1
+     1e4:	9f 93       	push	r25
+     1e6:	8f 93       	push	r24
+     1e8:	0e 94 99 0b 	call	0x1732	; 0x1732 <printf>
+     1ec:	0f 90       	pop	r0
+     1ee:	0f 90       	pop	r0
+     1f0:	0f 90       	pop	r0
+     1f2:	0f 90       	pop	r0
+        }
+    }
+
+    return 0;
+}
+     1f4:	80 e0       	ldi	r24, 0x00	; 0
+     1f6:	90 e0       	ldi	r25, 0x00	; 0
+     1f8:	0f 90       	pop	r0
+     1fa:	0f 90       	pop	r0
+     1fc:	df 91       	pop	r29
+     1fe:	cf 91       	pop	r28
+     200:	1f 91       	pop	r17
+     202:	0f 91       	pop	r16
+     204:	ff 90       	pop	r15
+     206:	ef 90       	pop	r14
+     208:	df 90       	pop	r13
+     20a:	cf 90       	pop	r12
+     20c:	08 95       	ret
+
+0000020e <hdlc_decode_recived_raw_data>:
+
+int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data){
+     20e:	2f 92       	push	r2
+     210:	3f 92       	push	r3
+     212:	4f 92       	push	r4
+     214:	5f 92       	push	r5
+     216:	6f 92       	push	r6
+     218:	7f 92       	push	r7
+     21a:	8f 92       	push	r8
+     21c:	9f 92       	push	r9
+     21e:	af 92       	push	r10
+     220:	bf 92       	push	r11
+     222:	cf 92       	push	r12
+     224:	df 92       	push	r13
+     226:	ef 92       	push	r14
+     228:	ff 92       	push	r15
+     22a:	0f 93       	push	r16
+     22c:	1f 93       	push	r17
+     22e:	cf 93       	push	r28
+     230:	df 93       	push	r29
+     232:	00 d0       	rcall	.+0      	; 0x234 <hdlc_decode_recived_raw_data+0x26>
+     234:	00 d0       	rcall	.+0      	; 0x236 <hdlc_decode_recived_raw_data+0x28>
+     236:	cd b7       	in	r28, 0x3d	; 61
+     238:	de b7       	in	r29, 0x3e	; 62
+     23a:	5c 01       	movw	r10, r24
+     23c:	5c 83       	std	Y+4, r21	; 0x04
+     23e:	4b 83       	std	Y+3, r20	; 0x03
+     240:	22 2e       	mov	r2, r18
+     242:	33 2e       	mov	r3, r19
+     244:	38 01       	movw	r6, r16
+            return ERR_INVALID_SEQ_NUMBER_FRAME;
+    }
+
+    client->connecting_frame_timeout = connecting_frame_timeout_bf;
+    return 0;
+}
+     246:	8d b6       	in	r8, 0x3d	; 61
+     248:	9e b6       	in	r9, 0x3e	; 62
+    return 0;
+}
+
+int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data){
+    hdlc_control_t recv_control;
+    uint8_t recive[len_buffer];
+     24a:	c4 2e       	mov	r12, r20
+     24c:	d5 2e       	mov	r13, r21
+     24e:	8d b7       	in	r24, 0x3d	; 61
+     250:	9e b7       	in	r25, 0x3e	; 62
+     252:	8c 19       	sub	r24, r12
+     254:	9d 09       	sbc	r25, r13
+     256:	0f b6       	in	r0, 0x3f	; 63
+     258:	f8 94       	cli
+     25a:	9e bf       	out	0x3e, r25	; 62
+     25c:	0f be       	out	0x3f, r0	; 63
+     25e:	8d bf       	out	0x3d, r24	; 61
+     260:	ed b7       	in	r30, 0x3d	; 61
+     262:	fe b7       	in	r31, 0x3e	; 62
+     264:	31 96       	adiw	r30, 0x01	; 1
+     266:	2f 01       	movw	r4, r30
+
+    int ret = hdlc_get_data_with_state(&client->current_state_hdlc,&recv_control, buffer, len_buffer, recive,
+     268:	ce 01       	movw	r24, r28
+     26a:	03 96       	adiw	r24, 0x03	; 3
+     26c:	7c 01       	movw	r14, r24
+     26e:	8f 01       	movw	r16, r30
+     270:	96 01       	movw	r18, r12
+     272:	ab 01       	movw	r20, r22
+     274:	be 01       	movw	r22, r28
+     276:	6f 5f       	subi	r22, 0xFF	; 255
+     278:	7f 4f       	sbci	r23, 0xFF	; 255
+     27a:	c5 01       	movw	r24, r10
+     27c:	04 96       	adiw	r24, 0x04	; 4
+     27e:	0e 94 22 02 	call	0x444	; 0x444 <hdlc_get_data_with_state>
+                            &len_buffer);
+
+    if (ret < 0) {
+     282:	99 23       	and	r25, r25
+     284:	0c f4       	brge	.+2      	; 0x288 <hdlc_decode_recived_raw_data+0x7a>
+     286:	48 c0       	rjmp	.+144    	; 0x318 <hdlc_decode_recived_raw_data+0x10a>
+        return ret;
+    }
+
+    if (recv_control.seq_no != client->current_index_frame){
+     288:	8a 81       	ldd	r24, Y+2	; 0x02
+     28a:	87 70       	andi	r24, 0x07	; 7
+     28c:	90 e0       	ldi	r25, 0x00	; 0
+     28e:	f5 01       	movw	r30, r10
+     290:	23 81       	ldd	r18, Z+3	; 0x03
+     292:	30 e0       	ldi	r19, 0x00	; 0
+     294:	82 17       	cp	r24, r18
+     296:	93 07       	cpc	r25, r19
+     298:	51 f0       	breq	.+20     	; 0x2ae <hdlc_decode_recived_raw_data+0xa0>
+        client->state = DISCONNECTING;
+     29a:	84 e0       	ldi	r24, 0x04	; 4
+     29c:	80 83       	st	Z, r24
+        client->frame_rej.seq_no = 0;
+     29e:	80 8d       	ldd	r24, Z+24	; 0x18
+     2a0:	88 7f       	andi	r24, 0xF8	; 248
+     2a2:	80 8f       	std	Z+24, r24	; 0x18
+        client->frame_rej.frame = S_FRAME_NACK;
+     2a4:	82 e0       	ldi	r24, 0x02	; 2
+     2a6:	87 8b       	std	Z+23, r24	; 0x17
+        return ERR_INVALID_SEQ_NUMBER_FRAME;
+     2a8:	8a ef       	ldi	r24, 0xFA	; 250
+     2aa:	9f ef       	ldi	r25, 0xFF	; 255
+     2ac:	35 c0       	rjmp	.+106    	; 0x318 <hdlc_decode_recived_raw_data+0x10a>
+    }
+
+    switch (recv_control.frame) {
+     2ae:	89 81       	ldd	r24, Y+1	; 0x01
+     2b0:	81 30       	cpi	r24, 0x01	; 1
+     2b2:	49 f0       	breq	.+18     	; 0x2c6 <hdlc_decode_recived_raw_data+0xb8>
+     2b4:	18 f0       	brcs	.+6      	; 0x2bc <hdlc_decode_recived_raw_data+0xae>
+     2b6:	82 30       	cpi	r24, 0x02	; 2
+     2b8:	d9 f0       	breq	.+54     	; 0x2f0 <hdlc_decode_recived_raw_data+0xe2>
+     2ba:	25 c0       	rjmp	.+74     	; 0x306 <hdlc_decode_recived_raw_data+0xf8>
+        case S_FRAME:
+            client->state = READY_STATE;
+            break;
+        case I_FRAME:
+            for (int i = 0; i < sizeof(recive)-2; i++){
+     2bc:	f2 e0       	ldi	r31, 0x02	; 2
+     2be:	cf 1a       	sub	r12, r31
+     2c0:	d1 08       	sbc	r13, r1
+     2c2:	29 f4       	brne	.+10     	; 0x2ce <hdlc_decode_recived_raw_data+0xc0>
+     2c4:	0e c0       	rjmp	.+28     	; 0x2e2 <hdlc_decode_recived_raw_data+0xd4>
+        return ERR_INVALID_SEQ_NUMBER_FRAME;
+    }
+
+    switch (recv_control.frame) {
+        case S_FRAME:
+            client->state = READY_STATE;
+     2c6:	82 e0       	ldi	r24, 0x02	; 2
+     2c8:	f5 01       	movw	r30, r10
+     2ca:	80 83       	st	Z, r24
+            break;
+     2cc:	1c c0       	rjmp	.+56     	; 0x306 <hdlc_decode_recived_raw_data+0xf8>
+     2ce:	f2 01       	movw	r30, r4
+     2d0:	a2 2d       	mov	r26, r2
+     2d2:	b3 2d       	mov	r27, r3
+     2d4:	4c 0c       	add	r4, r12
+     2d6:	5d 1c       	adc	r5, r13
+        case I_FRAME:
+            for (int i = 0; i < sizeof(recive)-2; i++){
+                recived_data[i] = recive[i];
+     2d8:	81 91       	ld	r24, Z+
+     2da:	8d 93       	st	X+, r24
+    switch (recv_control.frame) {
+        case S_FRAME:
+            client->state = READY_STATE;
+            break;
+        case I_FRAME:
+            for (int i = 0; i < sizeof(recive)-2; i++){
+     2dc:	e4 15       	cp	r30, r4
+     2de:	f5 05       	cpc	r31, r5
+     2e0:	d9 f7       	brne	.-10     	; 0x2d8 <hdlc_decode_recived_raw_data+0xca>
+                recived_data[i] = recive[i];
+            }
+
+            *len_recived_data = sizeof(recive)-2;
+     2e2:	f3 01       	movw	r30, r6
+     2e4:	d1 82       	std	Z+1, r13	; 0x01
+     2e6:	c0 82       	st	Z, r12
+
+            client->state = SEND;
+     2e8:	86 e0       	ldi	r24, 0x06	; 6
+     2ea:	f5 01       	movw	r30, r10
+     2ec:	80 83       	st	Z, r24
+            break;
+     2ee:	0b c0       	rjmp	.+22     	; 0x306 <hdlc_decode_recived_raw_data+0xf8>
+        case S_FRAME_NACK:
+            client->state = DISCONNECTING;
+     2f0:	84 e0       	ldi	r24, 0x04	; 4
+     2f2:	f5 01       	movw	r30, r10
+     2f4:	80 83       	st	Z, r24
+            client->frame_rej.seq_no = 0;
+     2f6:	80 8d       	ldd	r24, Z+24	; 0x18
+     2f8:	88 7f       	andi	r24, 0xF8	; 248
+     2fa:	80 8f       	std	Z+24, r24	; 0x18
+            client->frame_rej.frame = S_FRAME_NACK;
+     2fc:	82 e0       	ldi	r24, 0x02	; 2
+     2fe:	87 8b       	std	Z+23, r24	; 0x17
+            return ERR_INVALID_SEQ_NUMBER_FRAME;
+     300:	8a ef       	ldi	r24, 0xFA	; 250
+     302:	9f ef       	ldi	r25, 0xFF	; 255
+     304:	09 c0       	rjmp	.+18     	; 0x318 <hdlc_decode_recived_raw_data+0x10a>
+    }
+
+    client->connecting_frame_timeout = connecting_frame_timeout_bf;
+     306:	80 91 43 03 	lds	r24, 0x0343	; 0x800343 <connecting_frame_timeout_bf>
+     30a:	90 91 44 03 	lds	r25, 0x0344	; 0x800344 <connecting_frame_timeout_bf+0x1>
+     30e:	f5 01       	movw	r30, r10
+     310:	92 83       	std	Z+2, r25	; 0x02
+     312:	81 83       	std	Z+1, r24	; 0x01
+    return 0;
+     314:	80 e0       	ldi	r24, 0x00	; 0
+     316:	90 e0       	ldi	r25, 0x00	; 0
+}
+     318:	0f b6       	in	r0, 0x3f	; 63
+     31a:	f8 94       	cli
+     31c:	9e be       	out	0x3e, r9	; 62
+     31e:	0f be       	out	0x3f, r0	; 63
+     320:	8d be       	out	0x3d, r8	; 61
+     322:	0f 90       	pop	r0
+     324:	0f 90       	pop	r0
+     326:	0f 90       	pop	r0
+     328:	0f 90       	pop	r0
+     32a:	df 91       	pop	r29
+     32c:	cf 91       	pop	r28
+     32e:	1f 91       	pop	r17
+     330:	0f 91       	pop	r16
+     332:	ff 90       	pop	r15
+     334:	ef 90       	pop	r14
+     336:	df 90       	pop	r13
+     338:	cf 90       	pop	r12
+     33a:	bf 90       	pop	r11
+     33c:	af 90       	pop	r10
+     33e:	9f 90       	pop	r9
+     340:	8f 90       	pop	r8
+     342:	7f 90       	pop	r7
+     344:	6f 90       	pop	r6
+     346:	5f 90       	pop	r5
+     348:	4f 90       	pop	r4
+     34a:	3f 90       	pop	r3
+     34c:	2f 90       	pop	r2
+     34e:	08 95       	ret
+
+00000350 <hdlc_timeout_handler>:
+
+int hdlc_timeout_handler(struct Client* client, int delta_time){
+    client->connecting_frame_timeout -= delta_time;
+     350:	fc 01       	movw	r30, r24
+     352:	21 81       	ldd	r18, Z+1	; 0x01
+     354:	32 81       	ldd	r19, Z+2	; 0x02
+     356:	26 1b       	sub	r18, r22
+     358:	37 0b       	sbc	r19, r23
+     35a:	32 83       	std	Z+2, r19	; 0x02
+     35c:	21 83       	std	Z+1, r18	; 0x01
+
+    if (client->connecting_frame_timeout <= 0){
+     35e:	12 16       	cp	r1, r18
+     360:	13 06       	cpc	r1, r19
+     362:	1c f4       	brge	.+6      	; 0x36a <hdlc_timeout_handler+0x1a>
+        return ERR_FRAME_TIME_OUT;
+    }
+    return 0;
+     364:	80 e0       	ldi	r24, 0x00	; 0
+     366:	90 e0       	ldi	r25, 0x00	; 0
+     368:	08 95       	ret
+
+int hdlc_timeout_handler(struct Client* client, int delta_time){
+    client->connecting_frame_timeout -= delta_time;
+
+    if (client->connecting_frame_timeout <= 0){
+        return ERR_FRAME_TIME_OUT;
+     36a:	8b ef       	ldi	r24, 0xFB	; 251
+     36c:	9f ef       	ldi	r25, 0xFF	; 255
+    }
+    return 0;
+     36e:	08 95       	ret
+
+00000370 <calc_fcs>:
+        0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb,
+        0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9,
+        0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 };
+
+FCS_SIZE calc_fcs(FCS_SIZE fcs, unsigned char value) {
+    return (fcs >> 8) ^ fcstab[(fcs ^ value) & 0xff];
+     370:	fc 01       	movw	r30, r24
+     372:	e6 27       	eor	r30, r22
+     374:	ff 27       	eor	r31, r31
+     376:	ee 0f       	add	r30, r30
+     378:	ff 1f       	adc	r31, r31
+     37a:	ea 5e       	subi	r30, 0xEA	; 234
+     37c:	fe 4f       	sbci	r31, 0xFE	; 254
+     37e:	89 2f       	mov	r24, r25
+     380:	99 27       	eor	r25, r25
+     382:	20 81       	ld	r18, Z
+     384:	31 81       	ldd	r19, Z+1	; 0x01
+     386:	82 27       	eor	r24, r18
+     388:	93 27       	eor	r25, r19
+     38a:	08 95       	ret
+
+0000038c <hdlc_escape_value>:
+//int hdlc_get_data(hdlc_control_t *control, const char *src,
+//                    unsigned int src_len, char *dest, unsigned int *dest_len)
+int hdlc_get_data(hdlc_control_t *control, uint8_t *src,
+                  size_t src_len, uint8_t *dest, size_t *dest_len){
+    return hdlc_get_data_with_state(&hdlc_state, control, src, src_len, dest, dest_len);
+}
+     38c:	fa 01       	movw	r30, r20
+     38e:	93 e8       	ldi	r25, 0x83	; 131
+     390:	98 0f       	add	r25, r24
+     392:	92 30       	cpi	r25, 0x02	; 2
+     394:	70 f4       	brcc	.+28     	; 0x3b2 <hdlc_escape_value+0x26>
+     396:	20 81       	ld	r18, Z
+     398:	31 81       	ldd	r19, Z+1	; 0x01
+     39a:	a9 01       	movw	r20, r18
+     39c:	4f 5f       	subi	r20, 0xFF	; 255
+     39e:	5f 4f       	sbci	r21, 0xFF	; 255
+     3a0:	51 83       	std	Z+1, r21	; 0x01
+     3a2:	40 83       	st	Z, r20
+     3a4:	db 01       	movw	r26, r22
+     3a6:	a2 0f       	add	r26, r18
+     3a8:	b3 1f       	adc	r27, r19
+     3aa:	9d e7       	ldi	r25, 0x7D	; 125
+     3ac:	9c 93       	st	X, r25
+     3ae:	90 e2       	ldi	r25, 0x20	; 32
+     3b0:	89 27       	eor	r24, r25
+     3b2:	20 81       	ld	r18, Z
+     3b4:	31 81       	ldd	r19, Z+1	; 0x01
+     3b6:	a9 01       	movw	r20, r18
+     3b8:	4f 5f       	subi	r20, 0xFF	; 255
+     3ba:	5f 4f       	sbci	r21, 0xFF	; 255
+     3bc:	51 83       	std	Z+1, r21	; 0x01
+     3be:	40 83       	st	Z, r20
+     3c0:	fb 01       	movw	r30, r22
+     3c2:	e2 0f       	add	r30, r18
+     3c4:	f3 1f       	adc	r31, r19
+     3c6:	80 83       	st	Z, r24
+     3c8:	08 95       	ret
+
+000003ca <hdlc_get_control_type>:
+     3ca:	98 2f       	mov	r25, r24
+     3cc:	80 ff       	sbrs	r24, 0
+     3ce:	0b c0       	rjmp	.+22     	; 0x3e6 <hdlc_get_control_type+0x1c>
+     3d0:	86 95       	lsr	r24
+     3d2:	86 95       	lsr	r24
+     3d4:	83 70       	andi	r24, 0x03	; 3
+     3d6:	11 f0       	breq	.+4      	; 0x3dc <hdlc_get_control_type+0x12>
+     3d8:	82 e0       	ldi	r24, 0x02	; 2
+     3da:	01 c0       	rjmp	.+2      	; 0x3de <hdlc_get_control_type+0x14>
+     3dc:	81 e0       	ldi	r24, 0x01	; 1
+     3de:	92 95       	swap	r25
+     3e0:	96 95       	lsr	r25
+     3e2:	97 70       	andi	r25, 0x07	; 7
+     3e4:	03 c0       	rjmp	.+6      	; 0x3ec <hdlc_get_control_type+0x22>
+     3e6:	96 95       	lsr	r25
+     3e8:	97 70       	andi	r25, 0x07	; 7
+     3ea:	80 e0       	ldi	r24, 0x00	; 0
+     3ec:	97 70       	andi	r25, 0x07	; 7
+     3ee:	08 95       	ret
+
+000003f0 <hdlc_frame_control_type>:
+     3f0:	fc 01       	movw	r30, r24
+     3f2:	90 81       	ld	r25, Z
+     3f4:	91 30       	cpi	r25, 0x01	; 1
+     3f6:	49 f0       	breq	.+18     	; 0x40a <__LOCK_REGION_LENGTH__+0xa>
+     3f8:	18 f0       	brcs	.+6      	; 0x400 <__LOCK_REGION_LENGTH__>
+     3fa:	92 30       	cpi	r25, 0x02	; 2
+     3fc:	61 f0       	breq	.+24     	; 0x416 <__LOCK_REGION_LENGTH__+0x16>
+     3fe:	11 c0       	rjmp	.+34     	; 0x422 <__LOCK_REGION_LENGTH__+0x22>
+     400:	81 81       	ldd	r24, Z+1	; 0x01
+     402:	87 70       	andi	r24, 0x07	; 7
+     404:	88 0f       	add	r24, r24
+     406:	80 61       	ori	r24, 0x10	; 16
+     408:	08 95       	ret
+     40a:	81 81       	ldd	r24, Z+1	; 0x01
+     40c:	82 95       	swap	r24
+     40e:	88 0f       	add	r24, r24
+     410:	80 7e       	andi	r24, 0xE0	; 224
+     412:	81 60       	ori	r24, 0x01	; 1
+     414:	08 95       	ret
+     416:	81 81       	ldd	r24, Z+1	; 0x01
+     418:	82 95       	swap	r24
+     41a:	88 0f       	add	r24, r24
+     41c:	80 7e       	andi	r24, 0xE0	; 224
+     41e:	89 60       	ori	r24, 0x09	; 9
+     420:	08 95       	ret
+     422:	80 e0       	ldi	r24, 0x00	; 0
+     424:	08 95       	ret
+
+00000426 <hdlc_get_data_reset_with_state>:
+     426:	fc 01       	movw	r30, r24
+     428:	8f ef       	ldi	r24, 0xFF	; 255
+     42a:	9f ef       	ldi	r25, 0xFF	; 255
+     42c:	92 83       	std	Z+2, r25	; 0x02
+     42e:	81 83       	std	Z+1, r24	; 0x01
+     430:	96 83       	std	Z+6, r25	; 0x06
+     432:	85 83       	std	Z+5, r24	; 0x05
+     434:	94 83       	std	Z+4, r25	; 0x04
+     436:	83 83       	std	Z+3, r24	; 0x03
+     438:	12 86       	std	Z+10, r1	; 0x0a
+     43a:	11 86       	std	Z+9, r1	; 0x09
+     43c:	10 86       	std	Z+8, r1	; 0x08
+     43e:	17 82       	std	Z+7, r1	; 0x07
+     440:	10 82       	st	Z, r1
+     442:	08 95       	ret
+
+00000444 <hdlc_get_data_with_state>:
+     444:	3f 92       	push	r3
+     446:	4f 92       	push	r4
+     448:	5f 92       	push	r5
+     44a:	6f 92       	push	r6
+     44c:	7f 92       	push	r7
+     44e:	8f 92       	push	r8
+     450:	9f 92       	push	r9
+     452:	af 92       	push	r10
+     454:	bf 92       	push	r11
+     456:	cf 92       	push	r12
+     458:	df 92       	push	r13
+     45a:	ef 92       	push	r14
+     45c:	ff 92       	push	r15
+     45e:	0f 93       	push	r16
+     460:	1f 93       	push	r17
+     462:	cf 93       	push	r28
+     464:	df 93       	push	r29
+     466:	00 d0       	rcall	.+0      	; 0x468 <hdlc_get_data_with_state+0x24>
+     468:	00 d0       	rcall	.+0      	; 0x46a <hdlc_get_data_with_state+0x26>
+     46a:	cd b7       	in	r28, 0x3d	; 61
+     46c:	de b7       	in	r29, 0x3e	; 62
+     46e:	00 97       	sbiw	r24, 0x00	; 0
+     470:	09 f4       	brne	.+2      	; 0x474 <hdlc_get_data_with_state+0x30>
+     472:	ea c0       	rjmp	.+468    	; 0x648 <hdlc_get_data_with_state+0x204>
+     474:	61 15       	cp	r22, r1
+     476:	71 05       	cpc	r23, r1
+     478:	09 f4       	brne	.+2      	; 0x47c <hdlc_get_data_with_state+0x38>
+     47a:	e9 c0       	rjmp	.+466    	; 0x64e <hdlc_get_data_with_state+0x20a>
+     47c:	41 15       	cp	r20, r1
+     47e:	51 05       	cpc	r21, r1
+     480:	09 f4       	brne	.+2      	; 0x484 <hdlc_get_data_with_state+0x40>
+     482:	e8 c0       	rjmp	.+464    	; 0x654 <hdlc_get_data_with_state+0x210>
+     484:	01 15       	cp	r16, r1
+     486:	11 05       	cpc	r17, r1
+     488:	09 f4       	brne	.+2      	; 0x48c <hdlc_get_data_with_state+0x48>
+     48a:	e7 c0       	rjmp	.+462    	; 0x65a <hdlc_get_data_with_state+0x216>
+     48c:	e1 14       	cp	r14, r1
+     48e:	f1 04       	cpc	r15, r1
+     490:	09 f4       	brne	.+2      	; 0x494 <hdlc_get_data_with_state+0x50>
+     492:	e6 c0       	rjmp	.+460    	; 0x660 <hdlc_get_data_with_state+0x21c>
+     494:	38 01       	movw	r6, r16
+     496:	49 01       	movw	r8, r18
+     498:	7a 83       	std	Y+2, r23	; 0x02
+     49a:	69 83       	std	Y+1, r22	; 0x01
+     49c:	9c 83       	std	Y+4, r25	; 0x04
+     49e:	8b 83       	std	Y+3, r24	; 0x03
+     4a0:	21 15       	cp	r18, r1
+     4a2:	31 05       	cpc	r19, r1
+     4a4:	09 f4       	brne	.+2      	; 0x4a8 <hdlc_get_data_with_state+0x64>
+     4a6:	99 c0       	rjmp	.+306    	; 0x5da <hdlc_get_data_with_state+0x196>
+     4a8:	8a 01       	movw	r16, r20
+     4aa:	c1 2c       	mov	r12, r1
+     4ac:	d1 2c       	mov	r13, r1
+     4ae:	68 94       	set
+     4b0:	44 24       	eor	r4, r4
+     4b2:	45 f8       	bld	r4, 5
+     4b4:	33 24       	eor	r3, r3
+     4b6:	33 94       	inc	r3
+     4b8:	59 01       	movw	r10, r18
+     4ba:	21 e0       	ldi	r18, 0x01	; 1
+     4bc:	a2 1a       	sub	r10, r18
+     4be:	b1 08       	sbc	r11, r1
+     4c0:	ab 81       	ldd	r26, Y+3	; 0x03
+     4c2:	bc 81       	ldd	r27, Y+4	; 0x04
+     4c4:	13 96       	adiw	r26, 0x03	; 3
+     4c6:	8d 91       	ld	r24, X+
+     4c8:	9c 91       	ld	r25, X
+     4ca:	14 97       	sbiw	r26, 0x04	; 4
+     4cc:	99 23       	and	r25, r25
+     4ce:	9c f4       	brge	.+38     	; 0x4f6 <hdlc_get_data_with_state+0xb2>
+     4d0:	f8 01       	movw	r30, r16
+     4d2:	80 81       	ld	r24, Z
+     4d4:	8e 37       	cpi	r24, 0x7E	; 126
+     4d6:	09 f0       	breq	.+2      	; 0x4da <hdlc_get_data_with_state+0x96>
+     4d8:	70 c0       	rjmp	.+224    	; 0x5ba <hdlc_get_data_with_state+0x176>
+     4da:	ca 14       	cp	r12, r10
+     4dc:	db 04       	cpc	r13, r11
+     4de:	20 f4       	brcc	.+8      	; 0x4e8 <hdlc_get_data_with_state+0xa4>
+     4e0:	81 81       	ldd	r24, Z+1	; 0x01
+     4e2:	8e 37       	cpi	r24, 0x7E	; 126
+     4e4:	09 f4       	brne	.+2      	; 0x4e8 <hdlc_get_data_with_state+0xa4>
+     4e6:	70 c0       	rjmp	.+224    	; 0x5c8 <hdlc_get_data_with_state+0x184>
+     4e8:	eb 81       	ldd	r30, Y+3	; 0x03
+     4ea:	fc 81       	ldd	r31, Y+4	; 0x04
+     4ec:	87 81       	ldd	r24, Z+7	; 0x07
+     4ee:	90 85       	ldd	r25, Z+8	; 0x08
+     4f0:	94 83       	std	Z+4, r25	; 0x04
+     4f2:	83 83       	std	Z+3, r24	; 0x03
+     4f4:	62 c0       	rjmp	.+196    	; 0x5ba <hdlc_get_data_with_state+0x176>
+     4f6:	f8 01       	movw	r30, r16
+     4f8:	50 80       	ld	r5, Z
+     4fa:	2e e7       	ldi	r18, 0x7E	; 126
+     4fc:	52 12       	cpse	r5, r18
+     4fe:	19 c0       	rjmp	.+50     	; 0x532 <hdlc_get_data_with_state+0xee>
+     500:	ca 14       	cp	r12, r10
+     502:	db 04       	cpc	r13, r11
+     504:	20 f4       	brcc	.+8      	; 0x50e <hdlc_get_data_with_state+0xca>
+     506:	21 81       	ldd	r18, Z+1	; 0x01
+     508:	2e 37       	cpi	r18, 0x7E	; 126
+     50a:	09 f4       	brne	.+2      	; 0x50e <hdlc_get_data_with_state+0xca>
+     50c:	5d c0       	rjmp	.+186    	; 0x5c8 <hdlc_get_data_with_state+0x184>
+     50e:	ab 81       	ldd	r26, Y+3	; 0x03
+     510:	bc 81       	ldd	r27, Y+4	; 0x04
+     512:	17 96       	adiw	r26, 0x07	; 7
+     514:	2d 91       	ld	r18, X+
+     516:	3c 91       	ld	r19, X
+     518:	18 97       	sbiw	r26, 0x08	; 8
+     51a:	ac 01       	movw	r20, r24
+     51c:	4f 5f       	subi	r20, 0xFF	; 255
+     51e:	5f 4f       	sbci	r21, 0xFF	; 255
+     520:	42 17       	cp	r20, r18
+     522:	53 07       	cpc	r21, r19
+     524:	09 f4       	brne	.+2      	; 0x528 <hdlc_get_data_with_state+0xe4>
+     526:	50 c0       	rjmp	.+160    	; 0x5c8 <hdlc_get_data_with_state+0x184>
+     528:	16 96       	adiw	r26, 0x06	; 6
+     52a:	3c 93       	st	X, r19
+     52c:	2e 93       	st	-X, r18
+     52e:	15 97       	sbiw	r26, 0x05	; 5
+     530:	5d c0       	rjmp	.+186    	; 0x5ec <hdlc_get_data_with_state+0x1a8>
+     532:	bd e7       	ldi	r27, 0x7D	; 125
+     534:	5b 12       	cpse	r5, r27
+     536:	04 c0       	rjmp	.+8      	; 0x540 <hdlc_get_data_with_state+0xfc>
+     538:	eb 81       	ldd	r30, Y+3	; 0x03
+     53a:	fc 81       	ldd	r31, Y+4	; 0x04
+     53c:	30 82       	st	Z, r3
+     53e:	3d c0       	rjmp	.+122    	; 0x5ba <hdlc_get_data_with_state+0x176>
+     540:	ab 81       	ldd	r26, Y+3	; 0x03
+     542:	bc 81       	ldd	r27, Y+4	; 0x04
+     544:	8c 91       	ld	r24, X
+     546:	88 23       	and	r24, r24
+     548:	19 f0       	breq	.+6      	; 0x550 <hdlc_get_data_with_state+0x10c>
+     54a:	1c 92       	st	X, r1
+     54c:	50 80       	ld	r5, Z
+     54e:	54 24       	eor	r5, r4
+     550:	65 2d       	mov	r22, r5
+     552:	eb 81       	ldd	r30, Y+3	; 0x03
+     554:	fc 81       	ldd	r31, Y+4	; 0x04
+     556:	81 81       	ldd	r24, Z+1	; 0x01
+     558:	92 81       	ldd	r25, Z+2	; 0x02
+     55a:	0e 94 b8 01 	call	0x370	; 0x370 <calc_fcs>
+     55e:	ab 81       	ldd	r26, Y+3	; 0x03
+     560:	bc 81       	ldd	r27, Y+4	; 0x04
+     562:	12 96       	adiw	r26, 0x02	; 2
+     564:	9c 93       	st	X, r25
+     566:	8e 93       	st	-X, r24
+     568:	11 97       	sbiw	r26, 0x01	; 1
+     56a:	17 96       	adiw	r26, 0x07	; 7
+     56c:	2d 91       	ld	r18, X+
+     56e:	3c 91       	ld	r19, X
+     570:	18 97       	sbiw	r26, 0x08	; 8
+     572:	13 96       	adiw	r26, 0x03	; 3
+     574:	8d 91       	ld	r24, X+
+     576:	9c 91       	ld	r25, X
+     578:	14 97       	sbiw	r26, 0x04	; 4
+     57a:	02 96       	adiw	r24, 0x02	; 2
+     57c:	28 17       	cp	r18, r24
+     57e:	39 07       	cpc	r19, r25
+     580:	41 f4       	brne	.+16     	; 0x592 <hdlc_get_data_with_state+0x14e>
+     582:	85 2d       	mov	r24, r5
+     584:	0e 94 e5 01 	call	0x3ca	; 0x3ca <hdlc_get_control_type>
+     588:	e9 81       	ldd	r30, Y+1	; 0x01
+     58a:	fa 81       	ldd	r31, Y+2	; 0x02
+     58c:	91 83       	std	Z+1, r25	; 0x01
+     58e:	80 83       	st	Z, r24
+     590:	14 c0       	rjmp	.+40     	; 0x5ba <hdlc_get_data_with_state+0x176>
+     592:	82 17       	cp	r24, r18
+     594:	93 07       	cpc	r25, r19
+     596:	8c f4       	brge	.+34     	; 0x5ba <hdlc_get_data_with_state+0x176>
+     598:	ab 81       	ldd	r26, Y+3	; 0x03
+     59a:	bc 81       	ldd	r27, Y+4	; 0x04
+     59c:	19 96       	adiw	r26, 0x09	; 9
+     59e:	8d 91       	ld	r24, X+
+     5a0:	9c 91       	ld	r25, X
+     5a2:	1a 97       	sbiw	r26, 0x0a	; 10
+     5a4:	9c 01       	movw	r18, r24
+     5a6:	2f 5f       	subi	r18, 0xFF	; 255
+     5a8:	3f 4f       	sbci	r19, 0xFF	; 255
+     5aa:	1a 96       	adiw	r26, 0x0a	; 10
+     5ac:	3c 93       	st	X, r19
+     5ae:	2e 93       	st	-X, r18
+     5b0:	19 97       	sbiw	r26, 0x09	; 9
+     5b2:	f3 01       	movw	r30, r6
+     5b4:	e8 0f       	add	r30, r24
+     5b6:	f9 1f       	adc	r31, r25
+     5b8:	50 82       	st	Z, r5
+     5ba:	eb 81       	ldd	r30, Y+3	; 0x03
+     5bc:	fc 81       	ldd	r31, Y+4	; 0x04
+     5be:	87 81       	ldd	r24, Z+7	; 0x07
+     5c0:	90 85       	ldd	r25, Z+8	; 0x08
+     5c2:	01 96       	adiw	r24, 0x01	; 1
+     5c4:	90 87       	std	Z+8, r25	; 0x08
+     5c6:	87 83       	std	Z+7, r24	; 0x07
+     5c8:	ff ef       	ldi	r31, 0xFF	; 255
+     5ca:	cf 1a       	sub	r12, r31
+     5cc:	df 0a       	sbc	r13, r31
+     5ce:	0f 5f       	subi	r16, 0xFF	; 255
+     5d0:	1f 4f       	sbci	r17, 0xFF	; 255
+     5d2:	8c 14       	cp	r8, r12
+     5d4:	9d 04       	cpc	r9, r13
+     5d6:	09 f0       	breq	.+2      	; 0x5da <hdlc_get_data_with_state+0x196>
+     5d8:	73 cf       	rjmp	.-282    	; 0x4c0 <hdlc_get_data_with_state+0x7c>
+     5da:	ab 81       	ldd	r26, Y+3	; 0x03
+     5dc:	bc 81       	ldd	r27, Y+4	; 0x04
+     5de:	13 96       	adiw	r26, 0x03	; 3
+     5e0:	8d 91       	ld	r24, X+
+     5e2:	9c 91       	ld	r25, X
+     5e4:	14 97       	sbiw	r26, 0x04	; 4
+     5e6:	99 23       	and	r25, r25
+     5e8:	3c f0       	brlt	.+14     	; 0x5f8 <hdlc_get_data_with_state+0x1b4>
+     5ea:	64 01       	movw	r12, r8
+     5ec:	eb 81       	ldd	r30, Y+3	; 0x03
+     5ee:	fc 81       	ldd	r31, Y+4	; 0x04
+     5f0:	25 81       	ldd	r18, Z+5	; 0x05
+     5f2:	36 81       	ldd	r19, Z+6	; 0x06
+     5f4:	33 23       	and	r19, r19
+     5f6:	34 f4       	brge	.+12     	; 0x604 <hdlc_get_data_with_state+0x1c0>
+     5f8:	d7 01       	movw	r26, r14
+     5fa:	1d 92       	st	X+, r1
+     5fc:	1c 92       	st	X, r1
+     5fe:	8e e0       	ldi	r24, 0x0E	; 14
+     600:	92 ed       	ldi	r25, 0xD2	; 210
+     602:	30 c0       	rjmp	.+96     	; 0x664 <hdlc_get_data_with_state+0x220>
+     604:	04 96       	adiw	r24, 0x04	; 4
+     606:	28 17       	cp	r18, r24
+     608:	39 07       	cpc	r19, r25
+     60a:	3c f0       	brlt	.+14     	; 0x61a <hdlc_get_data_with_state+0x1d6>
+     60c:	eb 81       	ldd	r30, Y+3	; 0x03
+     60e:	fc 81       	ldd	r31, Y+4	; 0x04
+     610:	81 81       	ldd	r24, Z+1	; 0x01
+     612:	92 81       	ldd	r25, Z+2	; 0x02
+     614:	88 3b       	cpi	r24, 0xB8	; 184
+     616:	90 4f       	sbci	r25, 0xF0	; 240
+     618:	31 f0       	breq	.+12     	; 0x626 <hdlc_get_data_with_state+0x1e2>
+     61a:	d7 01       	movw	r26, r14
+     61c:	cd 92       	st	X+, r12
+     61e:	dc 92       	st	X, r13
+     620:	0e e0       	ldi	r16, 0x0E	; 14
+     622:	12 ed       	ldi	r17, 0xD2	; 210
+     624:	0a c0       	rjmp	.+20     	; 0x63a <hdlc_get_data_with_state+0x1f6>
+     626:	eb 81       	ldd	r30, Y+3	; 0x03
+     628:	fc 81       	ldd	r31, Y+4	; 0x04
+     62a:	81 85       	ldd	r24, Z+9	; 0x09
+     62c:	92 85       	ldd	r25, Z+10	; 0x0a
+     62e:	02 97       	sbiw	r24, 0x02	; 2
+     630:	d7 01       	movw	r26, r14
+     632:	8d 93       	st	X+, r24
+     634:	9c 93       	st	X, r25
+     636:	0c 2d       	mov	r16, r12
+     638:	1d 2d       	mov	r17, r13
+     63a:	8b 81       	ldd	r24, Y+3	; 0x03
+     63c:	9c 81       	ldd	r25, Y+4	; 0x04
+     63e:	0e 94 13 02 	call	0x426	; 0x426 <hdlc_get_data_reset_with_state>
+     642:	80 2f       	mov	r24, r16
+     644:	91 2f       	mov	r25, r17
+     646:	0e c0       	rjmp	.+28     	; 0x664 <hdlc_get_data_with_state+0x220>
+     648:	8e e0       	ldi	r24, 0x0E	; 14
+     64a:	92 ed       	ldi	r25, 0xD2	; 210
+     64c:	0b c0       	rjmp	.+22     	; 0x664 <hdlc_get_data_with_state+0x220>
+     64e:	8e e0       	ldi	r24, 0x0E	; 14
+     650:	92 ed       	ldi	r25, 0xD2	; 210
+     652:	08 c0       	rjmp	.+16     	; 0x664 <hdlc_get_data_with_state+0x220>
+     654:	8e e0       	ldi	r24, 0x0E	; 14
+     656:	92 ed       	ldi	r25, 0xD2	; 210
+     658:	05 c0       	rjmp	.+10     	; 0x664 <hdlc_get_data_with_state+0x220>
+     65a:	8e e0       	ldi	r24, 0x0E	; 14
+     65c:	92 ed       	ldi	r25, 0xD2	; 210
+     65e:	02 c0       	rjmp	.+4      	; 0x664 <hdlc_get_data_with_state+0x220>
+     660:	8e e0       	ldi	r24, 0x0E	; 14
+     662:	92 ed       	ldi	r25, 0xD2	; 210
+     664:	0f 90       	pop	r0
+     666:	0f 90       	pop	r0
+     668:	0f 90       	pop	r0
+     66a:	0f 90       	pop	r0
+     66c:	df 91       	pop	r29
+     66e:	cf 91       	pop	r28
+     670:	1f 91       	pop	r17
+     672:	0f 91       	pop	r16
+     674:	ff 90       	pop	r15
+     676:	ef 90       	pop	r14
+     678:	df 90       	pop	r13
+     67a:	cf 90       	pop	r12
+     67c:	bf 90       	pop	r11
+     67e:	af 90       	pop	r10
+     680:	9f 90       	pop	r9
+     682:	8f 90       	pop	r8
+     684:	7f 90       	pop	r7
+     686:	6f 90       	pop	r6
+     688:	5f 90       	pop	r5
+     68a:	4f 90       	pop	r4
+     68c:	3f 90       	pop	r3
+     68e:	08 95       	ret
+
+00000690 <hdlc_frame_data>:
+}
+
+//int hdlc_frame_data(hdlc_control_t *control, const char *src,
+//                      unsigned int src_len, char *dest, unsigned int *dest_len)
+int hdlc_frame_data(hdlc_control_t *control, uint8_t *src,
+                    size_t src_len, uint8_t *dest, size_t *dest_len){
+     690:	5f 92       	push	r5
+     692:	6f 92       	push	r6
+     694:	7f 92       	push	r7
+     696:	8f 92       	push	r8
+     698:	9f 92       	push	r9
+     69a:	af 92       	push	r10
+     69c:	bf 92       	push	r11
+     69e:	cf 92       	push	r12
+     6a0:	df 92       	push	r13
+     6a2:	ef 92       	push	r14
+     6a4:	ff 92       	push	r15
+     6a6:	0f 93       	push	r16
+     6a8:	1f 93       	push	r17
+     6aa:	cf 93       	push	r28
+     6ac:	df 93       	push	r29
+     6ae:	00 d0       	rcall	.+0      	; 0x6b0 <hdlc_frame_data+0x20>
+     6b0:	cd b7       	in	r28, 0x3d	; 61
+     6b2:	de b7       	in	r29, 0x3e	; 62
+    int dest_index = 0;
+    unsigned char value = 0;
+    FCS_SIZE fcs = FCS_INIT_VALUE;
+
+    // Make sure that all parameters are valid
+    if (!control || (!src && (src_len > 0)) || !dest || !dest_len) {
+     6b4:	00 97       	sbiw	r24, 0x00	; 0
+     6b6:	09 f4       	brne	.+2      	; 0x6ba <hdlc_frame_data+0x2a>
+     6b8:	73 c0       	rjmp	.+230    	; 0x7a0 <hdlc_frame_data+0x110>
+     6ba:	61 15       	cp	r22, r1
+     6bc:	71 05       	cpc	r23, r1
+     6be:	21 f4       	brne	.+8      	; 0x6c8 <hdlc_frame_data+0x38>
+     6c0:	41 15       	cp	r20, r1
+     6c2:	51 05       	cpc	r21, r1
+     6c4:	09 f0       	breq	.+2      	; 0x6c8 <hdlc_frame_data+0x38>
+     6c6:	6f c0       	rjmp	.+222    	; 0x7a6 <hdlc_frame_data+0x116>
+     6c8:	21 15       	cp	r18, r1
+     6ca:	31 05       	cpc	r19, r1
+     6cc:	09 f4       	brne	.+2      	; 0x6d0 <hdlc_frame_data+0x40>
+     6ce:	6e c0       	rjmp	.+220    	; 0x7ac <hdlc_frame_data+0x11c>
+     6d0:	01 15       	cp	r16, r1
+     6d2:	11 05       	cpc	r17, r1
+     6d4:	09 f4       	brne	.+2      	; 0x6d8 <hdlc_frame_data+0x48>
+     6d6:	6d c0       	rjmp	.+218    	; 0x7b2 <hdlc_frame_data+0x122>
+     6d8:	38 01       	movw	r6, r16
+     6da:	79 01       	movw	r14, r18
+     6dc:	5a 01       	movw	r10, r20
+     6de:	4b 01       	movw	r8, r22
+     6e0:	8c 01       	movw	r16, r24
+        return -EINVAL;
+    }
+
+    // Start by adding the start flag sequence
+    dest[dest_index++] = HDLC_FLAG_SEQUENCE;
+     6e2:	81 e0       	ldi	r24, 0x01	; 1
+     6e4:	90 e0       	ldi	r25, 0x00	; 0
+     6e6:	9a 83       	std	Y+2, r25	; 0x02
+     6e8:	89 83       	std	Y+1, r24	; 0x01
+     6ea:	8e e7       	ldi	r24, 0x7E	; 126
+     6ec:	f9 01       	movw	r30, r18
+     6ee:	80 83       	st	Z, r24
+
+    // Add the all-station address from HDLC (broadcast)
+    fcs = calc_fcs(fcs, HDLC_ALL_STATION_ADDR);
+     6f0:	6f ef       	ldi	r22, 0xFF	; 255
+     6f2:	8f ef       	ldi	r24, 0xFF	; 255
+     6f4:	9f ef       	ldi	r25, 0xFF	; 255
+     6f6:	0e 94 b8 01 	call	0x370	; 0x370 <calc_fcs>
+     6fa:	6c 01       	movw	r12, r24
+    hdlc_escape_value(HDLC_ALL_STATION_ADDR, dest, &dest_index);
+     6fc:	ae 01       	movw	r20, r28
+     6fe:	4f 5f       	subi	r20, 0xFF	; 255
+     700:	5f 4f       	sbci	r21, 0xFF	; 255
+     702:	b7 01       	movw	r22, r14
+     704:	8f ef       	ldi	r24, 0xFF	; 255
+     706:	0e 94 c6 01 	call	0x38c	; 0x38c <hdlc_escape_value>
+
+    // Add the framed control field value
+    value = hdlc_frame_control_type(control);
+     70a:	c8 01       	movw	r24, r16
+     70c:	0e 94 f8 01 	call	0x3f0	; 0x3f0 <hdlc_frame_control_type>
+     710:	58 2e       	mov	r5, r24
+    fcs = calc_fcs(fcs, value);
+     712:	68 2f       	mov	r22, r24
+     714:	c6 01       	movw	r24, r12
+     716:	0e 94 b8 01 	call	0x370	; 0x370 <calc_fcs>
+     71a:	6c 01       	movw	r12, r24
+    hdlc_escape_value(value, dest, &dest_index);
+     71c:	ae 01       	movw	r20, r28
+     71e:	4f 5f       	subi	r20, 0xFF	; 255
+     720:	5f 4f       	sbci	r21, 0xFF	; 255
+     722:	b7 01       	movw	r22, r14
+     724:	85 2d       	mov	r24, r5
+     726:	0e 94 c6 01 	call	0x38c	; 0x38c <hdlc_escape_value>
+
+    // Only DATA frames should contain data
+    if (control->frame == I_FRAME) {
+     72a:	f8 01       	movw	r30, r16
+     72c:	80 81       	ld	r24, Z
+     72e:	81 11       	cpse	r24, r1
+     730:	19 c0       	rjmp	.+50     	; 0x764 <hdlc_frame_data+0xd4>
+        // Calculate FCS and escape data
+        for (i = 0; i < src_len; i++) {
+     732:	a1 14       	cp	r10, r1
+     734:	b1 04       	cpc	r11, r1
+     736:	b1 f0       	breq	.+44     	; 0x764 <hdlc_frame_data+0xd4>
+     738:	84 01       	movw	r16, r8
+     73a:	8a 0c       	add	r8, r10
+     73c:	9b 1c       	adc	r9, r11
+     73e:	58 01       	movw	r10, r16
+            fcs = calc_fcs(fcs, src[i]);
+     740:	f8 01       	movw	r30, r16
+     742:	61 91       	ld	r22, Z+
+     744:	8f 01       	movw	r16, r30
+     746:	c6 01       	movw	r24, r12
+     748:	0e 94 b8 01 	call	0x370	; 0x370 <calc_fcs>
+     74c:	6c 01       	movw	r12, r24
+            hdlc_escape_value(src[i], dest, &dest_index);
+     74e:	ae 01       	movw	r20, r28
+     750:	4f 5f       	subi	r20, 0xFF	; 255
+     752:	5f 4f       	sbci	r21, 0xFF	; 255
+     754:	b7 01       	movw	r22, r14
+     756:	f5 01       	movw	r30, r10
+     758:	80 81       	ld	r24, Z
+     75a:	0e 94 c6 01 	call	0x38c	; 0x38c <hdlc_escape_value>
+    hdlc_escape_value(value, dest, &dest_index);
+
+    // Only DATA frames should contain data
+    if (control->frame == I_FRAME) {
+        // Calculate FCS and escape data
+        for (i = 0; i < src_len; i++) {
+     75e:	80 16       	cp	r8, r16
+     760:	91 06       	cpc	r9, r17
+     762:	69 f7       	brne	.-38     	; 0x73e <hdlc_frame_data+0xae>
+            hdlc_escape_value(src[i], dest, &dest_index);
+        }
+    }
+
+    // Invert the FCS value accordingly to the specification
+    fcs ^= FCS_INVERT_MASK;
+     764:	c0 94       	com	r12
+     766:	d0 94       	com	r13
+
+    // Run through the FCS bytes and escape the values
+    for (i = 0; i < sizeof(fcs); i++) {
+        value = ((fcs >> (8 * i)) & 0xFF);
+        hdlc_escape_value(value, dest, &dest_index);
+     768:	ae 01       	movw	r20, r28
+     76a:	4f 5f       	subi	r20, 0xFF	; 255
+     76c:	5f 4f       	sbci	r21, 0xFF	; 255
+     76e:	b7 01       	movw	r22, r14
+     770:	8c 2d       	mov	r24, r12
+     772:	0e 94 c6 01 	call	0x38c	; 0x38c <hdlc_escape_value>
+     776:	ae 01       	movw	r20, r28
+     778:	4f 5f       	subi	r20, 0xFF	; 255
+     77a:	5f 4f       	sbci	r21, 0xFF	; 255
+     77c:	b7 01       	movw	r22, r14
+     77e:	8d 2d       	mov	r24, r13
+     780:	0e 94 c6 01 	call	0x38c	; 0x38c <hdlc_escape_value>
+    }
+
+    // Add end flag sequence and update length of frame
+    dest[dest_index++] = HDLC_FLAG_SEQUENCE;
+     784:	89 81       	ldd	r24, Y+1	; 0x01
+     786:	9a 81       	ldd	r25, Y+2	; 0x02
+     788:	f7 01       	movw	r30, r14
+     78a:	e8 0f       	add	r30, r24
+     78c:	f9 1f       	adc	r31, r25
+     78e:	2e e7       	ldi	r18, 0x7E	; 126
+     790:	20 83       	st	Z, r18
+    *dest_len = dest_index;
+     792:	01 96       	adiw	r24, 0x01	; 1
+     794:	f3 01       	movw	r30, r6
+     796:	91 83       	std	Z+1, r25	; 0x01
+     798:	80 83       	st	Z, r24
+
+    return 0;
+     79a:	80 e0       	ldi	r24, 0x00	; 0
+     79c:	90 e0       	ldi	r25, 0x00	; 0
+     79e:	0b c0       	rjmp	.+22     	; 0x7b6 <hdlc_frame_data+0x126>
+    unsigned char value = 0;
+    FCS_SIZE fcs = FCS_INIT_VALUE;
+
+    // Make sure that all parameters are valid
+    if (!control || (!src && (src_len > 0)) || !dest || !dest_len) {
+        return -EINVAL;
+     7a0:	8e e0       	ldi	r24, 0x0E	; 14
+     7a2:	92 ed       	ldi	r25, 0xD2	; 210
+     7a4:	08 c0       	rjmp	.+16     	; 0x7b6 <hdlc_frame_data+0x126>
+     7a6:	8e e0       	ldi	r24, 0x0E	; 14
+     7a8:	92 ed       	ldi	r25, 0xD2	; 210
+     7aa:	05 c0       	rjmp	.+10     	; 0x7b6 <hdlc_frame_data+0x126>
+     7ac:	8e e0       	ldi	r24, 0x0E	; 14
+     7ae:	92 ed       	ldi	r25, 0xD2	; 210
+     7b0:	02 c0       	rjmp	.+4      	; 0x7b6 <hdlc_frame_data+0x126>
+     7b2:	8e e0       	ldi	r24, 0x0E	; 14
+     7b4:	92 ed       	ldi	r25, 0xD2	; 210
+    // Add end flag sequence and update length of frame
+    dest[dest_index++] = HDLC_FLAG_SEQUENCE;
+    *dest_len = dest_index;
+
+    return 0;
+     7b6:	0f 90       	pop	r0
+     7b8:	0f 90       	pop	r0
+     7ba:	df 91       	pop	r29
+     7bc:	cf 91       	pop	r28
+     7be:	1f 91       	pop	r17
+     7c0:	0f 91       	pop	r16
+     7c2:	ff 90       	pop	r15
+     7c4:	ef 90       	pop	r14
+     7c6:	df 90       	pop	r13
+     7c8:	cf 90       	pop	r12
+     7ca:	bf 90       	pop	r11
+     7cc:	af 90       	pop	r10
+     7ce:	9f 90       	pop	r9
+     7d0:	8f 90       	pop	r8
+     7d2:	7f 90       	pop	r7
+     7d4:	6f 90       	pop	r6
+     7d6:	5f 90       	pop	r5
+     7d8:	08 95       	ret
+
+000007da <lcd_read>:
+    register char c;
+
+    while ( (c = pgm_read_byte(progmem_s++)) ) {
+        lcd_putc(c);
+    }
+}
+     7da:	cf 93       	push	r28
+     7dc:	88 23       	and	r24, r24
+     7de:	31 f0       	breq	.+12     	; 0x7ec <lcd_read+0x12>
+     7e0:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     7e4:	81 60       	ori	r24, 0x01	; 1
+     7e6:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     7ea:	05 c0       	rjmp	.+10     	; 0x7f6 <lcd_read+0x1c>
+     7ec:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     7f0:	8e 7f       	andi	r24, 0xFE	; 254
+     7f2:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     7f6:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     7fa:	82 60       	ori	r24, 0x02	; 2
+     7fc:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     800:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     804:	80 e0       	ldi	r24, 0x00	; 0
+     806:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+     80a:	62 e0       	ldi	r22, 0x02	; 2
+     80c:	80 e0       	ldi	r24, 0x00	; 0
+     80e:	0e 94 d6 06 	call	0xdac	; 0xdac <pcf8574_setoutputpinhigh>
+     812:	00 c0       	rjmp	.+0      	; 0x814 <lcd_read+0x3a>
+     814:	64 e0       	ldi	r22, 0x04	; 4
+     816:	80 e0       	ldi	r24, 0x00	; 0
+     818:	0e 94 81 06 	call	0xd02	; 0xd02 <pcf8574_getoutputpin>
+     81c:	c8 2f       	mov	r28, r24
+     81e:	62 e0       	ldi	r22, 0x02	; 2
+     820:	80 e0       	ldi	r24, 0x00	; 0
+     822:	0e 94 da 06 	call	0xdb4	; 0xdb4 <pcf8574_setoutputpinlow>
+     826:	00 c0       	rjmp	.+0      	; 0x828 <lcd_read+0x4e>
+     828:	62 e0       	ldi	r22, 0x02	; 2
+     82a:	80 e0       	ldi	r24, 0x00	; 0
+     82c:	0e 94 d6 06 	call	0xdac	; 0xdac <pcf8574_setoutputpinhigh>
+     830:	00 c0       	rjmp	.+0      	; 0x832 <lcd_read+0x58>
+     832:	64 e0       	ldi	r22, 0x04	; 4
+     834:	80 e0       	ldi	r24, 0x00	; 0
+     836:	0e 94 81 06 	call	0xd02	; 0xd02 <pcf8574_getoutputpin>
+     83a:	c2 95       	swap	r28
+     83c:	c0 7f       	andi	r28, 0xF0	; 240
+     83e:	8f 70       	andi	r24, 0x0F	; 15
+     840:	c8 2b       	or	r28, r24
+     842:	62 e0       	ldi	r22, 0x02	; 2
+     844:	80 e0       	ldi	r24, 0x00	; 0
+     846:	0e 94 da 06 	call	0xdb4	; 0xdb4 <pcf8574_setoutputpinlow>
+     84a:	8c 2f       	mov	r24, r28
+     84c:	cf 91       	pop	r28
+     84e:	08 95       	ret
+
+00000850 <lcd_waitbusy>:
+     850:	80 e0       	ldi	r24, 0x00	; 0
+     852:	0e 94 ed 03 	call	0x7da	; 0x7da <lcd_read>
+     856:	88 23       	and	r24, r24
+     858:	dc f3       	brlt	.-10     	; 0x850 <lcd_waitbusy>
+     85a:	00 c0       	rjmp	.+0      	; 0x85c <lcd_waitbusy+0xc>
+     85c:	80 e0       	ldi	r24, 0x00	; 0
+     85e:	0e 94 ed 03 	call	0x7da	; 0x7da <lcd_read>
+     862:	08 95       	ret
+
+00000864 <toggle_e>:
+     864:	62 e0       	ldi	r22, 0x02	; 2
+     866:	80 e0       	ldi	r24, 0x00	; 0
+     868:	0e 94 d6 06 	call	0xdac	; 0xdac <pcf8574_setoutputpinhigh>
+     86c:	00 c0       	rjmp	.+0      	; 0x86e <toggle_e+0xa>
+     86e:	62 e0       	ldi	r22, 0x02	; 2
+     870:	80 e0       	ldi	r24, 0x00	; 0
+     872:	0e 94 da 06 	call	0xdb4	; 0xdb4 <pcf8574_setoutputpinlow>
+     876:	08 95       	ret
+
+00000878 <lcd_write>:
+     878:	cf 93       	push	r28
+     87a:	c8 2f       	mov	r28, r24
+     87c:	66 23       	and	r22, r22
+     87e:	31 f0       	breq	.+12     	; 0x88c <lcd_write+0x14>
+     880:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     884:	81 60       	ori	r24, 0x01	; 1
+     886:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     88a:	05 c0       	rjmp	.+10     	; 0x896 <lcd_write+0x1e>
+     88c:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     890:	8e 7f       	andi	r24, 0xFE	; 254
+     892:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     896:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     89a:	8d 7f       	andi	r24, 0xFD	; 253
+     89c:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8a0:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     8a4:	80 e0       	ldi	r24, 0x00	; 0
+     8a6:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+     8aa:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     8ae:	8f 77       	andi	r24, 0x7F	; 127
+     8b0:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8b4:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     8b8:	8f 7b       	andi	r24, 0xBF	; 191
+     8ba:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8be:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     8c2:	8f 7d       	andi	r24, 0xDF	; 223
+     8c4:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8c8:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     8cc:	8f 7e       	andi	r24, 0xEF	; 239
+     8ce:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8d2:	cc 23       	and	r28, r28
+     8d4:	2c f4       	brge	.+10     	; 0x8e0 <lcd_write+0x68>
+     8d6:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     8da:	80 68       	ori	r24, 0x80	; 128
+     8dc:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8e0:	c6 ff       	sbrs	r28, 6
+     8e2:	05 c0       	rjmp	.+10     	; 0x8ee <lcd_write+0x76>
+     8e4:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     8e8:	80 64       	ori	r24, 0x40	; 64
+     8ea:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8ee:	c5 ff       	sbrs	r28, 5
+     8f0:	05 c0       	rjmp	.+10     	; 0x8fc <lcd_write+0x84>
+     8f2:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     8f6:	80 62       	ori	r24, 0x20	; 32
+     8f8:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     8fc:	c4 ff       	sbrs	r28, 4
+     8fe:	05 c0       	rjmp	.+10     	; 0x90a <__stack+0xb>
+     900:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     904:	80 61       	ori	r24, 0x10	; 16
+     906:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     90a:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     90e:	80 e0       	ldi	r24, 0x00	; 0
+     910:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+     914:	0e 94 32 04 	call	0x864	; 0x864 <toggle_e>
+     918:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     91c:	8f 77       	andi	r24, 0x7F	; 127
+     91e:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     922:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     926:	8f 7b       	andi	r24, 0xBF	; 191
+     928:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     92c:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     930:	8f 7d       	andi	r24, 0xDF	; 223
+     932:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     936:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     93a:	8f 7e       	andi	r24, 0xEF	; 239
+     93c:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     940:	c3 ff       	sbrs	r28, 3
+     942:	05 c0       	rjmp	.+10     	; 0x94e <__stack+0x4f>
+     944:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     948:	80 68       	ori	r24, 0x80	; 128
+     94a:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     94e:	c2 ff       	sbrs	r28, 2
+     950:	05 c0       	rjmp	.+10     	; 0x95c <__stack+0x5d>
+     952:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     956:	80 64       	ori	r24, 0x40	; 64
+     958:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     95c:	c1 ff       	sbrs	r28, 1
+     95e:	05 c0       	rjmp	.+10     	; 0x96a <__stack+0x6b>
+     960:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     964:	80 62       	ori	r24, 0x20	; 32
+     966:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     96a:	c0 ff       	sbrs	r28, 0
+     96c:	05 c0       	rjmp	.+10     	; 0x978 <__stack+0x79>
+     96e:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     972:	80 61       	ori	r24, 0x10	; 16
+     974:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     978:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     97c:	80 e0       	ldi	r24, 0x00	; 0
+     97e:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+     982:	0e 94 32 04 	call	0x864	; 0x864 <toggle_e>
+     986:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     98a:	80 61       	ori	r24, 0x10	; 16
+     98c:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     990:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     994:	80 62       	ori	r24, 0x20	; 32
+     996:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     99a:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     99e:	80 64       	ori	r24, 0x40	; 64
+     9a0:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     9a4:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     9a8:	80 68       	ori	r24, 0x80	; 128
+     9aa:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     9ae:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     9b2:	80 e0       	ldi	r24, 0x00	; 0
+     9b4:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+     9b8:	cf 91       	pop	r28
+     9ba:	08 95       	ret
+
+000009bc <lcd_command>:
+     9bc:	cf 93       	push	r28
+     9be:	c8 2f       	mov	r28, r24
+     9c0:	0e 94 28 04 	call	0x850	; 0x850 <lcd_waitbusy>
+     9c4:	60 e0       	ldi	r22, 0x00	; 0
+     9c6:	8c 2f       	mov	r24, r28
+     9c8:	0e 94 3c 04 	call	0x878	; 0x878 <lcd_write>
+     9cc:	cf 91       	pop	r28
+     9ce:	08 95       	ret
+
+000009d0 <lcd_gotoxy>:
+     9d0:	61 11       	cpse	r22, r1
+     9d2:	04 c0       	rjmp	.+8      	; 0x9dc <lcd_gotoxy+0xc>
+     9d4:	80 58       	subi	r24, 0x80	; 128
+     9d6:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+     9da:	08 95       	ret
+     9dc:	80 54       	subi	r24, 0x40	; 64
+     9de:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+     9e2:	08 95       	ret
+
+000009e4 <lcd_clrscr>:
+     9e4:	81 e0       	ldi	r24, 0x01	; 1
+     9e6:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+     9ea:	08 95       	ret
+
+000009ec <lcd_led>:
+     9ec:	88 23       	and	r24, r24
+     9ee:	31 f0       	breq	.+12     	; 0x9fc <lcd_led+0x10>
+     9f0:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     9f4:	87 7f       	andi	r24, 0xF7	; 247
+     9f6:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     9fa:	05 c0       	rjmp	.+10     	; 0xa06 <lcd_led+0x1a>
+     9fc:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     a00:	88 60       	ori	r24, 0x08	; 8
+     a02:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+     a06:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     a0a:	80 e0       	ldi	r24, 0x00	; 0
+     a0c:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+     a10:	08 95       	ret
+
+00000a12 <lcd_home>:
+     a12:	82 e0       	ldi	r24, 0x02	; 2
+     a14:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+     a18:	08 95       	ret
+
+00000a1a <lcd_putc>:
+     a1a:	cf 93       	push	r28
+     a1c:	c8 2f       	mov	r28, r24
+     a1e:	0e 94 28 04 	call	0x850	; 0x850 <lcd_waitbusy>
+     a22:	ca 30       	cpi	r28, 0x0A	; 10
+     a24:	49 f4       	brne	.+18     	; 0xa38 <lcd_putc+0x1e>
+     a26:	80 34       	cpi	r24, 0x40	; 64
+     a28:	10 f0       	brcs	.+4      	; 0xa2e <lcd_putc+0x14>
+     a2a:	80 e0       	ldi	r24, 0x00	; 0
+     a2c:	01 c0       	rjmp	.+2      	; 0xa30 <lcd_putc+0x16>
+     a2e:	80 e4       	ldi	r24, 0x40	; 64
+     a30:	80 58       	subi	r24, 0x80	; 128
+     a32:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+     a36:	13 c0       	rjmp	.+38     	; 0xa5e <lcd_putc+0x44>
+     a38:	80 31       	cpi	r24, 0x10	; 16
+     a3a:	29 f4       	brne	.+10     	; 0xa46 <lcd_putc+0x2c>
+     a3c:	60 e0       	ldi	r22, 0x00	; 0
+     a3e:	80 ec       	ldi	r24, 0xC0	; 192
+     a40:	0e 94 3c 04 	call	0x878	; 0x878 <lcd_write>
+     a44:	06 c0       	rjmp	.+12     	; 0xa52 <lcd_putc+0x38>
+     a46:	80 35       	cpi	r24, 0x50	; 80
+     a48:	21 f4       	brne	.+8      	; 0xa52 <lcd_putc+0x38>
+     a4a:	60 e0       	ldi	r22, 0x00	; 0
+     a4c:	80 e8       	ldi	r24, 0x80	; 128
+     a4e:	0e 94 3c 04 	call	0x878	; 0x878 <lcd_write>
+     a52:	0e 94 28 04 	call	0x850	; 0x850 <lcd_waitbusy>
+     a56:	61 e0       	ldi	r22, 0x01	; 1
+     a58:	8c 2f       	mov	r24, r28
+     a5a:	0e 94 3c 04 	call	0x878	; 0x878 <lcd_write>
+     a5e:	cf 91       	pop	r28
+     a60:	08 95       	ret
+
+00000a62 <lcd_puts>:
+     a62:	cf 93       	push	r28
+     a64:	df 93       	push	r29
+     a66:	ec 01       	movw	r28, r24
+     a68:	21 96       	adiw	r28, 0x01	; 1
+     a6a:	fc 01       	movw	r30, r24
+     a6c:	80 81       	ld	r24, Z
+     a6e:	88 23       	and	r24, r24
+     a70:	29 f0       	breq	.+10     	; 0xa7c <lcd_puts+0x1a>
+     a72:	0e 94 0d 05 	call	0xa1a	; 0xa1a <lcd_putc>
+     a76:	89 91       	ld	r24, Y+
+     a78:	81 11       	cpse	r24, r1
+     a7a:	fb cf       	rjmp	.-10     	; 0xa72 <lcd_puts+0x10>
+     a7c:	df 91       	pop	r29
+     a7e:	cf 91       	pop	r28
+     a80:	08 95       	ret
+
+00000a82 <lcd_init>:
+
+// инициализация дисплея
+void lcd_init(uint8_t dispAttr)
+{
+     a82:	1f 93       	push	r17
+     a84:	cf 93       	push	r28
+     a86:	df 93       	push	r29
+     a88:	18 2f       	mov	r17, r24
+	#if LCD_PCF8574_INIT == 1
+	//инициализация pcf
+	pcf8574_init();
+     a8a:	0e 94 78 06 	call	0xcf0	; 0xcf0 <pcf8574_init>
+	#endif
+
+	dataport = 0;
+     a8e:	10 92 42 03 	sts	0x0342, r1	; 0x800342 <__data_end>
+	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
+     a92:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     a96:	80 e0       	ldi	r24, 0x00	; 0
+     a98:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+static inline void _delayFourCycles(unsigned int __count)
+{
+    if ( __count == 0 )    
+        __asm__ __volatile__( "rjmp 1f\n 1:" );    
+    else
+        __asm__ __volatile__ (
+     a9c:	80 ea       	ldi	r24, 0xA0	; 160
+     a9e:	9f e0       	ldi	r25, 0x0F	; 15
+     aa0:	01 97       	sbiw	r24, 0x01	; 1
+     aa2:	f1 f7       	brne	.-4      	; 0xaa0 <lcd_init+0x1e>
+	pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
+
+    delay(16000);
+
+    // первоначальная запись на ЖК-дисплей — 8 бит
+    dataport |= _BV(LCD_DATA1_PIN);  // _BV(LCD_FUNCTION)>>4;
+     aa4:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     aa8:	80 62       	ori	r24, 0x20	; 32
+     aaa:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+    dataport |= _BV(LCD_DATA0_PIN);  // _BV(LCD_FUNCTION_8BIT)>>4;
+     aae:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     ab2:	80 61       	ori	r24, 0x10	; 16
+     ab4:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+    pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
+     ab8:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     abc:	80 e0       	ldi	r24, 0x00	; 0
+     abe:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+
+	// дрючим дисплей чтобы он начал работать
+    lcd_e_toggle();
+     ac2:	0e 94 32 04 	call	0x864	; 0x864 <toggle_e>
+static inline void _delayFourCycles(unsigned int __count)
+{
+    if ( __count == 0 )    
+        __asm__ __volatile__( "rjmp 1f\n 1:" );    
+    else
+        __asm__ __volatile__ (
+     ac6:	80 ee       	ldi	r24, 0xE0	; 224
+     ac8:	94 e0       	ldi	r25, 0x04	; 4
+     aca:	01 97       	sbiw	r24, 0x01	; 1
+     acc:	f1 f7       	brne	.-4      	; 0xaca <lcd_init+0x48>
+    pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
+
+	// дрючим дисплей чтобы он начал работать
+    lcd_e_toggle();
+    delay(4992);
+    lcd_e_toggle();      
+     ace:	0e 94 32 04 	call	0x864	; 0x864 <toggle_e>
+static inline void _delayFourCycles(unsigned int __count)
+{
+    if ( __count == 0 )    
+        __asm__ __volatile__( "rjmp 1f\n 1:" );    
+    else
+        __asm__ __volatile__ (
+     ad2:	c0 e1       	ldi	r28, 0x10	; 16
+     ad4:	d0 e0       	ldi	r29, 0x00	; 0
+     ad6:	ce 01       	movw	r24, r28
+     ad8:	01 97       	sbiw	r24, 0x01	; 1
+     ada:	f1 f7       	brne	.-4      	; 0xad8 <lcd_init+0x56>
+	// дрючим дисплей чтобы он начал работать
+    lcd_e_toggle();
+    delay(4992);
+    lcd_e_toggle();      
+    delay(64);        
+    lcd_e_toggle();      
+     adc:	0e 94 32 04 	call	0x864	; 0x864 <toggle_e>
+static inline void _delayFourCycles(unsigned int __count)
+{
+    if ( __count == 0 )    
+        __asm__ __volatile__( "rjmp 1f\n 1:" );    
+    else
+        __asm__ __volatile__ (
+     ae0:	ce 01       	movw	r24, r28
+     ae2:	01 97       	sbiw	r24, 0x01	; 1
+     ae4:	f1 f7       	brne	.-4      	; 0xae2 <lcd_init+0x60>
+    delay(64);        
+    lcd_e_toggle();      
+    delay(64);          
+
+    // переходим в 4 битный режим
+    dataport &= ~_BV(LCD_DATA0_PIN);
+     ae6:	80 91 42 03 	lds	r24, 0x0342	; 0x800342 <__data_end>
+     aea:	8f 7e       	andi	r24, 0xEF	; 239
+     aec:	80 93 42 03 	sts	0x0342, r24	; 0x800342 <__data_end>
+    pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
+     af0:	60 91 42 03 	lds	r22, 0x0342	; 0x800342 <__data_end>
+     af4:	80 e0       	ldi	r24, 0x00	; 0
+     af6:	0e 94 95 06 	call	0xd2a	; 0xd2a <pcf8574_setoutput>
+    lcd_e_toggle();
+     afa:	0e 94 32 04 	call	0x864	; 0x864 <toggle_e>
+static inline void _delayFourCycles(unsigned int __count)
+{
+    if ( __count == 0 )    
+        __asm__ __volatile__( "rjmp 1f\n 1:" );    
+    else
+        __asm__ __volatile__ (
+     afe:	21 97       	sbiw	r28, 0x01	; 1
+     b00:	f1 f7       	brne	.-4      	; 0xafe <lcd_init+0x7c>
+    pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport);
+    lcd_e_toggle();
+    delay(64); 
+    
+
+    lcd_command(LCD_FUNCTION_DEFAULT);      // настраиваем кол-во строк
+     b02:	88 e2       	ldi	r24, 0x28	; 40
+     b04:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+    lcd_command(LCD_DISP_OFF);              // вырубаем дисплей
+     b08:	88 e0       	ldi	r24, 0x08	; 8
+     b0a:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+    lcd_clrscr();                           // чистим экран
+     b0e:	0e 94 f2 04 	call	0x9e4	; 0x9e4 <lcd_clrscr>
+    lcd_command(LCD_MODE_DEFAULT);          // запускаемся в стандартном режиме
+     b12:	86 e0       	ldi	r24, 0x06	; 6
+     b14:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+    lcd_command(dispAttr);                  // отправляем настройки
+     b18:	81 2f       	mov	r24, r17
+     b1a:	0e 94 de 04 	call	0x9bc	; 0x9bc <lcd_command>
+}
+     b1e:	df 91       	pop	r29
+     b20:	cf 91       	pop	r28
+     b22:	1f 91       	pop	r17
+     b24:	08 95       	ret
+
+00000b26 <Lcd_inciliation>:
+struct TextCounter textCounter;
+
+//struct TextCounter textCounter;
+
+void Lcd_inciliation() {
+    lcd_init(LCD_DISP_ON_BLINK); // инициализация дисплея
+     b26:	8d e0       	ldi	r24, 0x0D	; 13
+     b28:	0e 94 41 05 	call	0xa82	; 0xa82 <lcd_init>
+    lcd_home(); // домой курсор
+     b2c:	0e 94 09 05 	call	0xa12	; 0xa12 <lcd_home>
+    lcd_led(0); // вкл подсветки
+     b30:	80 e0       	ldi	r24, 0x00	; 0
+     b32:	0e 94 f6 04 	call	0x9ec	; 0x9ec <lcd_led>
+     b36:	08 95       	ret
+
+00000b38 <fillBuffer1>:
+    //textCounter.startTime = millis(); // Запоминаем время запуска программы
+	//Из за строчки выше все ломается
+}
+
+void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) {
+     b38:	cf 92       	push	r12
+     b3a:	df 92       	push	r13
+     b3c:	ef 92       	push	r14
+     b3e:	ff 92       	push	r15
+     b40:	0f 93       	push	r16
+     b42:	1f 93       	push	r17
+     b44:	cf 93       	push	r28
+     b46:	df 93       	push	r29
+     b48:	8c 01       	movw	r16, r24
+     b4a:	7b 01       	movw	r14, r22
+     b4c:	c9 01       	movw	r24, r18
+    int startIndex = incrementValue % strlen(source); // Определяем начальный индекс на основе incrementValue
+     b4e:	f8 01       	movw	r30, r16
+     b50:	01 90       	ld	r0, Z+
+     b52:	00 20       	and	r0, r0
+     b54:	e9 f7       	brne	.-6      	; 0xb50 <fillBuffer1+0x18>
+     b56:	31 97       	sbiw	r30, 0x01	; 1
+     b58:	bf 01       	movw	r22, r30
+     b5a:	60 1b       	sub	r22, r16
+     b5c:	71 0b       	sbc	r23, r17
+     b5e:	0e 94 76 0b 	call	0x16ec	; 0x16ec <__udivmodhi4>
+     b62:	67 01       	movw	r12, r14
+     b64:	20 e1       	ldi	r18, 0x10	; 16
+     b66:	c2 0e       	add	r12, r18
+     b68:	d1 1c       	adc	r13, r1
+     b6a:	e7 01       	movw	r28, r14
+    int endIndex = startIndex + 16;
+
+    for (int i = 0; i < 16; ++i) {
+        buffer[i] = source[(startIndex + i) % strlen(source)];
+     b6c:	9c 01       	movw	r18, r24
+     b6e:	2e 19       	sub	r18, r14
+     b70:	3f 09       	sbc	r19, r15
+     b72:	f8 01       	movw	r30, r16
+     b74:	01 90       	ld	r0, Z+
+     b76:	00 20       	and	r0, r0
+     b78:	e9 f7       	brne	.-6      	; 0xb74 <fillBuffer1+0x3c>
+     b7a:	31 97       	sbiw	r30, 0x01	; 1
+     b7c:	bf 01       	movw	r22, r30
+     b7e:	60 1b       	sub	r22, r16
+     b80:	71 0b       	sbc	r23, r17
+     b82:	c9 01       	movw	r24, r18
+     b84:	8c 0f       	add	r24, r28
+     b86:	9d 1f       	adc	r25, r29
+     b88:	0e 94 76 0b 	call	0x16ec	; 0x16ec <__udivmodhi4>
+     b8c:	f8 01       	movw	r30, r16
+     b8e:	e8 0f       	add	r30, r24
+     b90:	f9 1f       	adc	r31, r25
+     b92:	80 81       	ld	r24, Z
+     b94:	89 93       	st	Y+, r24
+
+void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) {
+    int startIndex = incrementValue % strlen(source); // Определяем начальный индекс на основе incrementValue
+    int endIndex = startIndex + 16;
+
+    for (int i = 0; i < 16; ++i) {
+     b96:	cc 15       	cp	r28, r12
+     b98:	dd 05       	cpc	r29, r13
+     b9a:	59 f7       	brne	.-42     	; 0xb72 <fillBuffer1+0x3a>
+        buffer[i] = source[(startIndex + i) % strlen(source)];
+    }
+    buffer[16] = '\0'; // Установка нулевого символа в конце буфера
+     b9c:	f7 01       	movw	r30, r14
+     b9e:	10 8a       	std	Z+16, r1	; 0x10
+}
+     ba0:	df 91       	pop	r29
+     ba2:	cf 91       	pop	r28
+     ba4:	1f 91       	pop	r17
+     ba6:	0f 91       	pop	r16
+     ba8:	ff 90       	pop	r15
+     baa:	ef 90       	pop	r14
+     bac:	df 90       	pop	r13
+     bae:	cf 90       	pop	r12
+     bb0:	08 95       	ret
+
+00000bb2 <fillBuffer2>:
+
+void fillBuffer2(float value1, float value2, float value3, char* buffer, size_t bufferSize) {
+     bb2:	af 92       	push	r10
+     bb4:	bf 92       	push	r11
+     bb6:	cf 92       	push	r12
+     bb8:	df 92       	push	r13
+     bba:	ef 92       	push	r14
+     bbc:	ff 92       	push	r15
+     bbe:	0f 93       	push	r16
+     bc0:	1f 93       	push	r17
+    snprintf(buffer, bufferSize, "%.2f.%.2f.%.2f", value1, value2, value3);
+     bc2:	1f 93       	push	r17
+     bc4:	0f 93       	push	r16
+     bc6:	ff 92       	push	r15
+     bc8:	ef 92       	push	r14
+     bca:	5f 93       	push	r21
+     bcc:	4f 93       	push	r20
+     bce:	3f 93       	push	r19
+     bd0:	2f 93       	push	r18
+     bd2:	9f 93       	push	r25
+     bd4:	8f 93       	push	r24
+     bd6:	7f 93       	push	r23
+     bd8:	6f 93       	push	r22
+     bda:	86 e1       	ldi	r24, 0x16	; 22
+     bdc:	93 e0       	ldi	r25, 0x03	; 3
+     bde:	9f 93       	push	r25
+     be0:	8f 93       	push	r24
+     be2:	bf 92       	push	r11
+     be4:	af 92       	push	r10
+     be6:	df 92       	push	r13
+     be8:	cf 92       	push	r12
+     bea:	0e 94 af 0b 	call	0x175e	; 0x175e <snprintf>
+}
+     bee:	8d b7       	in	r24, 0x3d	; 61
+     bf0:	9e b7       	in	r25, 0x3e	; 62
+     bf2:	42 96       	adiw	r24, 0x12	; 18
+     bf4:	0f b6       	in	r0, 0x3f	; 63
+     bf6:	f8 94       	cli
+     bf8:	9e bf       	out	0x3e, r25	; 62
+     bfa:	0f be       	out	0x3f, r0	; 63
+     bfc:	8d bf       	out	0x3d, r24	; 61
+     bfe:	1f 91       	pop	r17
+     c00:	0f 91       	pop	r16
+     c02:	ff 90       	pop	r15
+     c04:	ef 90       	pop	r14
+     c06:	df 90       	pop	r13
+     c08:	cf 90       	pop	r12
+     c0a:	bf 90       	pop	r11
+     c0c:	af 90       	pop	r10
+     c0e:	08 95       	ret
+
+00000c10 <printLcd>:
+
+void printLcd(struct DisplayData* displayData) {
+     c10:	6f 92       	push	r6
+     c12:	7f 92       	push	r7
+     c14:	af 92       	push	r10
+     c16:	bf 92       	push	r11
+     c18:	cf 92       	push	r12
+     c1a:	df 92       	push	r13
+     c1c:	ef 92       	push	r14
+     c1e:	ff 92       	push	r15
+     c20:	0f 93       	push	r16
+     c22:	1f 93       	push	r17
+     c24:	cf 93       	push	r28
+     c26:	df 93       	push	r29
+     c28:	cd b7       	in	r28, 0x3d	; 61
+     c2a:	de b7       	in	r29, 0x3e	; 62
+     c2c:	c2 54       	subi	r28, 0x42	; 66
+     c2e:	d1 09       	sbc	r29, r1
+     c30:	0f b6       	in	r0, 0x3f	; 63
+     c32:	f8 94       	cli
+     c34:	de bf       	out	0x3e, r29	; 62
+     c36:	0f be       	out	0x3f, r0	; 63
+     c38:	cd bf       	out	0x3d, r28	; 61
+     c3a:	3c 01       	movw	r6, r24
+    // Буферы для заполнения данных
+    char buffer1[17];
+    char buffer2[17];
+
+    // Заполнение буфера 1
+    fillBuffer1(displayData->topLine, buffer1, sizeof(buffer1), textCounter.incrementValue);
+     c3c:	20 91 49 03 	lds	r18, 0x0349	; 0x800349 <textCounter+0x4>
+     c40:	30 91 4a 03 	lds	r19, 0x034A	; 0x80034a <textCounter+0x5>
+     c44:	41 e1       	ldi	r20, 0x11	; 17
+     c46:	50 e0       	ldi	r21, 0x00	; 0
+     c48:	be 01       	movw	r22, r28
+     c4a:	6f 5f       	subi	r22, 0xFF	; 255
+     c4c:	7f 4f       	sbci	r23, 0xFF	; 255
+     c4e:	0e 94 9c 05 	call	0xb38	; 0xb38 <fillBuffer1>
+
+    // Заполнение буфера 2
+    fillBuffer2(displayData->value1, displayData->value2, displayData->value3, buffer2, sizeof(buffer2));
+     c52:	f3 01       	movw	r30, r6
+     c54:	e8 5b       	subi	r30, 0xB8	; 184
+     c56:	ff 4f       	sbci	r31, 0xFF	; 255
+     c58:	e0 80       	ld	r14, Z
+     c5a:	f1 80       	ldd	r15, Z+1	; 0x01
+     c5c:	02 81       	ldd	r16, Z+2	; 0x02
+     c5e:	13 81       	ldd	r17, Z+3	; 0x03
+     c60:	34 97       	sbiw	r30, 0x04	; 4
+     c62:	20 81       	ld	r18, Z
+     c64:	31 81       	ldd	r19, Z+1	; 0x01
+     c66:	42 81       	ldd	r20, Z+2	; 0x02
+     c68:	53 81       	ldd	r21, Z+3	; 0x03
+     c6a:	34 97       	sbiw	r30, 0x04	; 4
+     c6c:	60 81       	ld	r22, Z
+     c6e:	71 81       	ldd	r23, Z+1	; 0x01
+     c70:	82 81       	ldd	r24, Z+2	; 0x02
+     c72:	93 81       	ldd	r25, Z+3	; 0x03
+     c74:	0f 2e       	mov	r0, r31
+     c76:	f1 e1       	ldi	r31, 0x11	; 17
+     c78:	af 2e       	mov	r10, r31
+     c7a:	b1 2c       	mov	r11, r1
+     c7c:	f0 2d       	mov	r31, r0
+     c7e:	fe 01       	movw	r30, r28
+     c80:	72 96       	adiw	r30, 0x12	; 18
+     c82:	6f 01       	movw	r12, r30
+     c84:	0e 94 d9 05 	call	0xbb2	; 0xbb2 <fillBuffer2>
+
+    // Создание массива для вывода на дисплей
+    char displayArray[32];
+    strncpy(displayArray, buffer1, 16); // Копирование первых 16 символов из buffer1 в displayArray
+     c88:	40 e1       	ldi	r20, 0x10	; 16
+     c8a:	50 e0       	ldi	r21, 0x00	; 0
+     c8c:	be 01       	movw	r22, r28
+     c8e:	6f 5f       	subi	r22, 0xFF	; 255
+     c90:	7f 4f       	sbci	r23, 0xFF	; 255
+     c92:	ce 01       	movw	r24, r28
+     c94:	83 96       	adiw	r24, 0x23	; 35
+     c96:	0e 94 8a 0b 	call	0x1714	; 0x1714 <strncpy>
+    strncpy(displayArray + 16, buffer2, 16); // Копирование первых 16 символов из buffer2 в displayArray, начиная с позиции 16
+     c9a:	40 e1       	ldi	r20, 0x10	; 16
+     c9c:	50 e0       	ldi	r21, 0x00	; 0
+     c9e:	b6 01       	movw	r22, r12
+     ca0:	ce 01       	movw	r24, r28
+     ca2:	c3 96       	adiw	r24, 0x33	; 51
+     ca4:	0e 94 8a 0b 	call	0x1714	; 0x1714 <strncpy>
+
+    // Вывод данных на экран
+    lcd_gotoxy(0, 0);
+     ca8:	60 e0       	ldi	r22, 0x00	; 0
+     caa:	80 e0       	ldi	r24, 0x00	; 0
+     cac:	0e 94 e8 04 	call	0x9d0	; 0x9d0 <lcd_gotoxy>
+    lcd_puts(displayArray);
+     cb0:	ce 01       	movw	r24, r28
+     cb2:	83 96       	adiw	r24, 0x23	; 35
+     cb4:	0e 94 31 05 	call	0xa62	; 0xa62 <lcd_puts>
+
+    lcd_gotoxy(0, 1);
+     cb8:	61 e0       	ldi	r22, 0x01	; 1
+     cba:	80 e0       	ldi	r24, 0x00	; 0
+     cbc:	0e 94 e8 04 	call	0x9d0	; 0x9d0 <lcd_gotoxy>
+    lcd_puts(displayArray + 16); // Вывод второй половины displayArray
+     cc0:	ce 01       	movw	r24, r28
+     cc2:	c3 96       	adiw	r24, 0x33	; 51
+     cc4:	0e 94 31 05 	call	0xa62	; 0xa62 <lcd_puts>
+}
+     cc8:	ce 5b       	subi	r28, 0xBE	; 190
+     cca:	df 4f       	sbci	r29, 0xFF	; 255
+     ccc:	0f b6       	in	r0, 0x3f	; 63
+     cce:	f8 94       	cli
+     cd0:	de bf       	out	0x3e, r29	; 62
+     cd2:	0f be       	out	0x3f, r0	; 63
+     cd4:	cd bf       	out	0x3d, r28	; 61
+     cd6:	df 91       	pop	r29
+     cd8:	cf 91       	pop	r28
+     cda:	1f 91       	pop	r17
+     cdc:	0f 91       	pop	r16
+     cde:	ff 90       	pop	r15
+     ce0:	ef 90       	pop	r14
+     ce2:	df 90       	pop	r13
+     ce4:	cf 90       	pop	r12
+     ce6:	bf 90       	pop	r11
+     ce8:	af 90       	pop	r10
+     cea:	7f 90       	pop	r7
+     cec:	6f 90       	pop	r6
+     cee:	08 95       	ret
+
+00000cf0 <pcf8574_init>:
+		i2c_write(b);
+		i2c_stop();
+		return 0;
+	}
+	return -1;
+}
+     cf0:	0e 94 de 06 	call	0xdbc	; 0xdbc <i2c_init>
+     cf4:	83 e0       	ldi	r24, 0x03	; 3
+     cf6:	8a 95       	dec	r24
+     cf8:	f1 f7       	brne	.-4      	; 0xcf6 <pcf8574_init+0x6>
+     cfa:	00 00       	nop
+     cfc:	10 92 4b 03 	sts	0x034B, r1	; 0x80034b <pcf8574_pinstatus>
+     d00:	08 95       	ret
+
+00000d02 <pcf8574_getoutputpin>:
+     d02:	81 11       	cpse	r24, r1
+     d04:	0e c0       	rjmp	.+28     	; 0xd22 <pcf8574_getoutputpin+0x20>
+     d06:	68 30       	cpi	r22, 0x08	; 8
+     d08:	70 f4       	brcc	.+28     	; 0xd26 <pcf8574_getoutputpin+0x24>
+     d0a:	80 91 4b 03 	lds	r24, 0x034B	; 0x80034b <pcf8574_pinstatus>
+     d0e:	08 2e       	mov	r0, r24
+     d10:	00 0c       	add	r0, r0
+     d12:	99 0b       	sbc	r25, r25
+     d14:	02 c0       	rjmp	.+4      	; 0xd1a <pcf8574_getoutputpin+0x18>
+     d16:	95 95       	asr	r25
+     d18:	87 95       	ror	r24
+     d1a:	6a 95       	dec	r22
+     d1c:	e2 f7       	brpl	.-8      	; 0xd16 <pcf8574_getoutputpin+0x14>
+     d1e:	81 70       	andi	r24, 0x01	; 1
+     d20:	08 95       	ret
+     d22:	8f ef       	ldi	r24, 0xFF	; 255
+     d24:	08 95       	ret
+     d26:	8f ef       	ldi	r24, 0xFF	; 255
+     d28:	08 95       	ret
+
+00000d2a <pcf8574_setoutput>:
+     d2a:	cf 93       	push	r28
+     d2c:	81 11       	cpse	r24, r1
+     d2e:	0d c0       	rjmp	.+26     	; 0xd4a <pcf8574_setoutput+0x20>
+     d30:	c6 2f       	mov	r28, r22
+     d32:	60 93 4b 03 	sts	0x034B, r22	; 0x80034b <pcf8574_pinstatus>
+     d36:	8e e4       	ldi	r24, 0x4E	; 78
+     d38:	0e 94 e4 06 	call	0xdc8	; 0xdc8 <i2c_start>
+     d3c:	8c 2f       	mov	r24, r28
+     d3e:	0e 94 14 07 	call	0xe28	; 0xe28 <i2c_write>
+     d42:	0e 94 0b 07 	call	0xe16	; 0xe16 <i2c_stop>
+     d46:	80 e0       	ldi	r24, 0x00	; 0
+     d48:	01 c0       	rjmp	.+2      	; 0xd4c <pcf8574_setoutput+0x22>
+     d4a:	8f ef       	ldi	r24, 0xFF	; 255
+     d4c:	cf 91       	pop	r28
+     d4e:	08 95       	ret
+
+00000d50 <pcf8574_setoutputpin>:
+
+// настройка пинов вывода
+int8_t pcf8574_setoutputpin(uint8_t deviceid, uint8_t pin, uint8_t data) {
+     d50:	cf 93       	push	r28
+     d52:	df 93       	push	r29
+	if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) {
+     d54:	81 11       	cpse	r24, r1
+     d56:	24 c0       	rjmp	.+72     	; 0xda0 <pcf8574_setoutputpin+0x50>
+     d58:	68 30       	cpi	r22, 0x08	; 8
+     d5a:	20 f5       	brcc	.+72     	; 0xda4 <pcf8574_setoutputpin+0x54>
+	    uint8_t b = 0;
+	    b = pcf8574_pinstatus[deviceid];
+     d5c:	80 91 4b 03 	lds	r24, 0x034B	; 0x80034b <pcf8574_pinstatus>
+	    b = (data != 0) ? (b | (1 << pin)) : (b & ~(1 << pin));
+     d60:	44 23       	and	r20, r20
+     d62:	49 f0       	breq	.+18     	; 0xd76 <pcf8574_setoutputpin+0x26>
+     d64:	c1 e0       	ldi	r28, 0x01	; 1
+     d66:	d0 e0       	ldi	r29, 0x00	; 0
+     d68:	02 c0       	rjmp	.+4      	; 0xd6e <pcf8574_setoutputpin+0x1e>
+     d6a:	cc 0f       	add	r28, r28
+     d6c:	dd 1f       	adc	r29, r29
+     d6e:	6a 95       	dec	r22
+     d70:	e2 f7       	brpl	.-8      	; 0xd6a <pcf8574_setoutputpin+0x1a>
+     d72:	c8 2b       	or	r28, r24
+     d74:	09 c0       	rjmp	.+18     	; 0xd88 <pcf8574_setoutputpin+0x38>
+     d76:	c1 e0       	ldi	r28, 0x01	; 1
+     d78:	d0 e0       	ldi	r29, 0x00	; 0
+     d7a:	02 c0       	rjmp	.+4      	; 0xd80 <pcf8574_setoutputpin+0x30>
+     d7c:	cc 0f       	add	r28, r28
+     d7e:	dd 1f       	adc	r29, r29
+     d80:	6a 95       	dec	r22
+     d82:	e2 f7       	brpl	.-8      	; 0xd7c <pcf8574_setoutputpin+0x2c>
+     d84:	c0 95       	com	r28
+     d86:	c8 23       	and	r28, r24
+	    pcf8574_pinstatus[deviceid] = b;
+     d88:	c0 93 4b 03 	sts	0x034B, r28	; 0x80034b <pcf8574_pinstatus>
+	    //рестартим
+		i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE);
+     d8c:	8e e4       	ldi	r24, 0x4E	; 78
+     d8e:	0e 94 e4 06 	call	0xdc8	; 0xdc8 <i2c_start>
+		i2c_write(b);
+     d92:	8c 2f       	mov	r24, r28
+     d94:	0e 94 14 07 	call	0xe28	; 0xe28 <i2c_write>
+		i2c_stop();
+     d98:	0e 94 0b 07 	call	0xe16	; 0xe16 <i2c_stop>
+		return 0;
+     d9c:	80 e0       	ldi	r24, 0x00	; 0
+     d9e:	03 c0       	rjmp	.+6      	; 0xda6 <pcf8574_setoutputpin+0x56>
+	}
+	return -1;
+     da0:	8f ef       	ldi	r24, 0xFF	; 255
+     da2:	01 c0       	rjmp	.+2      	; 0xda6 <pcf8574_setoutputpin+0x56>
+     da4:	8f ef       	ldi	r24, 0xFF	; 255
+}
+     da6:	df 91       	pop	r29
+     da8:	cf 91       	pop	r28
+     daa:	08 95       	ret
+
+00000dac <pcf8574_setoutputpinhigh>:
+
+// установка высокого уровня на выходных пинах
+int8_t pcf8574_setoutputpinhigh(uint8_t deviceid, uint8_t pin) {
+	return pcf8574_setoutputpin(deviceid, pin, 1);
+     dac:	41 e0       	ldi	r20, 0x01	; 1
+     dae:	0e 94 a8 06 	call	0xd50	; 0xd50 <pcf8574_setoutputpin>
+}
+     db2:	08 95       	ret
+
+00000db4 <pcf8574_setoutputpinlow>:
+
+// установка низкого уровня на выходных пинах
+int8_t pcf8574_setoutputpinlow(uint8_t deviceid, uint8_t pin) {
+	return pcf8574_setoutputpin(deviceid, pin, 0);
+     db4:	40 e0       	ldi	r20, 0x00	; 0
+     db6:	0e 94 a8 06 	call	0xd50	; 0xd50 <pcf8574_setoutputpin>
+}
+     dba:	08 95       	ret
+
+00000dbc <i2c_init>:
+
+// тупа повторяем условие СТАРТ
+unsigned char i2c_rep_start(unsigned char address)
+{
+    return i2c_start(address);
+}
+     dbc:	10 92 b9 00 	sts	0x00B9, r1	; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59>
+     dc0:	8d ef       	ldi	r24, 0xFD	; 253
+     dc2:	80 93 b8 00 	sts	0x00B8, r24	; 0x8000b8 <__DATA_REGION_ORIGIN__+0x58>
+     dc6:	08 95       	ret
+
+00000dc8 <i2c_start>:
+     dc8:	94 ea       	ldi	r25, 0xA4	; 164
+     dca:	90 93 bc 00 	sts	0x00BC, r25	; 0x8000bc <__DATA_REGION_ORIGIN__+0x5c>
+     dce:	ec eb       	ldi	r30, 0xBC	; 188
+     dd0:	f0 e0       	ldi	r31, 0x00	; 0
+     dd2:	90 81       	ld	r25, Z
+     dd4:	99 23       	and	r25, r25
+     dd6:	ec f7       	brge	.-6      	; 0xdd2 <i2c_start+0xa>
+     dd8:	90 91 b9 00 	lds	r25, 0x00B9	; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59>
+     ddc:	98 7f       	andi	r25, 0xF8	; 248
+     dde:	98 30       	cpi	r25, 0x08	; 8
+     de0:	11 f0       	breq	.+4      	; 0xde6 <i2c_start+0x1e>
+     de2:	90 31       	cpi	r25, 0x10	; 16
+     de4:	a1 f4       	brne	.+40     	; 0xe0e <i2c_start+0x46>
+     de6:	80 93 bb 00 	sts	0x00BB, r24	; 0x8000bb <__DATA_REGION_ORIGIN__+0x5b>
+     dea:	84 e8       	ldi	r24, 0x84	; 132
+     dec:	80 93 bc 00 	sts	0x00BC, r24	; 0x8000bc <__DATA_REGION_ORIGIN__+0x5c>
+     df0:	ec eb       	ldi	r30, 0xBC	; 188
+     df2:	f0 e0       	ldi	r31, 0x00	; 0
+     df4:	80 81       	ld	r24, Z
+     df6:	88 23       	and	r24, r24
+     df8:	ec f7       	brge	.-6      	; 0xdf4 <i2c_start+0x2c>
+     dfa:	90 91 b9 00 	lds	r25, 0x00B9	; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59>
+     dfe:	98 7f       	andi	r25, 0xF8	; 248
+     e00:	98 31       	cpi	r25, 0x18	; 24
+     e02:	39 f0       	breq	.+14     	; 0xe12 <i2c_start+0x4a>
+     e04:	81 e0       	ldi	r24, 0x01	; 1
+     e06:	90 34       	cpi	r25, 0x40	; 64
+     e08:	29 f4       	brne	.+10     	; 0xe14 <i2c_start+0x4c>
+     e0a:	80 e0       	ldi	r24, 0x00	; 0
+     e0c:	08 95       	ret
+     e0e:	81 e0       	ldi	r24, 0x01	; 1
+     e10:	08 95       	ret
+     e12:	80 e0       	ldi	r24, 0x00	; 0
+     e14:	08 95       	ret
+
+00000e16 <i2c_stop>:
+
+// передача условия СТОП на шину
+void i2c_stop(void)
+{
+    // отправка условия СТОП
+	TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
+     e16:	84 e9       	ldi	r24, 0x94	; 148
+     e18:	80 93 bc 00 	sts	0x00BC, r24	; 0x8000bc <__DATA_REGION_ORIGIN__+0x5c>
+	// ждем выполнения условия остановки
+	while(TWCR & (1<<TWSTO));
+     e1c:	ec eb       	ldi	r30, 0xBC	; 188
+     e1e:	f0 e0       	ldi	r31, 0x00	; 0
+     e20:	80 81       	ld	r24, Z
+     e22:	84 fd       	sbrc	r24, 4
+     e24:	fd cf       	rjmp	.-6      	; 0xe20 <i2c_stop+0xa>
+}
+     e26:	08 95       	ret
+
+00000e28 <i2c_write>:
+unsigned char i2c_write( unsigned char data )
+{	
+    uint8_t   twst;
+    
+	// отправляем данные на уст-во
+	TWDR = data;
+     e28:	80 93 bb 00 	sts	0x00BB, r24	; 0x8000bb <__DATA_REGION_ORIGIN__+0x5b>
+	TWCR = (1<<TWINT) | (1<<TWEN);
+     e2c:	84 e8       	ldi	r24, 0x84	; 132
+     e2e:	80 93 bc 00 	sts	0x00BC, r24	; 0x8000bc <__DATA_REGION_ORIGIN__+0x5c>
+	// ждем завершения передачи
+	while(!(TWCR & (1<<TWINT)));
+     e32:	ec eb       	ldi	r30, 0xBC	; 188
+     e34:	f0 e0       	ldi	r31, 0x00	; 0
+     e36:	80 81       	ld	r24, Z
+     e38:	88 23       	and	r24, r24
+     e3a:	ec f7       	brge	.-6      	; 0xe36 <i2c_write+0xe>
+	// записываем ответ от ведомого уст-ва
+	twst = TW_STATUS & 0xF8;
+     e3c:	90 91 b9 00 	lds	r25, 0x00B9	; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59>
+     e40:	98 7f       	andi	r25, 0xF8	; 248
+     e42:	81 e0       	ldi	r24, 0x01	; 1
+     e44:	98 32       	cpi	r25, 0x28	; 40
+     e46:	09 f4       	brne	.+2      	; 0xe4a <i2c_write+0x22>
+     e48:	80 e0       	ldi	r24, 0x00	; 0
+	if( twst != TW_MT_DATA_ACK) return 1;
+	return 0;
+}
+     e4a:	08 95       	ret
+
+00000e4c <main>:
+#include "UART/uart.h"
+#include "stdbool.h"
+#include "LCD/lcd.h"
+#include "Protocol/protocol.h"
+
+int main(void) {
+     e4c:	4f 92       	push	r4
+     e4e:	5f 92       	push	r5
+     e50:	6f 92       	push	r6
+     e52:	7f 92       	push	r7
+     e54:	8f 92       	push	r8
+     e56:	9f 92       	push	r9
+     e58:	af 92       	push	r10
+     e5a:	bf 92       	push	r11
+     e5c:	cf 92       	push	r12
+     e5e:	df 92       	push	r13
+     e60:	ef 92       	push	r14
+     e62:	ff 92       	push	r15
+     e64:	0f 93       	push	r16
+     e66:	1f 93       	push	r17
+     e68:	cf 93       	push	r28
+     e6a:	df 93       	push	r29
+     e6c:	cd b7       	in	r28, 0x3d	; 61
+     e6e:	de b7       	in	r29, 0x3e	; 62
+     e70:	c3 50       	subi	r28, 0x03	; 3
+     e72:	d2 40       	sbci	r29, 0x02	; 2
+     e74:	0f b6       	in	r0, 0x3f	; 63
+     e76:	f8 94       	cli
+     e78:	de bf       	out	0x3e, r29	; 62
+     e7a:	0f be       	out	0x3f, r0	; 63
+     e7c:	cd bf       	out	0x3d, r28	; 61
+    struct Client hdlc;
+    bool flag_connection = false;
+
+    Lcd_inciliation();
+     e7e:	0e 94 93 05 	call	0xb26	; 0xb26 <Lcd_inciliation>
+    UART_init();
+     e82:	0e 94 9e 0a 	call	0x153c	; 0x153c <UART_init>
+    init_hdlc_client(&hdlc, 200);
+     e86:	68 ec       	ldi	r22, 0xC8	; 200
+     e88:	70 e0       	ldi	r23, 0x00	; 0
+     e8a:	ce 01       	movw	r24, r28
+     e8c:	01 96       	adiw	r24, 0x01	; 1
+     e8e:	0e 94 53 00 	call	0xa6	; 0xa6 <init_hdlc_client>
+//    while(true){
+//        if (!flag_connection){
+//        }
+//    }
+
+    hdlc_connect(&hdlc);
+     e92:	ce 01       	movw	r24, r28
+     e94:	01 96       	adiw	r24, 0x01	; 1
+     e96:	0e 94 6c 00 	call	0xd8	; 0xd8 <hdlc_connect>
+    uint8_t buffer[10];
+
+    hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer);
+     e9a:	4a e0       	ldi	r20, 0x0A	; 10
+     e9c:	50 e0       	ldi	r21, 0x00	; 0
+     e9e:	be 01       	movw	r22, r28
+     ea0:	66 5e       	subi	r22, 0xE6	; 230
+     ea2:	7f 4f       	sbci	r23, 0xFF	; 255
+     ea4:	ce 01       	movw	r24, r28
+     ea6:	01 96       	adiw	r24, 0x01	; 1
+     ea8:	0e 94 91 00 	call	0x122	; 0x122 <hdlc_get_raw_frame>
+
+    UART_send(buffer, sizeof buffer);
+     eac:	6a e0       	ldi	r22, 0x0A	; 10
+     eae:	70 e0       	ldi	r23, 0x00	; 0
+     eb0:	ce 01       	movw	r24, r28
+     eb2:	4a 96       	adiw	r24, 0x1a	; 26
+     eb4:	0e 94 aa 0a 	call	0x1554	; 0x1554 <UART_send>
+
+    while(!flag_connection){
+        uint8_t* buffer_recive[10];
+        UART_receive(buffer_recive, sizeof buffer_recive);
+     eb8:	64 e1       	ldi	r22, 0x14	; 20
+     eba:	70 e0       	ldi	r23, 0x00	; 0
+     ebc:	ce 01       	movw	r24, r28
+     ebe:	80 51       	subi	r24, 0x10	; 16
+     ec0:	9e 4f       	sbci	r25, 0xFE	; 254
+     ec2:	0e 94 ce 0a 	call	0x159c	; 0x159c <UART_receive>
+
+        int err = hdlc_timeout_handler(&hdlc, 1);
+     ec6:	61 e0       	ldi	r22, 0x01	; 1
+     ec8:	70 e0       	ldi	r23, 0x00	; 0
+     eca:	ce 01       	movw	r24, r28
+     ecc:	01 96       	adiw	r24, 0x01	; 1
+     ece:	0e 94 a8 01 	call	0x350	; 0x350 <hdlc_timeout_handler>
+        if (err == ERR_FRAME_TIME_OUT){
+     ed2:	05 96       	adiw	r24, 0x05	; 5
+     ed4:	81 f4       	brne	.+32     	; 0xef6 <main+0xaa>
+            hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer);
+     ed6:	4a e0       	ldi	r20, 0x0A	; 10
+     ed8:	50 e0       	ldi	r21, 0x00	; 0
+     eda:	be 01       	movw	r22, r28
+     edc:	66 5e       	subi	r22, 0xE6	; 230
+     ede:	7f 4f       	sbci	r23, 0xFF	; 255
+     ee0:	ce 01       	movw	r24, r28
+     ee2:	01 96       	adiw	r24, 0x01	; 1
+     ee4:	0e 94 91 00 	call	0x122	; 0x122 <hdlc_get_raw_frame>
+            UART_send(buffer, sizeof buffer);
+     ee8:	6a e0       	ldi	r22, 0x0A	; 10
+     eea:	70 e0       	ldi	r23, 0x00	; 0
+     eec:	ce 01       	movw	r24, r28
+     eee:	4a 96       	adiw	r24, 0x1a	; 26
+     ef0:	0e 94 aa 0a 	call	0x1554	; 0x1554 <UART_send>
+     ef4:	e1 cf       	rjmp	.-62     	; 0xeb8 <main+0x6c>
+            continue;
+        }
+
+        err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive, sizeof buffer_recive, 0, 0);
+     ef6:	00 e0       	ldi	r16, 0x00	; 0
+     ef8:	10 e0       	ldi	r17, 0x00	; 0
+     efa:	20 e0       	ldi	r18, 0x00	; 0
+     efc:	30 e0       	ldi	r19, 0x00	; 0
+     efe:	44 e1       	ldi	r20, 0x14	; 20
+     f00:	50 e0       	ldi	r21, 0x00	; 0
+     f02:	be 01       	movw	r22, r28
+     f04:	60 51       	subi	r22, 0x10	; 16
+     f06:	7e 4f       	sbci	r23, 0xFE	; 254
+     f08:	ce 01       	movw	r24, r28
+     f0a:	01 96       	adiw	r24, 0x01	; 1
+     f0c:	0e 94 07 01 	call	0x20e	; 0x20e <hdlc_decode_recived_raw_data>
+     f10:	8c 01       	movw	r16, r24
+        if (err < 0){
+     f12:	99 23       	and	r25, r25
+     f14:	ac f4       	brge	.+42     	; 0xf40 <main+0xf4>
+            if (err == ERR_INVALID_SEQ_NUMBER_FRAME){
+     f16:	0a 3f       	cpi	r16, 0xFA	; 250
+     f18:	8f ef       	ldi	r24, 0xFF	; 255
+     f1a:	18 07       	cpc	r17, r24
+     f1c:	b1 f4       	brne	.+44     	; 0xf4a <main+0xfe>
+                uint8_t* buffer_rej[10];
+                hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej);
+     f1e:	44 e1       	ldi	r20, 0x14	; 20
+     f20:	50 e0       	ldi	r21, 0x00	; 0
+     f22:	be 01       	movw	r22, r28
+     f24:	60 5a       	subi	r22, 0xA0	; 160
+     f26:	7e 4f       	sbci	r23, 0xFE	; 254
+     f28:	ce 01       	movw	r24, r28
+     f2a:	01 96       	adiw	r24, 0x01	; 1
+     f2c:	0e 94 91 00 	call	0x122	; 0x122 <hdlc_get_raw_frame>
+                UART_send(buffer_rej, sizeof buffer_rej);
+     f30:	64 e1       	ldi	r22, 0x14	; 20
+     f32:	70 e0       	ldi	r23, 0x00	; 0
+     f34:	ce 01       	movw	r24, r28
+     f36:	80 5a       	subi	r24, 0xA0	; 160
+     f38:	9e 4f       	sbci	r25, 0xFE	; 254
+     f3a:	0e 94 aa 0a 	call	0x1554	; 0x1554 <UART_send>
+     f3e:	05 c0       	rjmp	.+10     	; 0xf4a <main+0xfe>
+                return err;
+            }
+            return err;
+        }
+
+        if (hdlc.state == READY_STATE){
+     f40:	89 81       	ldd	r24, Y+1	; 0x01
+
+    hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer);
+
+    UART_send(buffer, sizeof buffer);
+
+    while(!flag_connection){
+     f42:	82 30       	cpi	r24, 0x02	; 2
+     f44:	09 f0       	breq	.+2      	; 0xf48 <main+0xfc>
+     f46:	b8 cf       	rjmp	.-144    	; 0xeb8 <main+0x6c>
+     f48:	03 c0       	rjmp	.+6      	; 0xf50 <main+0x104>
+            hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer);
+            UART_send(buffer, sizeof buffer);
+            continue;
+        }
+
+        err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive, sizeof buffer_recive, 0, 0);
+     f4a:	80 2f       	mov	r24, r16
+     f4c:	91 2f       	mov	r25, r17
+     f4e:	fe c0       	rjmp	.+508    	; 0x114c <main+0x300>
+            flag_connection = true;
+        }
+    }
+
+    struct message mess;
+    mess.numbers[0] = 1.23;
+     f50:	84 ea       	ldi	r24, 0xA4	; 164
+     f52:	90 e7       	ldi	r25, 0x70	; 112
+     f54:	ad e9       	ldi	r26, 0x9D	; 157
+     f56:	bf e3       	ldi	r27, 0x3F	; 63
+     f58:	8c a3       	std	Y+36, r24	; 0x24
+     f5a:	9d a3       	std	Y+37, r25	; 0x25
+     f5c:	ae a3       	std	Y+38, r26	; 0x26
+     f5e:	bf a3       	std	Y+39, r27	; 0x27
+    mess.numbers[1] = 22.1;
+     f60:	8d ec       	ldi	r24, 0xCD	; 205
+     f62:	9c ec       	ldi	r25, 0xCC	; 204
+     f64:	a0 eb       	ldi	r26, 0xB0	; 176
+     f66:	b1 e4       	ldi	r27, 0x41	; 65
+     f68:	88 a7       	std	Y+40, r24	; 0x28
+     f6a:	99 a7       	std	Y+41, r25	; 0x29
+     f6c:	aa a7       	std	Y+42, r26	; 0x2a
+     f6e:	bb a7       	std	Y+43, r27	; 0x2b
+    mess.numbers[2] = 100;
+     f70:	80 e0       	ldi	r24, 0x00	; 0
+     f72:	90 e0       	ldi	r25, 0x00	; 0
+     f74:	a8 ec       	ldi	r26, 0xC8	; 200
+     f76:	b2 e4       	ldi	r27, 0x42	; 66
+     f78:	8c a7       	std	Y+44, r24	; 0x2c
+     f7a:	9d a7       	std	Y+45, r25	; 0x2d
+     f7c:	ae a7       	std	Y+46, r26	; 0x2e
+     f7e:	bf a7       	std	Y+47, r27	; 0x2f
+    mess.len_numbers = 3;
+     f80:	83 e0       	ldi	r24, 0x03	; 3
+     f82:	90 e0       	ldi	r25, 0x00	; 0
+     f84:	99 ab       	std	Y+49, r25	; 0x31
+     f86:	88 ab       	std	Y+48, r24	; 0x30
+    mess.str = "word war in new world io ex";
+     f88:	85 e2       	ldi	r24, 0x25	; 37
+     f8a:	93 e0       	ldi	r25, 0x03	; 3
+     f8c:	9b ab       	std	Y+51, r25	; 0x33
+     f8e:	8a ab       	std	Y+50, r24	; 0x32
+    mess.len_str = sizeof mess.str;
+     f90:	82 e0       	ldi	r24, 0x02	; 2
+     f92:	90 e0       	ldi	r25, 0x00	; 0
+     f94:	9d ab       	std	Y+53, r25	; 0x35
+     f96:	8c ab       	std	Y+52, r24	; 0x34
+
+    uint8_t data[64];
+    size_t len_data;
+    protocol_encode(mess, data, &len_data);
+     f98:	2e 01       	movw	r4, r28
+     f9a:	e6 e7       	ldi	r30, 0x76	; 118
+     f9c:	4e 0e       	add	r4, r30
+     f9e:	51 1c       	adc	r5, r1
+     fa0:	5f 92       	push	r5
+     fa2:	4f 92       	push	r4
+     fa4:	3e 01       	movw	r6, r28
+     fa6:	f6 e3       	ldi	r31, 0x36	; 54
+     fa8:	6f 0e       	add	r6, r31
+     faa:	71 1c       	adc	r7, r1
+     fac:	7f 92       	push	r7
+     fae:	6f 92       	push	r6
+     fb0:	8c a0       	ldd	r8, Y+36	; 0x24
+     fb2:	9d a0       	ldd	r9, Y+37	; 0x25
+     fb4:	ae a0       	ldd	r10, Y+38	; 0x26
+     fb6:	bf a0       	ldd	r11, Y+39	; 0x27
+     fb8:	c8 a4       	ldd	r12, Y+40	; 0x28
+     fba:	d9 a4       	ldd	r13, Y+41	; 0x29
+     fbc:	ea a4       	ldd	r14, Y+42	; 0x2a
+     fbe:	fb a4       	ldd	r15, Y+43	; 0x2b
+     fc0:	0c a5       	ldd	r16, Y+44	; 0x2c
+     fc2:	1d a5       	ldd	r17, Y+45	; 0x2d
+     fc4:	2e a5       	ldd	r18, Y+46	; 0x2e
+     fc6:	3f a5       	ldd	r19, Y+47	; 0x2f
+     fc8:	48 a9       	ldd	r20, Y+48	; 0x30
+     fca:	59 a9       	ldd	r21, Y+49	; 0x31
+     fcc:	6a a9       	ldd	r22, Y+50	; 0x32
+     fce:	7b a9       	ldd	r23, Y+51	; 0x33
+     fd0:	8c a9       	ldd	r24, Y+52	; 0x34
+     fd2:	9d a9       	ldd	r25, Y+53	; 0x35
+     fd4:	0e 94 5c 09 	call	0x12b8	; 0x12b8 <protocol_encode>
+
+    hdlc_send_data(&hdlc, data, len_data);
+     fd8:	f2 01       	movw	r30, r4
+     fda:	40 81       	ld	r20, Z
+     fdc:	51 81       	ldd	r21, Z+1	; 0x01
+     fde:	b3 01       	movw	r22, r6
+     fe0:	ce 01       	movw	r24, r28
+     fe2:	01 96       	adiw	r24, 0x01	; 1
+     fe4:	0e 94 76 00 	call	0xec	; 0xec <hdlc_send_data>
+    uint8_t buffer_data[72];
+    hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data);
+     fe8:	48 e4       	ldi	r20, 0x48	; 72
+     fea:	50 e0       	ldi	r21, 0x00	; 0
+     fec:	be 01       	movw	r22, r28
+     fee:	68 58       	subi	r22, 0x88	; 136
+     ff0:	7f 4f       	sbci	r23, 0xFF	; 255
+     ff2:	ce 01       	movw	r24, r28
+     ff4:	01 96       	adiw	r24, 0x01	; 1
+     ff6:	0e 94 91 00 	call	0x122	; 0x122 <hdlc_get_raw_frame>
+
+    UART_send(buffer_data, sizeof buffer_data);
+     ffa:	68 e4       	ldi	r22, 0x48	; 72
+     ffc:	70 e0       	ldi	r23, 0x00	; 0
+     ffe:	ce 01       	movw	r24, r28
+    1000:	88 58       	subi	r24, 0x88	; 136
+    1002:	9f 4f       	sbci	r25, 0xFF	; 255
+    1004:	0e 94 aa 0a 	call	0x1554	; 0x1554 <UART_send>
+    1008:	0f 90       	pop	r0
+    100a:	0f 90       	pop	r0
+    100c:	0f 90       	pop	r0
+    100e:	0f 90       	pop	r0
+    bool flag_recive = false;
+    uint8_t data_recive[64];
+    size_t len_data_recive;
+    while (!flag_recive){
+        uint8_t* buffer_recive_data[72];
+        UART_receive(buffer_recive_data, sizeof buffer_recive_data);
+    1010:	60 e9       	ldi	r22, 0x90	; 144
+    1012:	70 e0       	ldi	r23, 0x00	; 0
+    1014:	ce 01       	movw	r24, r28
+    1016:	80 5a       	subi	r24, 0xA0	; 160
+    1018:	9e 4f       	sbci	r25, 0xFE	; 254
+    101a:	0e 94 ce 0a 	call	0x159c	; 0x159c <UART_receive>
+
+        int err = hdlc_timeout_handler(&hdlc, 1);
+    101e:	61 e0       	ldi	r22, 0x01	; 1
+    1020:	70 e0       	ldi	r23, 0x00	; 0
+    1022:	ce 01       	movw	r24, r28
+    1024:	01 96       	adiw	r24, 0x01	; 1
+    1026:	0e 94 a8 01 	call	0x350	; 0x350 <hdlc_timeout_handler>
+        if (err == ERR_FRAME_TIME_OUT){
+    102a:	05 96       	adiw	r24, 0x05	; 5
+    102c:	89 f4       	brne	.+34     	; 0x1050 <main+0x204>
+            hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data);
+    102e:	48 e4       	ldi	r20, 0x48	; 72
+    1030:	50 e0       	ldi	r21, 0x00	; 0
+    1032:	be 01       	movw	r22, r28
+    1034:	68 58       	subi	r22, 0x88	; 136
+    1036:	7f 4f       	sbci	r23, 0xFF	; 255
+    1038:	ce 01       	movw	r24, r28
+    103a:	01 96       	adiw	r24, 0x01	; 1
+    103c:	0e 94 91 00 	call	0x122	; 0x122 <hdlc_get_raw_frame>
+            UART_send(buffer_data, sizeof buffer_data);
+    1040:	68 e4       	ldi	r22, 0x48	; 72
+    1042:	70 e0       	ldi	r23, 0x00	; 0
+    1044:	ce 01       	movw	r24, r28
+    1046:	88 58       	subi	r24, 0x88	; 136
+    1048:	9f 4f       	sbci	r25, 0xFF	; 255
+    104a:	0e 94 aa 0a 	call	0x1554	; 0x1554 <UART_send>
+    104e:	e0 cf       	rjmp	.-64     	; 0x1010 <main+0x1c4>
+            continue;
+        }
+
+        err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive_data, sizeof buffer_recive_data, data_recive, &len_data_recive);
+    1050:	8e 01       	movw	r16, r28
+    1052:	13 95       	inc	r17
+    1054:	9e 01       	movw	r18, r28
+    1056:	20 54       	subi	r18, 0x40	; 64
+    1058:	3f 4f       	sbci	r19, 0xFF	; 255
+    105a:	40 e9       	ldi	r20, 0x90	; 144
+    105c:	50 e0       	ldi	r21, 0x00	; 0
+    105e:	be 01       	movw	r22, r28
+    1060:	60 5a       	subi	r22, 0xA0	; 160
+    1062:	7e 4f       	sbci	r23, 0xFE	; 254
+    1064:	ce 01       	movw	r24, r28
+    1066:	01 96       	adiw	r24, 0x01	; 1
+    1068:	0e 94 07 01 	call	0x20e	; 0x20e <hdlc_decode_recived_raw_data>
+    106c:	8c 01       	movw	r16, r24
+        if (err < 0){
+    106e:	99 23       	and	r25, r25
+    1070:	9c f4       	brge	.+38     	; 0x1098 <main+0x24c>
+            if (err == ERR_INVALID_SEQ_NUMBER_FRAME){
+    1072:	06 96       	adiw	r24, 0x06	; 6
+    1074:	b1 f4       	brne	.+44     	; 0x10a2 <main+0x256>
+                uint8_t* buffer_rej[10];
+                hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej);
+    1076:	44 e1       	ldi	r20, 0x14	; 20
+    1078:	50 e0       	ldi	r21, 0x00	; 0
+    107a:	be 01       	movw	r22, r28
+    107c:	60 51       	subi	r22, 0x10	; 16
+    107e:	7e 4f       	sbci	r23, 0xFE	; 254
+    1080:	ce 01       	movw	r24, r28
+    1082:	01 96       	adiw	r24, 0x01	; 1
+    1084:	0e 94 91 00 	call	0x122	; 0x122 <hdlc_get_raw_frame>
+                UART_send(buffer_rej, sizeof buffer_rej);
+    1088:	64 e1       	ldi	r22, 0x14	; 20
+    108a:	70 e0       	ldi	r23, 0x00	; 0
+    108c:	ce 01       	movw	r24, r28
+    108e:	80 51       	subi	r24, 0x10	; 16
+    1090:	9e 4f       	sbci	r25, 0xFE	; 254
+    1092:	0e 94 aa 0a 	call	0x1554	; 0x1554 <UART_send>
+    1096:	05 c0       	rjmp	.+10     	; 0x10a2 <main+0x256>
+                return err;
+            }
+            return err;
+        }
+
+        if (hdlc.state == SEND){
+    1098:	89 81       	ldd	r24, Y+1	; 0x01
+    UART_send(buffer_data, sizeof buffer_data);
+
+    bool flag_recive = false;
+    uint8_t data_recive[64];
+    size_t len_data_recive;
+    while (!flag_recive){
+    109a:	86 30       	cpi	r24, 0x06	; 6
+    109c:	09 f0       	breq	.+2      	; 0x10a0 <main+0x254>
+    109e:	b8 cf       	rjmp	.-144    	; 0x1010 <main+0x1c4>
+    10a0:	03 c0       	rjmp	.+6      	; 0x10a8 <main+0x25c>
+            hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data);
+            UART_send(buffer_data, sizeof buffer_data);
+            continue;
+        }
+
+        err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive_data, sizeof buffer_recive_data, data_recive, &len_data_recive);
+    10a2:	80 2f       	mov	r24, r16
+    10a4:	91 2f       	mov	r25, r17
+    10a6:	52 c0       	rjmp	.+164    	; 0x114c <main+0x300>
+            flag_recive = true;
+        }
+    }
+
+    struct message resp;
+    protocol_decode(data_recive, len_data_recive, &resp);
+    10a8:	c0 50       	subi	r28, 0x00	; 0
+    10aa:	df 4f       	sbci	r29, 0xFF	; 255
+    10ac:	68 81       	ld	r22, Y
+    10ae:	79 81       	ldd	r23, Y+1	; 0x01
+    10b0:	c0 50       	subi	r28, 0x00	; 0
+    10b2:	d1 40       	sbci	r29, 0x01	; 1
+    10b4:	ae 01       	movw	r20, r28
+    10b6:	4e 5f       	subi	r20, 0xFE	; 254
+    10b8:	5e 4f       	sbci	r21, 0xFE	; 254
+    10ba:	ce 01       	movw	r24, r28
+    10bc:	80 54       	subi	r24, 0x40	; 64
+    10be:	9f 4f       	sbci	r25, 0xFF	; 255
+    10c0:	0e 94 be 08 	call	0x117c	; 0x117c <protocol_decode>
+	
+	struct DisplayData disp;
+	disp.value1 = resp.numbers[0];
+    10c4:	ce 5f       	subi	r28, 0xFE	; 254
+    10c6:	de 4f       	sbci	r29, 0xFE	; 254
+    10c8:	88 81       	ld	r24, Y
+    10ca:	99 81       	ldd	r25, Y+1	; 0x01
+    10cc:	aa 81       	ldd	r26, Y+2	; 0x02
+    10ce:	bb 81       	ldd	r27, Y+3	; 0x03
+    10d0:	c2 50       	subi	r28, 0x02	; 2
+    10d2:	d1 40       	sbci	r29, 0x01	; 1
+    10d4:	cc 5a       	subi	r28, 0xAC	; 172
+    10d6:	de 4f       	sbci	r29, 0xFE	; 254
+    10d8:	88 83       	st	Y, r24
+    10da:	99 83       	std	Y+1, r25	; 0x01
+    10dc:	aa 83       	std	Y+2, r26	; 0x02
+    10de:	bb 83       	std	Y+3, r27	; 0x03
+    10e0:	c4 55       	subi	r28, 0x54	; 84
+    10e2:	d1 40       	sbci	r29, 0x01	; 1
+	disp.value2 = resp.numbers[1];
+    10e4:	ca 5f       	subi	r28, 0xFA	; 250
+    10e6:	de 4f       	sbci	r29, 0xFE	; 254
+    10e8:	88 81       	ld	r24, Y
+    10ea:	99 81       	ldd	r25, Y+1	; 0x01
+    10ec:	aa 81       	ldd	r26, Y+2	; 0x02
+    10ee:	bb 81       	ldd	r27, Y+3	; 0x03
+    10f0:	c6 50       	subi	r28, 0x06	; 6
+    10f2:	d1 40       	sbci	r29, 0x01	; 1
+    10f4:	c8 5a       	subi	r28, 0xA8	; 168
+    10f6:	de 4f       	sbci	r29, 0xFE	; 254
+    10f8:	88 83       	st	Y, r24
+    10fa:	99 83       	std	Y+1, r25	; 0x01
+    10fc:	aa 83       	std	Y+2, r26	; 0x02
+    10fe:	bb 83       	std	Y+3, r27	; 0x03
+    1100:	c8 55       	subi	r28, 0x58	; 88
+    1102:	d1 40       	sbci	r29, 0x01	; 1
+	disp.value3 = resp.numbers[2];
+    1104:	c6 5f       	subi	r28, 0xF6	; 246
+    1106:	de 4f       	sbci	r29, 0xFE	; 254
+    1108:	88 81       	ld	r24, Y
+    110a:	99 81       	ldd	r25, Y+1	; 0x01
+    110c:	aa 81       	ldd	r26, Y+2	; 0x02
+    110e:	bb 81       	ldd	r27, Y+3	; 0x03
+    1110:	ca 50       	subi	r28, 0x0A	; 10
+    1112:	d1 40       	sbci	r29, 0x01	; 1
+    1114:	c4 5a       	subi	r28, 0xA4	; 164
+    1116:	de 4f       	sbci	r29, 0xFE	; 254
+    1118:	88 83       	st	Y, r24
+    111a:	99 83       	std	Y+1, r25	; 0x01
+    111c:	aa 83       	std	Y+2, r26	; 0x02
+    111e:	bb 83       	std	Y+3, r27	; 0x03
+    1120:	cc 55       	subi	r28, 0x5C	; 92
+    1122:	d1 40       	sbci	r29, 0x01	; 1
+	//disp.topLine = *resp.str;
+	strncpy(disp.topLine, resp.str, sizeof(disp.topLine) - 1);
+    1124:	c0 5f       	subi	r28, 0xF0	; 240
+    1126:	de 4f       	sbci	r29, 0xFE	; 254
+    1128:	68 81       	ld	r22, Y
+    112a:	79 81       	ldd	r23, Y+1	; 0x01
+    112c:	c0 51       	subi	r28, 0x10	; 16
+    112e:	d1 40       	sbci	r29, 0x01	; 1
+    1130:	4f e3       	ldi	r20, 0x3F	; 63
+    1132:	50 e0       	ldi	r21, 0x00	; 0
+    1134:	ce 01       	movw	r24, r28
+    1136:	8c 5e       	subi	r24, 0xEC	; 236
+    1138:	9e 4f       	sbci	r25, 0xFE	; 254
+    113a:	0e 94 8a 0b 	call	0x1714	; 0x1714 <strncpy>
+
+    printLcd(&disp);
+    113e:	ce 01       	movw	r24, r28
+    1140:	8c 5e       	subi	r24, 0xEC	; 236
+    1142:	9e 4f       	sbci	r25, 0xFE	; 254
+    1144:	0e 94 08 06 	call	0xc10	; 0xc10 <printLcd>
+
+    return 0;
+    1148:	80 e0       	ldi	r24, 0x00	; 0
+    114a:	90 e0       	ldi	r25, 0x00	; 0
+    114c:	cd 5f       	subi	r28, 0xFD	; 253
+    114e:	dd 4f       	sbci	r29, 0xFD	; 253
+    1150:	0f b6       	in	r0, 0x3f	; 63
+    1152:	f8 94       	cli
+    1154:	de bf       	out	0x3e, r29	; 62
+    1156:	0f be       	out	0x3f, r0	; 63
+    1158:	cd bf       	out	0x3d, r28	; 61
+    115a:	df 91       	pop	r29
+    115c:	cf 91       	pop	r28
+    115e:	1f 91       	pop	r17
+    1160:	0f 91       	pop	r16
+    1162:	ff 90       	pop	r15
+    1164:	ef 90       	pop	r14
+    1166:	df 90       	pop	r13
+    1168:	cf 90       	pop	r12
+    116a:	bf 90       	pop	r11
+    116c:	af 90       	pop	r10
+    116e:	9f 90       	pop	r9
+    1170:	8f 90       	pop	r8
+    1172:	7f 90       	pop	r7
+    1174:	6f 90       	pop	r6
+    1176:	5f 90       	pop	r5
+    1178:	4f 90       	pop	r4
+    117a:	08 95       	ret
+
+0000117c <protocol_decode>:
+#include "protocol.h"
+
+void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){
+    117c:	8f 92       	push	r8
+    117e:	9f 92       	push	r9
+    1180:	af 92       	push	r10
+    1182:	bf 92       	push	r11
+    1184:	cf 92       	push	r12
+    1186:	df 92       	push	r13
+    1188:	ef 92       	push	r14
+    118a:	ff 92       	push	r15
+    118c:	0f 93       	push	r16
+    118e:	1f 93       	push	r17
+    1190:	cf 93       	push	r28
+    1192:	df 93       	push	r29
+    1194:	cd b7       	in	r28, 0x3d	; 61
+    1196:	de b7       	in	r29, 0x3e	; 62
+    1198:	c0 54       	subi	r28, 0x40	; 64
+    119a:	d1 09       	sbc	r29, r1
+    119c:	0f b6       	in	r0, 0x3f	; 63
+    119e:	f8 94       	cli
+    11a0:	de bf       	out	0x3e, r29	; 62
+    11a2:	0f be       	out	0x3f, r0	; 63
+    11a4:	cd bf       	out	0x3d, r28	; 61
+    11a6:	4b 01       	movw	r8, r22
+    int count_number = 0;
+    for(int i = 0; i < len_encode_message; i++){
+    11a8:	67 2b       	or	r22, r23
+    11aa:	09 f4       	brne	.+2      	; 0x11ae <protocol_decode+0x32>
+    11ac:	6c c0       	rjmp	.+216    	; 0x1286 <protocol_decode+0x10a>
+    11ae:	20 e0       	ldi	r18, 0x00	; 0
+    11b0:	30 e0       	ldi	r19, 0x00	; 0
+    11b2:	60 e0       	ldi	r22, 0x00	; 0
+    11b4:	70 e0       	ldi	r23, 0x00	; 0
+    11b6:	a1 2c       	mov	r10, r1
+    11b8:	b1 2c       	mov	r11, r1
+    11ba:	6e 01       	movw	r12, r28
+    11bc:	e5 e0       	ldi	r30, 0x05	; 5
+    11be:	ce 0e       	add	r12, r30
+    11c0:	d1 1c       	adc	r13, r1
+    11c2:	fe 01       	movw	r30, r28
+    11c4:	31 96       	adiw	r30, 0x01	; 1
+    11c6:	7f 01       	movw	r14, r30
+        if (encode_message[i] == FLAG_NUMBER){
+    11c8:	fc 01       	movw	r30, r24
+    11ca:	e2 0f       	add	r30, r18
+    11cc:	f3 1f       	adc	r31, r19
+    11ce:	20 81       	ld	r18, Z
+    11d0:	21 11       	cpse	r18, r1
+    11d2:	27 c0       	rjmp	.+78     	; 0x1222 <protocol_decode+0xa6>
+    11d4:	db 01       	movw	r26, r22
+    11d6:	11 96       	adiw	r26, 0x01	; 1
+    11d8:	a8 0f       	add	r26, r24
+    11da:	b9 1f       	adc	r27, r25
+    11dc:	fe 01       	movw	r30, r28
+    11de:	31 96       	adiw	r30, 0x01	; 1
+            union convert_float sample;
+            for (int z = 0; z < sizeof sample.buf; z++){
+                i++;
+                sample.buf[z] = encode_message[i];
+    11e0:	2d 91       	ld	r18, X+
+    11e2:	21 93       	st	Z+, r18
+void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){
+    int count_number = 0;
+    for(int i = 0; i < len_encode_message; i++){
+        if (encode_message[i] == FLAG_NUMBER){
+            union convert_float sample;
+            for (int z = 0; z < sizeof sample.buf; z++){
+    11e4:	ec 15       	cp	r30, r12
+    11e6:	fd 05       	cpc	r31, r13
+    11e8:	d9 f7       	brne	.-10     	; 0x11e0 <protocol_decode+0x64>
+    11ea:	6c 5f       	subi	r22, 0xFC	; 252
+    11ec:	7f 4f       	sbci	r23, 0xFF	; 255
+                i++;
+                sample.buf[z] = encode_message[i];
+            }
+            decode_message->numbers[count_number++] = sample.fVal;
+    11ee:	f5 01       	movw	r30, r10
+    11f0:	ee 0f       	add	r30, r30
+    11f2:	ff 1f       	adc	r31, r31
+    11f4:	ee 0f       	add	r30, r30
+    11f6:	ff 1f       	adc	r31, r31
+    11f8:	e4 0f       	add	r30, r20
+    11fa:	f5 1f       	adc	r31, r21
+    11fc:	09 81       	ldd	r16, Y+1	; 0x01
+    11fe:	1a 81       	ldd	r17, Y+2	; 0x02
+    1200:	2b 81       	ldd	r18, Y+3	; 0x03
+    1202:	3c 81       	ldd	r19, Y+4	; 0x04
+    1204:	00 83       	st	Z, r16
+    1206:	11 83       	std	Z+1, r17	; 0x01
+    1208:	22 83       	std	Z+2, r18	; 0x02
+    120a:	33 83       	std	Z+3, r19	; 0x03
+            decode_message->len_numbers++;
+    120c:	fa 01       	movw	r30, r20
+    120e:	24 85       	ldd	r18, Z+12	; 0x0c
+    1210:	35 85       	ldd	r19, Z+13	; 0x0d
+    1212:	2f 5f       	subi	r18, 0xFF	; 255
+    1214:	3f 4f       	sbci	r19, 0xFF	; 255
+    1216:	35 87       	std	Z+13, r19	; 0x0d
+    1218:	24 87       	std	Z+12, r18	; 0x0c
+            union convert_float sample;
+            for (int z = 0; z < sizeof sample.buf; z++){
+                i++;
+                sample.buf[z] = encode_message[i];
+            }
+            decode_message->numbers[count_number++] = sample.fVal;
+    121a:	95 01       	movw	r18, r10
+    121c:	2f 5f       	subi	r18, 0xFF	; 255
+    121e:	3f 4f       	sbci	r19, 0xFF	; 255
+    1220:	59 01       	movw	r10, r18
+            decode_message->len_numbers++;
+        }
+
+
+        if (encode_message[i] == FLAG_WORD){
+    1222:	fc 01       	movw	r30, r24
+    1224:	e6 0f       	add	r30, r22
+    1226:	f7 1f       	adc	r31, r23
+    1228:	20 81       	ld	r18, Z
+    122a:	21 30       	cpi	r18, 0x01	; 1
+    122c:	21 f5       	brne	.+72     	; 0x1276 <protocol_decode+0xfa>
+            int count_word = 0;
+            i++;
+    122e:	9b 01       	movw	r18, r22
+    1230:	2f 5f       	subi	r18, 0xFF	; 255
+    1232:	3f 4f       	sbci	r19, 0xFF	; 255
+            union convert_char sample;
+            for (int z = 0; z < encode_message[i]; z++){
+    1234:	fc 01       	movw	r30, r24
+    1236:	e2 0f       	add	r30, r18
+    1238:	f3 1f       	adc	r31, r19
+    123a:	e0 81       	ld	r30, Z
+    123c:	ee 23       	and	r30, r30
+    123e:	99 f0       	breq	.+38     	; 0x1266 <protocol_decode+0xea>
+    1240:	6e 5f       	subi	r22, 0xFE	; 254
+    1242:	7f 4f       	sbci	r23, 0xFF	; 255
+    1244:	dc 01       	movw	r26, r24
+    1246:	a6 0f       	add	r26, r22
+    1248:	b7 1f       	adc	r27, r23
+    124a:	f7 01       	movw	r30, r14
+    124c:	b9 01       	movw	r22, r18
+                i++;
+    124e:	6f 5f       	subi	r22, 0xFF	; 255
+    1250:	7f 4f       	sbci	r23, 0xFF	; 255
+                sample.buf[z] = encode_message[i];
+    1252:	2d 91       	ld	r18, X+
+    1254:	21 93       	st	Z+, r18
+
+        if (encode_message[i] == FLAG_WORD){
+            int count_word = 0;
+            i++;
+            union convert_char sample;
+            for (int z = 0; z < encode_message[i]; z++){
+    1256:	30 e0       	ldi	r19, 0x00	; 0
+    1258:	8f 01       	movw	r16, r30
+    125a:	0e 19       	sub	r16, r14
+    125c:	1f 09       	sbc	r17, r15
+    125e:	02 17       	cp	r16, r18
+    1260:	13 07       	cpc	r17, r19
+    1262:	ac f3       	brlt	.-22     	; 0x124e <protocol_decode+0xd2>
+    1264:	01 c0       	rjmp	.+2      	; 0x1268 <protocol_decode+0xec>
+        }
+
+
+        if (encode_message[i] == FLAG_WORD){
+            int count_word = 0;
+            i++;
+    1266:	b9 01       	movw	r22, r18
+            union convert_char sample;
+            for (int z = 0; z < encode_message[i]; z++){
+                i++;
+                sample.buf[z] = encode_message[i];
+            }
+            decode_message->str = sample.cVal;
+    1268:	29 81       	ldd	r18, Y+1	; 0x01
+    126a:	3a 81       	ldd	r19, Y+2	; 0x02
+    126c:	fa 01       	movw	r30, r20
+    126e:	37 87       	std	Z+15, r19	; 0x0f
+    1270:	26 87       	std	Z+14, r18	; 0x0e
+            decode_message->len_str = count_word;
+    1272:	11 8a       	std	Z+17, r1	; 0x11
+    1274:	10 8a       	std	Z+16, r1	; 0x10
+#include "protocol.h"
+
+void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){
+    int count_number = 0;
+    for(int i = 0; i < len_encode_message; i++){
+    1276:	6f 5f       	subi	r22, 0xFF	; 255
+    1278:	7f 4f       	sbci	r23, 0xFF	; 255
+    127a:	9b 01       	movw	r18, r22
+    127c:	68 15       	cp	r22, r8
+    127e:	79 05       	cpc	r23, r9
+    1280:	08 f4       	brcc	.+2      	; 0x1284 <protocol_decode+0x108>
+    1282:	a2 cf       	rjmp	.-188    	; 0x11c8 <protocol_decode+0x4c>
+    1284:	02 c0       	rjmp	.+4      	; 0x128a <protocol_decode+0x10e>
+#include "protocol.h"
+
+void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){
+    int count_number = 0;
+    1286:	a1 2c       	mov	r10, r1
+    1288:	b1 2c       	mov	r11, r1
+            }
+            decode_message->str = sample.cVal;
+            decode_message->len_str = count_word;
+        }
+    }
+    decode_message->len_numbers = count_number;
+    128a:	fa 01       	movw	r30, r20
+    128c:	b5 86       	std	Z+13, r11	; 0x0d
+    128e:	a4 86       	std	Z+12, r10	; 0x0c
+}
+    1290:	c0 5c       	subi	r28, 0xC0	; 192
+    1292:	df 4f       	sbci	r29, 0xFF	; 255
+    1294:	0f b6       	in	r0, 0x3f	; 63
+    1296:	f8 94       	cli
+    1298:	de bf       	out	0x3e, r29	; 62
+    129a:	0f be       	out	0x3f, r0	; 63
+    129c:	cd bf       	out	0x3d, r28	; 61
+    129e:	df 91       	pop	r29
+    12a0:	cf 91       	pop	r28
+    12a2:	1f 91       	pop	r17
+    12a4:	0f 91       	pop	r16
+    12a6:	ff 90       	pop	r15
+    12a8:	ef 90       	pop	r14
+    12aa:	df 90       	pop	r13
+    12ac:	cf 90       	pop	r12
+    12ae:	bf 90       	pop	r11
+    12b0:	af 90       	pop	r10
+    12b2:	9f 90       	pop	r9
+    12b4:	8f 90       	pop	r8
+    12b6:	08 95       	ret
+
+000012b8 <protocol_encode>:
+
+void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){
+    12b8:	4f 92       	push	r4
+    12ba:	5f 92       	push	r5
+    12bc:	6f 92       	push	r6
+    12be:	7f 92       	push	r7
+    12c0:	8f 92       	push	r8
+    12c2:	9f 92       	push	r9
+    12c4:	af 92       	push	r10
+    12c6:	bf 92       	push	r11
+    12c8:	cf 92       	push	r12
+    12ca:	df 92       	push	r13
+    12cc:	ef 92       	push	r14
+    12ce:	ff 92       	push	r15
+    12d0:	0f 93       	push	r16
+    12d2:	1f 93       	push	r17
+    12d4:	cf 93       	push	r28
+    12d6:	df 93       	push	r29
+    12d8:	cd b7       	in	r28, 0x3d	; 61
+    12da:	de b7       	in	r29, 0x3e	; 62
+    12dc:	c2 55       	subi	r28, 0x52	; 82
+    12de:	d1 09       	sbc	r29, r1
+    12e0:	0f b6       	in	r0, 0x3f	; 63
+    12e2:	f8 94       	cli
+    12e4:	de bf       	out	0x3e, r29	; 62
+    12e6:	0f be       	out	0x3f, r0	; 63
+    12e8:	cd bf       	out	0x3d, r28	; 61
+    12ea:	22 96       	adiw	r28, 0x02	; 2
+    12ec:	8f ae       	std	Y+63, r8	; 0x3f
+    12ee:	22 97       	sbiw	r28, 0x02	; 2
+    12f0:	23 96       	adiw	r28, 0x03	; 3
+    12f2:	9f ae       	std	Y+63, r9	; 0x3f
+    12f4:	23 97       	sbiw	r28, 0x03	; 3
+    12f6:	24 96       	adiw	r28, 0x04	; 4
+    12f8:	af ae       	std	Y+63, r10	; 0x3f
+    12fa:	24 97       	sbiw	r28, 0x04	; 4
+    12fc:	25 96       	adiw	r28, 0x05	; 5
+    12fe:	bf ae       	std	Y+63, r11	; 0x3f
+    1300:	25 97       	sbiw	r28, 0x05	; 5
+    1302:	26 96       	adiw	r28, 0x06	; 6
+    1304:	cf ae       	std	Y+63, r12	; 0x3f
+    1306:	26 97       	sbiw	r28, 0x06	; 6
+    1308:	27 96       	adiw	r28, 0x07	; 7
+    130a:	df ae       	std	Y+63, r13	; 0x3f
+    130c:	27 97       	sbiw	r28, 0x07	; 7
+    130e:	28 96       	adiw	r28, 0x08	; 8
+    1310:	ef ae       	std	Y+63, r14	; 0x3f
+    1312:	28 97       	sbiw	r28, 0x08	; 8
+    1314:	29 96       	adiw	r28, 0x09	; 9
+    1316:	ff ae       	std	Y+63, r15	; 0x3f
+    1318:	29 97       	sbiw	r28, 0x09	; 9
+    131a:	2a 96       	adiw	r28, 0x0a	; 10
+    131c:	0f af       	std	Y+63, r16	; 0x3f
+    131e:	2a 97       	sbiw	r28, 0x0a	; 10
+    1320:	2b 96       	adiw	r28, 0x0b	; 11
+    1322:	1f af       	std	Y+63, r17	; 0x3f
+    1324:	2b 97       	sbiw	r28, 0x0b	; 11
+    1326:	2c 96       	adiw	r28, 0x0c	; 12
+    1328:	2f af       	std	Y+63, r18	; 0x3f
+    132a:	2c 97       	sbiw	r28, 0x0c	; 12
+    132c:	2d 96       	adiw	r28, 0x0d	; 13
+    132e:	3f af       	std	Y+63, r19	; 0x3f
+    1330:	2d 97       	sbiw	r28, 0x0d	; 13
+    1332:	2e 96       	adiw	r28, 0x0e	; 14
+    1334:	4f af       	std	Y+63, r20	; 0x3f
+    1336:	2e 97       	sbiw	r28, 0x0e	; 14
+    1338:	2f 96       	adiw	r28, 0x0f	; 15
+    133a:	5f af       	std	Y+63, r21	; 0x3f
+    133c:	2f 97       	sbiw	r28, 0x0f	; 15
+    133e:	60 96       	adiw	r28, 0x10	; 16
+    1340:	6f af       	std	Y+63, r22	; 0x3f
+    1342:	60 97       	sbiw	r28, 0x10	; 16
+    1344:	61 96       	adiw	r28, 0x11	; 17
+    1346:	7f af       	std	Y+63, r23	; 0x3f
+    1348:	61 97       	sbiw	r28, 0x11	; 17
+    134a:	62 96       	adiw	r28, 0x12	; 18
+    134c:	8f af       	std	Y+63, r24	; 0x3f
+    134e:	62 97       	sbiw	r28, 0x12	; 18
+    1350:	63 96       	adiw	r28, 0x13	; 19
+    1352:	9f af       	std	Y+63, r25	; 0x3f
+    1354:	63 97       	sbiw	r28, 0x13	; 19
+    1356:	a7 96       	adiw	r28, 0x27	; 39
+    1358:	0e ad       	ldd	r16, Y+62	; 0x3e
+    135a:	1f ad       	ldd	r17, Y+63	; 0x3f
+    135c:	a7 97       	sbiw	r28, 0x27	; 39
+    135e:	2f 96       	adiw	r28, 0x0f	; 15
+    1360:	ce ac       	ldd	r12, Y+62	; 0x3e
+    1362:	df ac       	ldd	r13, Y+63	; 0x3f
+    1364:	2f 97       	sbiw	r28, 0x0f	; 15
+    1366:	63 96       	adiw	r28, 0x13	; 19
+    1368:	6e ad       	ldd	r22, Y+62	; 0x3e
+    136a:	7f ad       	ldd	r23, Y+63	; 0x3f
+    136c:	63 97       	sbiw	r28, 0x13	; 19
+    size_t count = 0;
+    if (message.len_numbers > 0){
+    136e:	c1 14       	cp	r12, r1
+    1370:	d1 04       	cpc	r13, r1
+    1372:	09 f4       	brne	.+2      	; 0x1376 <protocol_encode+0xbe>
+    1374:	66 c0       	rjmp	.+204    	; 0x1442 <protocol_encode+0x18a>
+    1376:	78 01       	movw	r14, r16
+    1378:	ce 01       	movw	r24, r28
+    137a:	8f 5b       	subi	r24, 0xBF	; 191
+    137c:	9f 4f       	sbci	r25, 0xFF	; 255
+    137e:	56 01       	movw	r10, r12
+    1380:	aa 0c       	add	r10, r10
+    1382:	bb 1c       	adc	r11, r11
+    1384:	aa 0c       	add	r10, r10
+    1386:	bb 1c       	adc	r11, r11
+    1388:	a8 0e       	add	r10, r24
+    138a:	b9 1e       	adc	r11, r25
+    138c:	ae 01       	movw	r20, r28
+    138e:	4b 5f       	subi	r20, 0xFB	; 251
+    1390:	5f 4f       	sbci	r21, 0xFF	; 255
+        for (int i = 0; i < message.len_numbers; i++){
+            encode_message[count++] = FLAG_NUMBER;
+    1392:	f7 01       	movw	r30, r14
+    1394:	11 92       	st	Z+, r1
+            union convert_float sample;
+            sample.fVal = message.numbers[i];
+    1396:	dc 01       	movw	r26, r24
+    1398:	4d 90       	ld	r4, X+
+    139a:	5d 90       	ld	r5, X+
+    139c:	6d 90       	ld	r6, X+
+    139e:	7d 90       	ld	r7, X+
+    13a0:	cd 01       	movw	r24, r26
+    13a2:	49 82       	std	Y+1, r4	; 0x01
+    13a4:	5a 82       	std	Y+2, r5	; 0x02
+    13a6:	6b 82       	std	Y+3, r6	; 0x03
+    13a8:	7c 82       	std	Y+4, r7	; 0x04
+    13aa:	de 01       	movw	r26, r28
+    13ac:	11 96       	adiw	r26, 0x01	; 1
+            for (int z = 0; z < sizeof sample.buf; z++){
+                encode_message[count++] = sample.buf[z];
+    13ae:	3d 91       	ld	r19, X+
+    13b0:	31 93       	st	Z+, r19
+    if (message.len_numbers > 0){
+        for (int i = 0; i < message.len_numbers; i++){
+            encode_message[count++] = FLAG_NUMBER;
+            union convert_float sample;
+            sample.fVal = message.numbers[i];
+            for (int z = 0; z < sizeof sample.buf; z++){
+    13b2:	a4 17       	cp	r26, r20
+    13b4:	b5 07       	cpc	r27, r21
+    13b6:	d9 f7       	brne	.-10     	; 0x13ae <protocol_encode+0xf6>
+    13b8:	b5 e0       	ldi	r27, 0x05	; 5
+    13ba:	eb 0e       	add	r14, r27
+    13bc:	f1 1c       	adc	r15, r1
+}
+
+void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){
+    size_t count = 0;
+    if (message.len_numbers > 0){
+        for (int i = 0; i < message.len_numbers; i++){
+    13be:	8a 15       	cp	r24, r10
+    13c0:	9b 05       	cpc	r25, r11
+    13c2:	39 f7       	brne	.-50     	; 0x1392 <protocol_encode+0xda>
+    13c4:	96 01       	movw	r18, r12
+    13c6:	22 0f       	add	r18, r18
+    13c8:	33 1f       	adc	r19, r19
+    13ca:	22 0f       	add	r18, r18
+    13cc:	33 1f       	adc	r19, r19
+    13ce:	2c 0d       	add	r18, r12
+    13d0:	3d 1d       	adc	r19, r13
+                encode_message[count++] = sample.buf[z];
+            }
+        }
+    }
+
+    if (message.len_str > 0){
+    13d2:	61 15       	cp	r22, r1
+    13d4:	71 05       	cpc	r23, r1
+    13d6:	09 f1       	breq	.+66     	; 0x141a <protocol_encode+0x162>
+        encode_message[count++] = FLAG_WORD;
+    13d8:	d8 01       	movw	r26, r16
+    13da:	a2 0f       	add	r26, r18
+    13dc:	b3 1f       	adc	r27, r19
+    13de:	81 e0       	ldi	r24, 0x01	; 1
+    13e0:	8c 93       	st	X, r24
+        encode_message[count++] = message.len_str;
+    13e2:	d9 01       	movw	r26, r18
+    13e4:	11 96       	adiw	r26, 0x01	; 1
+    13e6:	a0 0f       	add	r26, r16
+    13e8:	b1 1f       	adc	r27, r17
+    13ea:	2e 5f       	subi	r18, 0xFE	; 254
+    13ec:	3f 4f       	sbci	r19, 0xFF	; 255
+    13ee:	6c 93       	st	X, r22
+        union convert_char sample;
+        sample.cVal = message.str;
+    13f0:	61 96       	adiw	r28, 0x11	; 17
+    13f2:	8e ad       	ldd	r24, Y+62	; 0x3e
+    13f4:	9f ad       	ldd	r25, Y+63	; 0x3f
+    13f6:	61 97       	sbiw	r28, 0x11	; 17
+    13f8:	9a 83       	std	Y+2, r25	; 0x02
+    13fa:	89 83       	std	Y+1, r24	; 0x01
+    13fc:	de 01       	movw	r26, r28
+    13fe:	11 96       	adiw	r26, 0x01	; 1
+    1400:	f8 01       	movw	r30, r16
+    1402:	e2 0f       	add	r30, r18
+    1404:	f3 1f       	adc	r31, r19
+        }
+    }
+
+    if (message.len_str > 0){
+        encode_message[count++] = FLAG_WORD;
+        encode_message[count++] = message.len_str;
+    1406:	80 e0       	ldi	r24, 0x00	; 0
+    1408:	90 e0       	ldi	r25, 0x00	; 0
+        union convert_char sample;
+        sample.cVal = message.str;
+        for (int i = 0; i < message.len_str; i++){
+            encode_message[count++] = sample.buf[i];
+    140a:	2f 5f       	subi	r18, 0xFF	; 255
+    140c:	3f 4f       	sbci	r19, 0xFF	; 255
+    140e:	4d 91       	ld	r20, X+
+    1410:	41 93       	st	Z+, r20
+    if (message.len_str > 0){
+        encode_message[count++] = FLAG_WORD;
+        encode_message[count++] = message.len_str;
+        union convert_char sample;
+        sample.cVal = message.str;
+        for (int i = 0; i < message.len_str; i++){
+    1412:	01 96       	adiw	r24, 0x01	; 1
+    1414:	86 17       	cp	r24, r22
+    1416:	97 07       	cpc	r25, r23
+    1418:	c0 f3       	brcs	.-16     	; 0x140a <protocol_encode+0x152>
+            encode_message[count++] = sample.buf[i];
+        }
+    }
+
+    *len_encode_message = count;
+    141a:	a9 96       	adiw	r28, 0x29	; 41
+    141c:	ee ad       	ldd	r30, Y+62	; 0x3e
+    141e:	ff ad       	ldd	r31, Y+63	; 0x3f
+    1420:	a9 97       	sbiw	r28, 0x29	; 41
+    1422:	31 83       	std	Z+1, r19	; 0x01
+    1424:	20 83       	st	Z, r18
+    1426:	13 c0       	rjmp	.+38     	; 0x144e <protocol_encode+0x196>
+            }
+        }
+    }
+
+    if (message.len_str > 0){
+        encode_message[count++] = FLAG_WORD;
+    1428:	81 e0       	ldi	r24, 0x01	; 1
+    142a:	f8 01       	movw	r30, r16
+    142c:	80 83       	st	Z, r24
+        encode_message[count++] = message.len_str;
+    142e:	61 83       	std	Z+1, r22	; 0x01
+        union convert_char sample;
+        sample.cVal = message.str;
+    1430:	61 96       	adiw	r28, 0x11	; 17
+    1432:	8e ad       	ldd	r24, Y+62	; 0x3e
+    1434:	9f ad       	ldd	r25, Y+63	; 0x3f
+    1436:	61 97       	sbiw	r28, 0x11	; 17
+    1438:	9a 83       	std	Y+2, r25	; 0x02
+    143a:	89 83       	std	Y+1, r24	; 0x01
+        }
+    }
+
+    if (message.len_str > 0){
+        encode_message[count++] = FLAG_WORD;
+        encode_message[count++] = message.len_str;
+    143c:	22 e0       	ldi	r18, 0x02	; 2
+    143e:	30 e0       	ldi	r19, 0x00	; 0
+    1440:	dd cf       	rjmp	.-70     	; 0x13fc <protocol_encode+0x144>
+                encode_message[count++] = sample.buf[z];
+            }
+        }
+    }
+
+    if (message.len_str > 0){
+    1442:	61 15       	cp	r22, r1
+    1444:	71 05       	cpc	r23, r1
+    1446:	81 f7       	brne	.-32     	; 0x1428 <protocol_encode+0x170>
+    }
+    decode_message->len_numbers = count_number;
+}
+
+void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){
+    size_t count = 0;
+    1448:	20 e0       	ldi	r18, 0x00	; 0
+    144a:	30 e0       	ldi	r19, 0x00	; 0
+    144c:	e6 cf       	rjmp	.-52     	; 0x141a <protocol_encode+0x162>
+            encode_message[count++] = sample.buf[i];
+        }
+    }
+
+    *len_encode_message = count;
+    144e:	ce 5a       	subi	r28, 0xAE	; 174
+    1450:	df 4f       	sbci	r29, 0xFF	; 255
+    1452:	0f b6       	in	r0, 0x3f	; 63
+    1454:	f8 94       	cli
+    1456:	de bf       	out	0x3e, r29	; 62
+    1458:	0f be       	out	0x3f, r0	; 63
+    145a:	cd bf       	out	0x3d, r28	; 61
+    145c:	df 91       	pop	r29
+    145e:	cf 91       	pop	r28
+    1460:	1f 91       	pop	r17
+    1462:	0f 91       	pop	r16
+    1464:	ff 90       	pop	r15
+    1466:	ef 90       	pop	r14
+    1468:	df 90       	pop	r13
+    146a:	cf 90       	pop	r12
+    146c:	bf 90       	pop	r11
+    146e:	af 90       	pop	r10
+    1470:	9f 90       	pop	r9
+    1472:	8f 90       	pop	r8
+    1474:	7f 90       	pop	r7
+    1476:	6f 90       	pop	r6
+    1478:	5f 90       	pop	r5
+    147a:	4f 90       	pop	r4
+    147c:	08 95       	ret
+
+0000147e <buffer_empty>:
+void initialize_buffer(struct circular_buffer* cb) {
+	cb->buf_head = 0;
+	cb->buf_tail = 0;
+}
+// Проверка, пустой ли буфер
+int buffer_empty(const struct circular_buffer* cb) {
+    147e:	fc 01       	movw	r30, r24
+	return cb->buf_head == cb->buf_tail;
+    1480:	81 e0       	ldi	r24, 0x01	; 1
+    1482:	90 e0       	ldi	r25, 0x00	; 0
+    1484:	30 a1       	ldd	r19, Z+32	; 0x20
+    1486:	21 a1       	ldd	r18, Z+33	; 0x21
+    1488:	32 17       	cp	r19, r18
+    148a:	11 f0       	breq	.+4      	; 0x1490 <buffer_empty+0x12>
+    148c:	80 e0       	ldi	r24, 0x00	; 0
+    148e:	90 e0       	ldi	r25, 0x00	; 0
+}
+    1490:	08 95       	ret
+
+00001492 <buffer_full>:
+// Проверка, заполнен ли буфер
+int buffer_full(const struct circular_buffer* cb) {
+	return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head; //проверяем следующее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывод true
+    1492:	fc 01       	movw	r30, r24
+    1494:	21 a1       	ldd	r18, Z+33	; 0x21
+    1496:	30 e0       	ldi	r19, 0x00	; 0
+    1498:	2f 5f       	subi	r18, 0xFF	; 255
+    149a:	3f 4f       	sbci	r19, 0xFF	; 255
+    149c:	2f 71       	andi	r18, 0x1F	; 31
+    149e:	30 78       	andi	r19, 0x80	; 128
+    14a0:	33 23       	and	r19, r19
+    14a2:	34 f4       	brge	.+12     	; 0x14b0 <buffer_full+0x1e>
+    14a4:	21 50       	subi	r18, 0x01	; 1
+    14a6:	31 09       	sbc	r19, r1
+    14a8:	20 6e       	ori	r18, 0xE0	; 224
+    14aa:	3f 6f       	ori	r19, 0xFF	; 255
+    14ac:	2f 5f       	subi	r18, 0xFF	; 255
+    14ae:	3f 4f       	sbci	r19, 0xFF	; 255
+    14b0:	fc 01       	movw	r30, r24
+    14b2:	40 a1       	ldd	r20, Z+32	; 0x20
+    14b4:	50 e0       	ldi	r21, 0x00	; 0
+    14b6:	81 e0       	ldi	r24, 0x01	; 1
+    14b8:	90 e0       	ldi	r25, 0x00	; 0
+    14ba:	24 17       	cp	r18, r20
+    14bc:	35 07       	cpc	r19, r21
+    14be:	11 f0       	breq	.+4      	; 0x14c4 <buffer_full+0x32>
+    14c0:	80 e0       	ldi	r24, 0x00	; 0
+    14c2:	90 e0       	ldi	r25, 0x00	; 0
+}
+    14c4:	08 95       	ret
+
+000014c6 <write_buffer>:
+// Запись в буфер
+void write_buffer(struct circular_buffer* cb, int value) {
+    14c6:	1f 93       	push	r17
+    14c8:	cf 93       	push	r28
+    14ca:	df 93       	push	r29
+    14cc:	ec 01       	movw	r28, r24
+    14ce:	16 2f       	mov	r17, r22
+	if (buffer_full(cb)) { // проверяем, заполнен ли буфер
+    14d0:	0e 94 49 0a 	call	0x1492	; 0x1492 <buffer_full>
+    14d4:	89 2b       	or	r24, r25
+    14d6:	81 f4       	brne	.+32     	; 0x14f8 <write_buffer+0x32>
+		return;
+	}
+	cb->buffer[cb->buf_tail] = value;// записываем значение в элемент массива в хвост
+    14d8:	89 a1       	ldd	r24, Y+33	; 0x21
+    14da:	90 e0       	ldi	r25, 0x00	; 0
+    14dc:	fe 01       	movw	r30, r28
+    14de:	e8 0f       	add	r30, r24
+    14e0:	f9 1f       	adc	r31, r25
+    14e2:	10 83       	st	Z, r17
+	cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере
+    14e4:	01 96       	adiw	r24, 0x01	; 1
+    14e6:	8f 71       	andi	r24, 0x1F	; 31
+    14e8:	90 78       	andi	r25, 0x80	; 128
+    14ea:	99 23       	and	r25, r25
+    14ec:	24 f4       	brge	.+8      	; 0x14f6 <write_buffer+0x30>
+    14ee:	01 97       	sbiw	r24, 0x01	; 1
+    14f0:	80 6e       	ori	r24, 0xE0	; 224
+    14f2:	9f 6f       	ori	r25, 0xFF	; 255
+    14f4:	01 96       	adiw	r24, 0x01	; 1
+    14f6:	89 a3       	std	Y+33, r24	; 0x21
+}
+    14f8:	df 91       	pop	r29
+    14fa:	cf 91       	pop	r28
+    14fc:	1f 91       	pop	r17
+    14fe:	08 95       	ret
+
+00001500 <read_buffer>:
+// Чтение элемента
+int read_buffer(struct circular_buffer* cb) {
+    1500:	fc 01       	movw	r30, r24
+	cb->buf_head = 0;
+	cb->buf_tail = 0;
+}
+// Проверка, пустой ли буфер
+int buffer_empty(const struct circular_buffer* cb) {
+	return cb->buf_head == cb->buf_tail;
+    1502:	20 a1       	ldd	r18, Z+32	; 0x20
+	cb->buffer[cb->buf_tail] = value;// записываем значение в элемент массива в хвост
+	cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере
+}
+// Чтение элемента
+int read_buffer(struct circular_buffer* cb) {
+	if (buffer_empty(cb)) { // проверка на пустоту
+    1504:	81 a1       	ldd	r24, Z+33	; 0x21
+    1506:	28 17       	cp	r18, r24
+    1508:	b1 f0       	breq	.+44     	; 0x1536 <read_buffer+0x36>
+		return -1;// -1  как индикатор в случае ошибки
+	}
+	int value = cb->buffer[cb->buf_head]; // чтение по индексу головы
+    150a:	30 e0       	ldi	r19, 0x00	; 0
+    150c:	df 01       	movw	r26, r30
+    150e:	a2 0f       	add	r26, r18
+    1510:	b3 1f       	adc	r27, r19
+    1512:	4c 91       	ld	r20, X
+    1514:	50 e0       	ldi	r21, 0x00	; 0
+	cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; // увеличиваем индекс на 1
+    1516:	2f 5f       	subi	r18, 0xFF	; 255
+    1518:	3f 4f       	sbci	r19, 0xFF	; 255
+    151a:	2f 71       	andi	r18, 0x1F	; 31
+    151c:	30 78       	andi	r19, 0x80	; 128
+    151e:	33 23       	and	r19, r19
+    1520:	34 f4       	brge	.+12     	; 0x152e <read_buffer+0x2e>
+    1522:	21 50       	subi	r18, 0x01	; 1
+    1524:	31 09       	sbc	r19, r1
+    1526:	20 6e       	ori	r18, 0xE0	; 224
+    1528:	3f 6f       	ori	r19, 0xFF	; 255
+    152a:	2f 5f       	subi	r18, 0xFF	; 255
+    152c:	3f 4f       	sbci	r19, 0xFF	; 255
+    152e:	20 a3       	std	Z+32, r18	; 0x20
+	return value;
+    1530:	84 2f       	mov	r24, r20
+    1532:	95 2f       	mov	r25, r21
+    1534:	08 95       	ret
+	cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере
+}
+// Чтение элемента
+int read_buffer(struct circular_buffer* cb) {
+	if (buffer_empty(cb)) { // проверка на пустоту
+		return -1;// -1  как индикатор в случае ошибки
+    1536:	8f ef       	ldi	r24, 0xFF	; 255
+    1538:	9f ef       	ldi	r25, 0xFF	; 255
+	}
+	int value = cb->buffer[cb->buf_head]; // чтение по индексу головы
+	cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; // увеличиваем индекс на 1
+	return value;
+}
+    153a:	08 95       	ret
+
+0000153c <UART_init>:
+
+struct circular_buffer uartRxBuffer;
+struct circular_buffer uartTxBuffer;
+
+void UART_init(void) {
+	UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0) | (1<<TXCIE0) | (1 << UDRIE0); // прерывание по приему и передаче
+    153c:	88 ef       	ldi	r24, 0xF8	; 248
+    153e:	80 93 c1 00 	sts	0x00C1, r24	; 0x8000c1 <__DATA_REGION_ORIGIN__+0x61>
+	UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
+    1542:	86 e0       	ldi	r24, 0x06	; 6
+    1544:	80 93 c2 00 	sts	0x00C2, r24	; 0x8000c2 <__DATA_REGION_ORIGIN__+0x62>
+	UBRR0H = 0;
+    1548:	10 92 c5 00 	sts	0x00C5, r1	; 0x8000c5 <__DATA_REGION_ORIGIN__+0x65>
+	UBRR0L = 103;
+    154c:	87 e6       	ldi	r24, 0x67	; 103
+    154e:	80 93 c4 00 	sts	0x00C4, r24	; 0x8000c4 <__DATA_REGION_ORIGIN__+0x64>
+    1552:	08 95       	ret
+
+00001554 <UART_send>:
+}
+
+void UART_send(uint8_t* data, size_t length) {
+    1554:	0f 93       	push	r16
+    1556:	1f 93       	push	r17
+    1558:	cf 93       	push	r28
+    155a:	df 93       	push	r29
+	for (size_t i = 0; i < length; i++) {
+    155c:	61 15       	cp	r22, r1
+    155e:	71 05       	cpc	r23, r1
+    1560:	99 f0       	breq	.+38     	; 0x1588 <UART_send+0x34>
+    1562:	8c 01       	movw	r16, r24
+    1564:	ec 01       	movw	r28, r24
+    1566:	06 0f       	add	r16, r22
+    1568:	17 1f       	adc	r17, r23
+		if (!buffer_full(&uartTxBuffer)) {
+    156a:	8e e6       	ldi	r24, 0x6E	; 110
+    156c:	93 e0       	ldi	r25, 0x03	; 3
+    156e:	0e 94 49 0a 	call	0x1492	; 0x1492 <buffer_full>
+    1572:	89 2b       	or	r24, r25
+    1574:	49 f4       	brne	.+18     	; 0x1588 <UART_send+0x34>
+			write_buffer(&uartTxBuffer, data[i]);
+    1576:	69 91       	ld	r22, Y+
+    1578:	70 e0       	ldi	r23, 0x00	; 0
+    157a:	8e e6       	ldi	r24, 0x6E	; 110
+    157c:	93 e0       	ldi	r25, 0x03	; 3
+    157e:	0e 94 63 0a 	call	0x14c6	; 0x14c6 <write_buffer>
+	UBRR0H = 0;
+	UBRR0L = 103;
+}
+
+void UART_send(uint8_t* data, size_t length) {
+	for (size_t i = 0; i < length; i++) {
+    1582:	c0 17       	cp	r28, r16
+    1584:	d1 07       	cpc	r29, r17
+    1586:	89 f7       	brne	.-30     	; 0x156a <UART_send+0x16>
+			write_buffer(&uartTxBuffer, data[i]);
+			} else {
+			break; // если буфер передачи заполнен, то отправка прерывается
+		}
+	}
+	UCSR0B |= (1 << TXCIE0); // включаем прерывание по завершении передачи
+    1588:	e1 ec       	ldi	r30, 0xC1	; 193
+    158a:	f0 e0       	ldi	r31, 0x00	; 0
+    158c:	80 81       	ld	r24, Z
+    158e:	80 64       	ori	r24, 0x40	; 64
+    1590:	80 83       	st	Z, r24
+}
+    1592:	df 91       	pop	r29
+    1594:	cf 91       	pop	r28
+    1596:	1f 91       	pop	r17
+    1598:	0f 91       	pop	r16
+    159a:	08 95       	ret
+
+0000159c <UART_receive>:
+
+// Получение данных из буфера
+int UART_receive(uint8_t* data, size_t length) {
+    159c:	8f 92       	push	r8
+    159e:	9f 92       	push	r9
+    15a0:	af 92       	push	r10
+    15a2:	bf 92       	push	r11
+    15a4:	cf 92       	push	r12
+    15a6:	df 92       	push	r13
+    15a8:	ef 92       	push	r14
+    15aa:	ff 92       	push	r15
+    15ac:	0f 93       	push	r16
+    15ae:	1f 93       	push	r17
+    15b0:	cf 93       	push	r28
+    15b2:	df 93       	push	r29
+    15b4:	8b 01       	movw	r16, r22
+    15b6:	ec 01       	movw	r28, r24
+    char overflow = 0;  // Флаг переполнения, который устанавливается, если превышен размер массива 
+    uint32_t byteCount = 0;  // Счетчик байтов, принятых из буфера приема
+    15b8:	c1 2c       	mov	r12, r1
+    15ba:	d1 2c       	mov	r13, r1
+    15bc:	76 01       	movw	r14, r12
+    // Пока буфер приема не пуст и не превышен лимит длины массива,
+    // функция продолжает читать байты из буфера и сохранять их в массив data.
+    while (!buffer_empty(&uartRxBuffer) && byteCount < length) {
+    15be:	4b 01       	movw	r8, r22
+    15c0:	a1 2c       	mov	r10, r1
+    15c2:	b1 2c       	mov	r11, r1
+    15c4:	0a c0       	rjmp	.+20     	; 0x15da <UART_receive+0x3e>
+        int reader = read_buffer(&uartRxBuffer);  // Прием и запись символа в переменную
+    15c6:	8c e4       	ldi	r24, 0x4C	; 76
+    15c8:	93 e0       	ldi	r25, 0x03	; 3
+    15ca:	0e 94 80 0a 	call	0x1500	; 0x1500 <read_buffer>
+        data[byteCount] = reader;  // Запись в массив с индексом byteCount
+    15ce:	89 93       	st	Y+, r24
+        byteCount++;
+    15d0:	8f ef       	ldi	r24, 0xFF	; 255
+    15d2:	c8 1a       	sub	r12, r24
+    15d4:	d8 0a       	sbc	r13, r24
+    15d6:	e8 0a       	sbc	r14, r24
+    15d8:	f8 0a       	sbc	r15, r24
+int UART_receive(uint8_t* data, size_t length) {
+    char overflow = 0;  // Флаг переполнения, который устанавливается, если превышен размер массива 
+    uint32_t byteCount = 0;  // Счетчик байтов, принятых из буфера приема
+    // Пока буфер приема не пуст и не превышен лимит длины массива,
+    // функция продолжает читать байты из буфера и сохранять их в массив data.
+    while (!buffer_empty(&uartRxBuffer) && byteCount < length) {
+    15da:	8c e4       	ldi	r24, 0x4C	; 76
+    15dc:	93 e0       	ldi	r25, 0x03	; 3
+    15de:	0e 94 3f 0a 	call	0x147e	; 0x147e <buffer_empty>
+    15e2:	89 2b       	or	r24, r25
+    15e4:	29 f4       	brne	.+10     	; 0x15f0 <UART_receive+0x54>
+    15e6:	c8 14       	cp	r12, r8
+    15e8:	d9 04       	cpc	r13, r9
+    15ea:	ea 04       	cpc	r14, r10
+    15ec:	fb 04       	cpc	r15, r11
+    15ee:	58 f3       	brcs	.-42     	; 0x15c6 <UART_receive+0x2a>
+    }
+    // Проверка переполнения
+    if (byteCount > length) {
+        overflow = 1;
+    }
+    return overflow ? -1 : byteCount;  // Возвращает количество успешно принятых байт или -1 в случае переполнения
+    15f0:	20 e0       	ldi	r18, 0x00	; 0
+    15f2:	30 e0       	ldi	r19, 0x00	; 0
+    15f4:	0c 15       	cp	r16, r12
+    15f6:	1d 05       	cpc	r17, r13
+    15f8:	2e 05       	cpc	r18, r14
+    15fa:	3f 05       	cpc	r19, r15
+    15fc:	10 f0       	brcs	.+4      	; 0x1602 <UART_receive+0x66>
+    15fe:	c6 01       	movw	r24, r12
+    1600:	02 c0       	rjmp	.+4      	; 0x1606 <UART_receive+0x6a>
+    1602:	8f ef       	ldi	r24, 0xFF	; 255
+    1604:	9f ef       	ldi	r25, 0xFF	; 255
+}
+    1606:	df 91       	pop	r29
+    1608:	cf 91       	pop	r28
+    160a:	1f 91       	pop	r17
+    160c:	0f 91       	pop	r16
+    160e:	ff 90       	pop	r15
+    1610:	ef 90       	pop	r14
+    1612:	df 90       	pop	r13
+    1614:	cf 90       	pop	r12
+    1616:	bf 90       	pop	r11
+    1618:	af 90       	pop	r10
+    161a:	9f 90       	pop	r9
+    161c:	8f 90       	pop	r8
+    161e:	08 95       	ret
+
+00001620 <__vector_18>:
+
+// прерывание по завершению приема
+ISR(USART_RX_vect) {
+    1620:	1f 92       	push	r1
+    1622:	0f 92       	push	r0
+    1624:	0f b6       	in	r0, 0x3f	; 63
+    1626:	0f 92       	push	r0
+    1628:	11 24       	eor	r1, r1
+    162a:	2f 93       	push	r18
+    162c:	3f 93       	push	r19
+    162e:	4f 93       	push	r20
+    1630:	5f 93       	push	r21
+    1632:	6f 93       	push	r22
+    1634:	7f 93       	push	r23
+    1636:	8f 93       	push	r24
+    1638:	9f 93       	push	r25
+    163a:	af 93       	push	r26
+    163c:	bf 93       	push	r27
+    163e:	cf 93       	push	r28
+    1640:	ef 93       	push	r30
+    1642:	ff 93       	push	r31
+	uint8_t data = UDR0; // читаем из регистра UDR0
+    1644:	c0 91 c6 00 	lds	r28, 0x00C6	; 0x8000c6 <__DATA_REGION_ORIGIN__+0x66>
+	if (!buffer_full(&uartRxBuffer)) {
+    1648:	8c e4       	ldi	r24, 0x4C	; 76
+    164a:	93 e0       	ldi	r25, 0x03	; 3
+    164c:	0e 94 49 0a 	call	0x1492	; 0x1492 <buffer_full>
+    1650:	89 2b       	or	r24, r25
+    1652:	31 f4       	brne	.+12     	; 0x1660 <__vector_18+0x40>
+		write_buffer(&uartRxBuffer, data);// записываем символ в буфер приема
+    1654:	6c 2f       	mov	r22, r28
+    1656:	70 e0       	ldi	r23, 0x00	; 0
+    1658:	8c e4       	ldi	r24, 0x4C	; 76
+    165a:	93 e0       	ldi	r25, 0x03	; 3
+    165c:	0e 94 63 0a 	call	0x14c6	; 0x14c6 <write_buffer>
+	}
+}
+    1660:	ff 91       	pop	r31
+    1662:	ef 91       	pop	r30
+    1664:	cf 91       	pop	r28
+    1666:	bf 91       	pop	r27
+    1668:	af 91       	pop	r26
+    166a:	9f 91       	pop	r25
+    166c:	8f 91       	pop	r24
+    166e:	7f 91       	pop	r23
+    1670:	6f 91       	pop	r22
+    1672:	5f 91       	pop	r21
+    1674:	4f 91       	pop	r20
+    1676:	3f 91       	pop	r19
+    1678:	2f 91       	pop	r18
+    167a:	0f 90       	pop	r0
+    167c:	0f be       	out	0x3f, r0	; 63
+    167e:	0f 90       	pop	r0
+    1680:	1f 90       	pop	r1
+    1682:	18 95       	reti
+
+00001684 <__vector_20>:
+
+ISR(USART_TX_vect) {
+    1684:	1f 92       	push	r1
+    1686:	0f 92       	push	r0
+    1688:	0f b6       	in	r0, 0x3f	; 63
+    168a:	0f 92       	push	r0
+    168c:	11 24       	eor	r1, r1
+    168e:	2f 93       	push	r18
+    1690:	3f 93       	push	r19
+    1692:	4f 93       	push	r20
+    1694:	5f 93       	push	r21
+    1696:	6f 93       	push	r22
+    1698:	7f 93       	push	r23
+    169a:	8f 93       	push	r24
+    169c:	9f 93       	push	r25
+    169e:	af 93       	push	r26
+    16a0:	bf 93       	push	r27
+    16a2:	ef 93       	push	r30
+    16a4:	ff 93       	push	r31
+	if (!buffer_empty(&uartTxBuffer)) {
+    16a6:	8e e6       	ldi	r24, 0x6E	; 110
+    16a8:	93 e0       	ldi	r25, 0x03	; 3
+    16aa:	0e 94 3f 0a 	call	0x147e	; 0x147e <buffer_empty>
+    16ae:	89 2b       	or	r24, r25
+    16b0:	39 f4       	brne	.+14     	; 0x16c0 <__vector_20+0x3c>
+		UDR0 = read_buffer(&uartTxBuffer);
+    16b2:	8e e6       	ldi	r24, 0x6E	; 110
+    16b4:	93 e0       	ldi	r25, 0x03	; 3
+    16b6:	0e 94 80 0a 	call	0x1500	; 0x1500 <read_buffer>
+    16ba:	80 93 c6 00 	sts	0x00C6, r24	; 0x8000c6 <__DATA_REGION_ORIGIN__+0x66>
+    16be:	05 c0       	rjmp	.+10     	; 0x16ca <__vector_20+0x46>
+	} else {
+		UCSR0B &= ~(1 << TXCIE0); // отключаем прерывание, когда все данные отправлены
+    16c0:	e1 ec       	ldi	r30, 0xC1	; 193
+    16c2:	f0 e0       	ldi	r31, 0x00	; 0
+    16c4:	80 81       	ld	r24, Z
+    16c6:	8f 7b       	andi	r24, 0xBF	; 191
+    16c8:	80 83       	st	Z, r24
+	}
+    16ca:	ff 91       	pop	r31
+    16cc:	ef 91       	pop	r30
+    16ce:	bf 91       	pop	r27
+    16d0:	af 91       	pop	r26
+    16d2:	9f 91       	pop	r25
+    16d4:	8f 91       	pop	r24
+    16d6:	7f 91       	pop	r23
+    16d8:	6f 91       	pop	r22
+    16da:	5f 91       	pop	r21
+    16dc:	4f 91       	pop	r20
+    16de:	3f 91       	pop	r19
+    16e0:	2f 91       	pop	r18
+    16e2:	0f 90       	pop	r0
+    16e4:	0f be       	out	0x3f, r0	; 63
+    16e6:	0f 90       	pop	r0
+    16e8:	1f 90       	pop	r1
+    16ea:	18 95       	reti
+
+000016ec <__udivmodhi4>:
+    16ec:	aa 1b       	sub	r26, r26
+    16ee:	bb 1b       	sub	r27, r27
+    16f0:	51 e1       	ldi	r21, 0x11	; 17
+    16f2:	07 c0       	rjmp	.+14     	; 0x1702 <__udivmodhi4_ep>
+
+000016f4 <__udivmodhi4_loop>:
+    16f4:	aa 1f       	adc	r26, r26
+    16f6:	bb 1f       	adc	r27, r27
+    16f8:	a6 17       	cp	r26, r22
+    16fa:	b7 07       	cpc	r27, r23
+    16fc:	10 f0       	brcs	.+4      	; 0x1702 <__udivmodhi4_ep>
+    16fe:	a6 1b       	sub	r26, r22
+    1700:	b7 0b       	sbc	r27, r23
+
+00001702 <__udivmodhi4_ep>:
+    1702:	88 1f       	adc	r24, r24
+    1704:	99 1f       	adc	r25, r25
+    1706:	5a 95       	dec	r21
+    1708:	a9 f7       	brne	.-22     	; 0x16f4 <__udivmodhi4_loop>
+    170a:	80 95       	com	r24
+    170c:	90 95       	com	r25
+    170e:	bc 01       	movw	r22, r24
+    1710:	cd 01       	movw	r24, r26
+    1712:	08 95       	ret
+
+00001714 <strncpy>:
+    1714:	fb 01       	movw	r30, r22
+    1716:	dc 01       	movw	r26, r24
+    1718:	41 50       	subi	r20, 0x01	; 1
+    171a:	50 40       	sbci	r21, 0x00	; 0
+    171c:	48 f0       	brcs	.+18     	; 0x1730 <strncpy+0x1c>
+    171e:	01 90       	ld	r0, Z+
+    1720:	0d 92       	st	X+, r0
+    1722:	00 20       	and	r0, r0
+    1724:	c9 f7       	brne	.-14     	; 0x1718 <strncpy+0x4>
+    1726:	01 c0       	rjmp	.+2      	; 0x172a <strncpy+0x16>
+    1728:	1d 92       	st	X+, r1
+    172a:	41 50       	subi	r20, 0x01	; 1
+    172c:	50 40       	sbci	r21, 0x00	; 0
+    172e:	e0 f7       	brcc	.-8      	; 0x1728 <strncpy+0x14>
+    1730:	08 95       	ret
+
+00001732 <printf>:
+    1732:	a0 e0       	ldi	r26, 0x00	; 0
+    1734:	b0 e0       	ldi	r27, 0x00	; 0
+    1736:	ef e9       	ldi	r30, 0x9F	; 159
+    1738:	fb e0       	ldi	r31, 0x0B	; 11
+    173a:	0c 94 80 0e 	jmp	0x1d00	; 0x1d00 <__prologue_saves__+0x20>
+    173e:	ae 01       	movw	r20, r28
+    1740:	4b 5f       	subi	r20, 0xFB	; 251
+    1742:	5f 4f       	sbci	r21, 0xFF	; 255
+    1744:	fa 01       	movw	r30, r20
+    1746:	61 91       	ld	r22, Z+
+    1748:	71 91       	ld	r23, Z+
+    174a:	af 01       	movw	r20, r30
+    174c:	80 91 92 03 	lds	r24, 0x0392	; 0x800392 <__iob+0x2>
+    1750:	90 91 93 03 	lds	r25, 0x0393	; 0x800393 <__iob+0x3>
+    1754:	0e 94 df 0b 	call	0x17be	; 0x17be <vfprintf>
+    1758:	e2 e0       	ldi	r30, 0x02	; 2
+    175a:	0c 94 9c 0e 	jmp	0x1d38	; 0x1d38 <__epilogue_restores__+0x20>
+
+0000175e <snprintf>:
+    175e:	ae e0       	ldi	r26, 0x0E	; 14
+    1760:	b0 e0       	ldi	r27, 0x00	; 0
+    1762:	e5 eb       	ldi	r30, 0xB5	; 181
+    1764:	fb e0       	ldi	r31, 0x0B	; 11
+    1766:	0c 94 7e 0e 	jmp	0x1cfc	; 0x1cfc <__prologue_saves__+0x1c>
+    176a:	0d 89       	ldd	r16, Y+21	; 0x15
+    176c:	1e 89       	ldd	r17, Y+22	; 0x16
+    176e:	8f 89       	ldd	r24, Y+23	; 0x17
+    1770:	98 8d       	ldd	r25, Y+24	; 0x18
+    1772:	26 e0       	ldi	r18, 0x06	; 6
+    1774:	2c 83       	std	Y+4, r18	; 0x04
+    1776:	1a 83       	std	Y+2, r17	; 0x02
+    1778:	09 83       	std	Y+1, r16	; 0x01
+    177a:	97 ff       	sbrs	r25, 7
+    177c:	02 c0       	rjmp	.+4      	; 0x1782 <snprintf+0x24>
+    177e:	80 e0       	ldi	r24, 0x00	; 0
+    1780:	90 e8       	ldi	r25, 0x80	; 128
+    1782:	01 97       	sbiw	r24, 0x01	; 1
+    1784:	9e 83       	std	Y+6, r25	; 0x06
+    1786:	8d 83       	std	Y+5, r24	; 0x05
+    1788:	ae 01       	movw	r20, r28
+    178a:	45 5e       	subi	r20, 0xE5	; 229
+    178c:	5f 4f       	sbci	r21, 0xFF	; 255
+    178e:	69 8d       	ldd	r22, Y+25	; 0x19
+    1790:	7a 8d       	ldd	r23, Y+26	; 0x1a
+    1792:	ce 01       	movw	r24, r28
+    1794:	01 96       	adiw	r24, 0x01	; 1
+    1796:	0e 94 df 0b 	call	0x17be	; 0x17be <vfprintf>
+    179a:	4d 81       	ldd	r20, Y+5	; 0x05
+    179c:	5e 81       	ldd	r21, Y+6	; 0x06
+    179e:	57 fd       	sbrc	r21, 7
+    17a0:	0a c0       	rjmp	.+20     	; 0x17b6 <snprintf+0x58>
+    17a2:	2f 81       	ldd	r18, Y+7	; 0x07
+    17a4:	38 85       	ldd	r19, Y+8	; 0x08
+    17a6:	42 17       	cp	r20, r18
+    17a8:	53 07       	cpc	r21, r19
+    17aa:	0c f4       	brge	.+2      	; 0x17ae <snprintf+0x50>
+    17ac:	9a 01       	movw	r18, r20
+    17ae:	f8 01       	movw	r30, r16
+    17b0:	e2 0f       	add	r30, r18
+    17b2:	f3 1f       	adc	r31, r19
+    17b4:	10 82       	st	Z, r1
+    17b6:	2e 96       	adiw	r28, 0x0e	; 14
+    17b8:	e4 e0       	ldi	r30, 0x04	; 4
+    17ba:	0c 94 9a 0e 	jmp	0x1d34	; 0x1d34 <__epilogue_restores__+0x1c>
+
+000017be <vfprintf>:
+    17be:	ab e0       	ldi	r26, 0x0B	; 11
+    17c0:	b0 e0       	ldi	r27, 0x00	; 0
+    17c2:	e5 ee       	ldi	r30, 0xE5	; 229
+    17c4:	fb e0       	ldi	r31, 0x0B	; 11
+    17c6:	0c 94 70 0e 	jmp	0x1ce0	; 0x1ce0 <__prologue_saves__>
+    17ca:	6c 01       	movw	r12, r24
+    17cc:	7b 01       	movw	r14, r22
+    17ce:	8a 01       	movw	r16, r20
+    17d0:	fc 01       	movw	r30, r24
+    17d2:	17 82       	std	Z+7, r1	; 0x07
+    17d4:	16 82       	std	Z+6, r1	; 0x06
+    17d6:	83 81       	ldd	r24, Z+3	; 0x03
+    17d8:	81 ff       	sbrs	r24, 1
+    17da:	cc c1       	rjmp	.+920    	; 0x1b74 <vfprintf+0x3b6>
+    17dc:	ce 01       	movw	r24, r28
+    17de:	01 96       	adiw	r24, 0x01	; 1
+    17e0:	3c 01       	movw	r6, r24
+    17e2:	f6 01       	movw	r30, r12
+    17e4:	93 81       	ldd	r25, Z+3	; 0x03
+    17e6:	f7 01       	movw	r30, r14
+    17e8:	93 fd       	sbrc	r25, 3
+    17ea:	85 91       	lpm	r24, Z+
+    17ec:	93 ff       	sbrs	r25, 3
+    17ee:	81 91       	ld	r24, Z+
+    17f0:	7f 01       	movw	r14, r30
+    17f2:	88 23       	and	r24, r24
+    17f4:	09 f4       	brne	.+2      	; 0x17f8 <vfprintf+0x3a>
+    17f6:	ba c1       	rjmp	.+884    	; 0x1b6c <vfprintf+0x3ae>
+    17f8:	85 32       	cpi	r24, 0x25	; 37
+    17fa:	39 f4       	brne	.+14     	; 0x180a <vfprintf+0x4c>
+    17fc:	93 fd       	sbrc	r25, 3
+    17fe:	85 91       	lpm	r24, Z+
+    1800:	93 ff       	sbrs	r25, 3
+    1802:	81 91       	ld	r24, Z+
+    1804:	7f 01       	movw	r14, r30
+    1806:	85 32       	cpi	r24, 0x25	; 37
+    1808:	29 f4       	brne	.+10     	; 0x1814 <vfprintf+0x56>
+    180a:	b6 01       	movw	r22, r12
+    180c:	90 e0       	ldi	r25, 0x00	; 0
+    180e:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1812:	e7 cf       	rjmp	.-50     	; 0x17e2 <vfprintf+0x24>
+    1814:	91 2c       	mov	r9, r1
+    1816:	21 2c       	mov	r2, r1
+    1818:	31 2c       	mov	r3, r1
+    181a:	ff e1       	ldi	r31, 0x1F	; 31
+    181c:	f3 15       	cp	r31, r3
+    181e:	d8 f0       	brcs	.+54     	; 0x1856 <vfprintf+0x98>
+    1820:	8b 32       	cpi	r24, 0x2B	; 43
+    1822:	79 f0       	breq	.+30     	; 0x1842 <vfprintf+0x84>
+    1824:	38 f4       	brcc	.+14     	; 0x1834 <vfprintf+0x76>
+    1826:	80 32       	cpi	r24, 0x20	; 32
+    1828:	79 f0       	breq	.+30     	; 0x1848 <vfprintf+0x8a>
+    182a:	83 32       	cpi	r24, 0x23	; 35
+    182c:	a1 f4       	brne	.+40     	; 0x1856 <vfprintf+0x98>
+    182e:	23 2d       	mov	r18, r3
+    1830:	20 61       	ori	r18, 0x10	; 16
+    1832:	1d c0       	rjmp	.+58     	; 0x186e <vfprintf+0xb0>
+    1834:	8d 32       	cpi	r24, 0x2D	; 45
+    1836:	61 f0       	breq	.+24     	; 0x1850 <vfprintf+0x92>
+    1838:	80 33       	cpi	r24, 0x30	; 48
+    183a:	69 f4       	brne	.+26     	; 0x1856 <vfprintf+0x98>
+    183c:	23 2d       	mov	r18, r3
+    183e:	21 60       	ori	r18, 0x01	; 1
+    1840:	16 c0       	rjmp	.+44     	; 0x186e <vfprintf+0xb0>
+    1842:	83 2d       	mov	r24, r3
+    1844:	82 60       	ori	r24, 0x02	; 2
+    1846:	38 2e       	mov	r3, r24
+    1848:	e3 2d       	mov	r30, r3
+    184a:	e4 60       	ori	r30, 0x04	; 4
+    184c:	3e 2e       	mov	r3, r30
+    184e:	2a c0       	rjmp	.+84     	; 0x18a4 <vfprintf+0xe6>
+    1850:	f3 2d       	mov	r31, r3
+    1852:	f8 60       	ori	r31, 0x08	; 8
+    1854:	1d c0       	rjmp	.+58     	; 0x1890 <vfprintf+0xd2>
+    1856:	37 fc       	sbrc	r3, 7
+    1858:	2d c0       	rjmp	.+90     	; 0x18b4 <vfprintf+0xf6>
+    185a:	20 ed       	ldi	r18, 0xD0	; 208
+    185c:	28 0f       	add	r18, r24
+    185e:	2a 30       	cpi	r18, 0x0A	; 10
+    1860:	40 f0       	brcs	.+16     	; 0x1872 <vfprintf+0xb4>
+    1862:	8e 32       	cpi	r24, 0x2E	; 46
+    1864:	b9 f4       	brne	.+46     	; 0x1894 <vfprintf+0xd6>
+    1866:	36 fc       	sbrc	r3, 6
+    1868:	81 c1       	rjmp	.+770    	; 0x1b6c <vfprintf+0x3ae>
+    186a:	23 2d       	mov	r18, r3
+    186c:	20 64       	ori	r18, 0x40	; 64
+    186e:	32 2e       	mov	r3, r18
+    1870:	19 c0       	rjmp	.+50     	; 0x18a4 <vfprintf+0xe6>
+    1872:	36 fe       	sbrs	r3, 6
+    1874:	06 c0       	rjmp	.+12     	; 0x1882 <vfprintf+0xc4>
+    1876:	8a e0       	ldi	r24, 0x0A	; 10
+    1878:	98 9e       	mul	r9, r24
+    187a:	20 0d       	add	r18, r0
+    187c:	11 24       	eor	r1, r1
+    187e:	92 2e       	mov	r9, r18
+    1880:	11 c0       	rjmp	.+34     	; 0x18a4 <vfprintf+0xe6>
+    1882:	ea e0       	ldi	r30, 0x0A	; 10
+    1884:	2e 9e       	mul	r2, r30
+    1886:	20 0d       	add	r18, r0
+    1888:	11 24       	eor	r1, r1
+    188a:	22 2e       	mov	r2, r18
+    188c:	f3 2d       	mov	r31, r3
+    188e:	f0 62       	ori	r31, 0x20	; 32
+    1890:	3f 2e       	mov	r3, r31
+    1892:	08 c0       	rjmp	.+16     	; 0x18a4 <vfprintf+0xe6>
+    1894:	8c 36       	cpi	r24, 0x6C	; 108
+    1896:	21 f4       	brne	.+8      	; 0x18a0 <vfprintf+0xe2>
+    1898:	83 2d       	mov	r24, r3
+    189a:	80 68       	ori	r24, 0x80	; 128
+    189c:	38 2e       	mov	r3, r24
+    189e:	02 c0       	rjmp	.+4      	; 0x18a4 <vfprintf+0xe6>
+    18a0:	88 36       	cpi	r24, 0x68	; 104
+    18a2:	41 f4       	brne	.+16     	; 0x18b4 <vfprintf+0xf6>
+    18a4:	f7 01       	movw	r30, r14
+    18a6:	93 fd       	sbrc	r25, 3
+    18a8:	85 91       	lpm	r24, Z+
+    18aa:	93 ff       	sbrs	r25, 3
+    18ac:	81 91       	ld	r24, Z+
+    18ae:	7f 01       	movw	r14, r30
+    18b0:	81 11       	cpse	r24, r1
+    18b2:	b3 cf       	rjmp	.-154    	; 0x181a <vfprintf+0x5c>
+    18b4:	98 2f       	mov	r25, r24
+    18b6:	9f 7d       	andi	r25, 0xDF	; 223
+    18b8:	95 54       	subi	r25, 0x45	; 69
+    18ba:	93 30       	cpi	r25, 0x03	; 3
+    18bc:	28 f4       	brcc	.+10     	; 0x18c8 <vfprintf+0x10a>
+    18be:	0c 5f       	subi	r16, 0xFC	; 252
+    18c0:	1f 4f       	sbci	r17, 0xFF	; 255
+    18c2:	9f e3       	ldi	r25, 0x3F	; 63
+    18c4:	99 83       	std	Y+1, r25	; 0x01
+    18c6:	0d c0       	rjmp	.+26     	; 0x18e2 <vfprintf+0x124>
+    18c8:	83 36       	cpi	r24, 0x63	; 99
+    18ca:	31 f0       	breq	.+12     	; 0x18d8 <vfprintf+0x11a>
+    18cc:	83 37       	cpi	r24, 0x73	; 115
+    18ce:	71 f0       	breq	.+28     	; 0x18ec <vfprintf+0x12e>
+    18d0:	83 35       	cpi	r24, 0x53	; 83
+    18d2:	09 f0       	breq	.+2      	; 0x18d6 <vfprintf+0x118>
+    18d4:	59 c0       	rjmp	.+178    	; 0x1988 <vfprintf+0x1ca>
+    18d6:	21 c0       	rjmp	.+66     	; 0x191a <vfprintf+0x15c>
+    18d8:	f8 01       	movw	r30, r16
+    18da:	80 81       	ld	r24, Z
+    18dc:	89 83       	std	Y+1, r24	; 0x01
+    18de:	0e 5f       	subi	r16, 0xFE	; 254
+    18e0:	1f 4f       	sbci	r17, 0xFF	; 255
+    18e2:	88 24       	eor	r8, r8
+    18e4:	83 94       	inc	r8
+    18e6:	91 2c       	mov	r9, r1
+    18e8:	53 01       	movw	r10, r6
+    18ea:	13 c0       	rjmp	.+38     	; 0x1912 <vfprintf+0x154>
+    18ec:	28 01       	movw	r4, r16
+    18ee:	f2 e0       	ldi	r31, 0x02	; 2
+    18f0:	4f 0e       	add	r4, r31
+    18f2:	51 1c       	adc	r5, r1
+    18f4:	f8 01       	movw	r30, r16
+    18f6:	a0 80       	ld	r10, Z
+    18f8:	b1 80       	ldd	r11, Z+1	; 0x01
+    18fa:	36 fe       	sbrs	r3, 6
+    18fc:	03 c0       	rjmp	.+6      	; 0x1904 <vfprintf+0x146>
+    18fe:	69 2d       	mov	r22, r9
+    1900:	70 e0       	ldi	r23, 0x00	; 0
+    1902:	02 c0       	rjmp	.+4      	; 0x1908 <vfprintf+0x14a>
+    1904:	6f ef       	ldi	r22, 0xFF	; 255
+    1906:	7f ef       	ldi	r23, 0xFF	; 255
+    1908:	c5 01       	movw	r24, r10
+    190a:	0e 94 cb 0d 	call	0x1b96	; 0x1b96 <strnlen>
+    190e:	4c 01       	movw	r8, r24
+    1910:	82 01       	movw	r16, r4
+    1912:	f3 2d       	mov	r31, r3
+    1914:	ff 77       	andi	r31, 0x7F	; 127
+    1916:	3f 2e       	mov	r3, r31
+    1918:	16 c0       	rjmp	.+44     	; 0x1946 <vfprintf+0x188>
+    191a:	28 01       	movw	r4, r16
+    191c:	22 e0       	ldi	r18, 0x02	; 2
+    191e:	42 0e       	add	r4, r18
+    1920:	51 1c       	adc	r5, r1
+    1922:	f8 01       	movw	r30, r16
+    1924:	a0 80       	ld	r10, Z
+    1926:	b1 80       	ldd	r11, Z+1	; 0x01
+    1928:	36 fe       	sbrs	r3, 6
+    192a:	03 c0       	rjmp	.+6      	; 0x1932 <vfprintf+0x174>
+    192c:	69 2d       	mov	r22, r9
+    192e:	70 e0       	ldi	r23, 0x00	; 0
+    1930:	02 c0       	rjmp	.+4      	; 0x1936 <vfprintf+0x178>
+    1932:	6f ef       	ldi	r22, 0xFF	; 255
+    1934:	7f ef       	ldi	r23, 0xFF	; 255
+    1936:	c5 01       	movw	r24, r10
+    1938:	0e 94 c0 0d 	call	0x1b80	; 0x1b80 <strnlen_P>
+    193c:	4c 01       	movw	r8, r24
+    193e:	f3 2d       	mov	r31, r3
+    1940:	f0 68       	ori	r31, 0x80	; 128
+    1942:	3f 2e       	mov	r3, r31
+    1944:	82 01       	movw	r16, r4
+    1946:	33 fc       	sbrc	r3, 3
+    1948:	1b c0       	rjmp	.+54     	; 0x1980 <vfprintf+0x1c2>
+    194a:	82 2d       	mov	r24, r2
+    194c:	90 e0       	ldi	r25, 0x00	; 0
+    194e:	88 16       	cp	r8, r24
+    1950:	99 06       	cpc	r9, r25
+    1952:	b0 f4       	brcc	.+44     	; 0x1980 <vfprintf+0x1c2>
+    1954:	b6 01       	movw	r22, r12
+    1956:	80 e2       	ldi	r24, 0x20	; 32
+    1958:	90 e0       	ldi	r25, 0x00	; 0
+    195a:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    195e:	2a 94       	dec	r2
+    1960:	f4 cf       	rjmp	.-24     	; 0x194a <vfprintf+0x18c>
+    1962:	f5 01       	movw	r30, r10
+    1964:	37 fc       	sbrc	r3, 7
+    1966:	85 91       	lpm	r24, Z+
+    1968:	37 fe       	sbrs	r3, 7
+    196a:	81 91       	ld	r24, Z+
+    196c:	5f 01       	movw	r10, r30
+    196e:	b6 01       	movw	r22, r12
+    1970:	90 e0       	ldi	r25, 0x00	; 0
+    1972:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1976:	21 10       	cpse	r2, r1
+    1978:	2a 94       	dec	r2
+    197a:	21 e0       	ldi	r18, 0x01	; 1
+    197c:	82 1a       	sub	r8, r18
+    197e:	91 08       	sbc	r9, r1
+    1980:	81 14       	cp	r8, r1
+    1982:	91 04       	cpc	r9, r1
+    1984:	71 f7       	brne	.-36     	; 0x1962 <vfprintf+0x1a4>
+    1986:	e8 c0       	rjmp	.+464    	; 0x1b58 <vfprintf+0x39a>
+    1988:	84 36       	cpi	r24, 0x64	; 100
+    198a:	11 f0       	breq	.+4      	; 0x1990 <vfprintf+0x1d2>
+    198c:	89 36       	cpi	r24, 0x69	; 105
+    198e:	41 f5       	brne	.+80     	; 0x19e0 <vfprintf+0x222>
+    1990:	f8 01       	movw	r30, r16
+    1992:	37 fe       	sbrs	r3, 7
+    1994:	07 c0       	rjmp	.+14     	; 0x19a4 <vfprintf+0x1e6>
+    1996:	60 81       	ld	r22, Z
+    1998:	71 81       	ldd	r23, Z+1	; 0x01
+    199a:	82 81       	ldd	r24, Z+2	; 0x02
+    199c:	93 81       	ldd	r25, Z+3	; 0x03
+    199e:	0c 5f       	subi	r16, 0xFC	; 252
+    19a0:	1f 4f       	sbci	r17, 0xFF	; 255
+    19a2:	08 c0       	rjmp	.+16     	; 0x19b4 <vfprintf+0x1f6>
+    19a4:	60 81       	ld	r22, Z
+    19a6:	71 81       	ldd	r23, Z+1	; 0x01
+    19a8:	07 2e       	mov	r0, r23
+    19aa:	00 0c       	add	r0, r0
+    19ac:	88 0b       	sbc	r24, r24
+    19ae:	99 0b       	sbc	r25, r25
+    19b0:	0e 5f       	subi	r16, 0xFE	; 254
+    19b2:	1f 4f       	sbci	r17, 0xFF	; 255
+    19b4:	f3 2d       	mov	r31, r3
+    19b6:	ff 76       	andi	r31, 0x6F	; 111
+    19b8:	3f 2e       	mov	r3, r31
+    19ba:	97 ff       	sbrs	r25, 7
+    19bc:	09 c0       	rjmp	.+18     	; 0x19d0 <vfprintf+0x212>
+    19be:	90 95       	com	r25
+    19c0:	80 95       	com	r24
+    19c2:	70 95       	com	r23
+    19c4:	61 95       	neg	r22
+    19c6:	7f 4f       	sbci	r23, 0xFF	; 255
+    19c8:	8f 4f       	sbci	r24, 0xFF	; 255
+    19ca:	9f 4f       	sbci	r25, 0xFF	; 255
+    19cc:	f0 68       	ori	r31, 0x80	; 128
+    19ce:	3f 2e       	mov	r3, r31
+    19d0:	2a e0       	ldi	r18, 0x0A	; 10
+    19d2:	30 e0       	ldi	r19, 0x00	; 0
+    19d4:	a3 01       	movw	r20, r6
+    19d6:	0e 94 12 0e 	call	0x1c24	; 0x1c24 <__ultoa_invert>
+    19da:	88 2e       	mov	r8, r24
+    19dc:	86 18       	sub	r8, r6
+    19de:	45 c0       	rjmp	.+138    	; 0x1a6a <vfprintf+0x2ac>
+    19e0:	85 37       	cpi	r24, 0x75	; 117
+    19e2:	31 f4       	brne	.+12     	; 0x19f0 <vfprintf+0x232>
+    19e4:	23 2d       	mov	r18, r3
+    19e6:	2f 7e       	andi	r18, 0xEF	; 239
+    19e8:	b2 2e       	mov	r11, r18
+    19ea:	2a e0       	ldi	r18, 0x0A	; 10
+    19ec:	30 e0       	ldi	r19, 0x00	; 0
+    19ee:	25 c0       	rjmp	.+74     	; 0x1a3a <vfprintf+0x27c>
+    19f0:	93 2d       	mov	r25, r3
+    19f2:	99 7f       	andi	r25, 0xF9	; 249
+    19f4:	b9 2e       	mov	r11, r25
+    19f6:	8f 36       	cpi	r24, 0x6F	; 111
+    19f8:	c1 f0       	breq	.+48     	; 0x1a2a <vfprintf+0x26c>
+    19fa:	18 f4       	brcc	.+6      	; 0x1a02 <vfprintf+0x244>
+    19fc:	88 35       	cpi	r24, 0x58	; 88
+    19fe:	79 f0       	breq	.+30     	; 0x1a1e <vfprintf+0x260>
+    1a00:	b5 c0       	rjmp	.+362    	; 0x1b6c <vfprintf+0x3ae>
+    1a02:	80 37       	cpi	r24, 0x70	; 112
+    1a04:	19 f0       	breq	.+6      	; 0x1a0c <vfprintf+0x24e>
+    1a06:	88 37       	cpi	r24, 0x78	; 120
+    1a08:	21 f0       	breq	.+8      	; 0x1a12 <vfprintf+0x254>
+    1a0a:	b0 c0       	rjmp	.+352    	; 0x1b6c <vfprintf+0x3ae>
+    1a0c:	e9 2f       	mov	r30, r25
+    1a0e:	e0 61       	ori	r30, 0x10	; 16
+    1a10:	be 2e       	mov	r11, r30
+    1a12:	b4 fe       	sbrs	r11, 4
+    1a14:	0d c0       	rjmp	.+26     	; 0x1a30 <vfprintf+0x272>
+    1a16:	fb 2d       	mov	r31, r11
+    1a18:	f4 60       	ori	r31, 0x04	; 4
+    1a1a:	bf 2e       	mov	r11, r31
+    1a1c:	09 c0       	rjmp	.+18     	; 0x1a30 <vfprintf+0x272>
+    1a1e:	34 fe       	sbrs	r3, 4
+    1a20:	0a c0       	rjmp	.+20     	; 0x1a36 <vfprintf+0x278>
+    1a22:	29 2f       	mov	r18, r25
+    1a24:	26 60       	ori	r18, 0x06	; 6
+    1a26:	b2 2e       	mov	r11, r18
+    1a28:	06 c0       	rjmp	.+12     	; 0x1a36 <vfprintf+0x278>
+    1a2a:	28 e0       	ldi	r18, 0x08	; 8
+    1a2c:	30 e0       	ldi	r19, 0x00	; 0
+    1a2e:	05 c0       	rjmp	.+10     	; 0x1a3a <vfprintf+0x27c>
+    1a30:	20 e1       	ldi	r18, 0x10	; 16
+    1a32:	30 e0       	ldi	r19, 0x00	; 0
+    1a34:	02 c0       	rjmp	.+4      	; 0x1a3a <vfprintf+0x27c>
+    1a36:	20 e1       	ldi	r18, 0x10	; 16
+    1a38:	32 e0       	ldi	r19, 0x02	; 2
+    1a3a:	f8 01       	movw	r30, r16
+    1a3c:	b7 fe       	sbrs	r11, 7
+    1a3e:	07 c0       	rjmp	.+14     	; 0x1a4e <vfprintf+0x290>
+    1a40:	60 81       	ld	r22, Z
+    1a42:	71 81       	ldd	r23, Z+1	; 0x01
+    1a44:	82 81       	ldd	r24, Z+2	; 0x02
+    1a46:	93 81       	ldd	r25, Z+3	; 0x03
+    1a48:	0c 5f       	subi	r16, 0xFC	; 252
+    1a4a:	1f 4f       	sbci	r17, 0xFF	; 255
+    1a4c:	06 c0       	rjmp	.+12     	; 0x1a5a <vfprintf+0x29c>
+    1a4e:	60 81       	ld	r22, Z
+    1a50:	71 81       	ldd	r23, Z+1	; 0x01
+    1a52:	80 e0       	ldi	r24, 0x00	; 0
+    1a54:	90 e0       	ldi	r25, 0x00	; 0
+    1a56:	0e 5f       	subi	r16, 0xFE	; 254
+    1a58:	1f 4f       	sbci	r17, 0xFF	; 255
+    1a5a:	a3 01       	movw	r20, r6
+    1a5c:	0e 94 12 0e 	call	0x1c24	; 0x1c24 <__ultoa_invert>
+    1a60:	88 2e       	mov	r8, r24
+    1a62:	86 18       	sub	r8, r6
+    1a64:	fb 2d       	mov	r31, r11
+    1a66:	ff 77       	andi	r31, 0x7F	; 127
+    1a68:	3f 2e       	mov	r3, r31
+    1a6a:	36 fe       	sbrs	r3, 6
+    1a6c:	0d c0       	rjmp	.+26     	; 0x1a88 <vfprintf+0x2ca>
+    1a6e:	23 2d       	mov	r18, r3
+    1a70:	2e 7f       	andi	r18, 0xFE	; 254
+    1a72:	a2 2e       	mov	r10, r18
+    1a74:	89 14       	cp	r8, r9
+    1a76:	58 f4       	brcc	.+22     	; 0x1a8e <vfprintf+0x2d0>
+    1a78:	34 fe       	sbrs	r3, 4
+    1a7a:	0b c0       	rjmp	.+22     	; 0x1a92 <vfprintf+0x2d4>
+    1a7c:	32 fc       	sbrc	r3, 2
+    1a7e:	09 c0       	rjmp	.+18     	; 0x1a92 <vfprintf+0x2d4>
+    1a80:	83 2d       	mov	r24, r3
+    1a82:	8e 7e       	andi	r24, 0xEE	; 238
+    1a84:	a8 2e       	mov	r10, r24
+    1a86:	05 c0       	rjmp	.+10     	; 0x1a92 <vfprintf+0x2d4>
+    1a88:	b8 2c       	mov	r11, r8
+    1a8a:	a3 2c       	mov	r10, r3
+    1a8c:	03 c0       	rjmp	.+6      	; 0x1a94 <vfprintf+0x2d6>
+    1a8e:	b8 2c       	mov	r11, r8
+    1a90:	01 c0       	rjmp	.+2      	; 0x1a94 <vfprintf+0x2d6>
+    1a92:	b9 2c       	mov	r11, r9
+    1a94:	a4 fe       	sbrs	r10, 4
+    1a96:	0f c0       	rjmp	.+30     	; 0x1ab6 <vfprintf+0x2f8>
+    1a98:	fe 01       	movw	r30, r28
+    1a9a:	e8 0d       	add	r30, r8
+    1a9c:	f1 1d       	adc	r31, r1
+    1a9e:	80 81       	ld	r24, Z
+    1aa0:	80 33       	cpi	r24, 0x30	; 48
+    1aa2:	21 f4       	brne	.+8      	; 0x1aac <vfprintf+0x2ee>
+    1aa4:	9a 2d       	mov	r25, r10
+    1aa6:	99 7e       	andi	r25, 0xE9	; 233
+    1aa8:	a9 2e       	mov	r10, r25
+    1aaa:	09 c0       	rjmp	.+18     	; 0x1abe <vfprintf+0x300>
+    1aac:	a2 fe       	sbrs	r10, 2
+    1aae:	06 c0       	rjmp	.+12     	; 0x1abc <vfprintf+0x2fe>
+    1ab0:	b3 94       	inc	r11
+    1ab2:	b3 94       	inc	r11
+    1ab4:	04 c0       	rjmp	.+8      	; 0x1abe <vfprintf+0x300>
+    1ab6:	8a 2d       	mov	r24, r10
+    1ab8:	86 78       	andi	r24, 0x86	; 134
+    1aba:	09 f0       	breq	.+2      	; 0x1abe <vfprintf+0x300>
+    1abc:	b3 94       	inc	r11
+    1abe:	a3 fc       	sbrc	r10, 3
+    1ac0:	11 c0       	rjmp	.+34     	; 0x1ae4 <vfprintf+0x326>
+    1ac2:	a0 fe       	sbrs	r10, 0
+    1ac4:	06 c0       	rjmp	.+12     	; 0x1ad2 <vfprintf+0x314>
+    1ac6:	b2 14       	cp	r11, r2
+    1ac8:	88 f4       	brcc	.+34     	; 0x1aec <vfprintf+0x32e>
+    1aca:	28 0c       	add	r2, r8
+    1acc:	92 2c       	mov	r9, r2
+    1ace:	9b 18       	sub	r9, r11
+    1ad0:	0e c0       	rjmp	.+28     	; 0x1aee <vfprintf+0x330>
+    1ad2:	b2 14       	cp	r11, r2
+    1ad4:	60 f4       	brcc	.+24     	; 0x1aee <vfprintf+0x330>
+    1ad6:	b6 01       	movw	r22, r12
+    1ad8:	80 e2       	ldi	r24, 0x20	; 32
+    1ada:	90 e0       	ldi	r25, 0x00	; 0
+    1adc:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1ae0:	b3 94       	inc	r11
+    1ae2:	f7 cf       	rjmp	.-18     	; 0x1ad2 <vfprintf+0x314>
+    1ae4:	b2 14       	cp	r11, r2
+    1ae6:	18 f4       	brcc	.+6      	; 0x1aee <vfprintf+0x330>
+    1ae8:	2b 18       	sub	r2, r11
+    1aea:	02 c0       	rjmp	.+4      	; 0x1af0 <vfprintf+0x332>
+    1aec:	98 2c       	mov	r9, r8
+    1aee:	21 2c       	mov	r2, r1
+    1af0:	a4 fe       	sbrs	r10, 4
+    1af2:	10 c0       	rjmp	.+32     	; 0x1b14 <vfprintf+0x356>
+    1af4:	b6 01       	movw	r22, r12
+    1af6:	80 e3       	ldi	r24, 0x30	; 48
+    1af8:	90 e0       	ldi	r25, 0x00	; 0
+    1afa:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1afe:	a2 fe       	sbrs	r10, 2
+    1b00:	17 c0       	rjmp	.+46     	; 0x1b30 <vfprintf+0x372>
+    1b02:	a1 fc       	sbrc	r10, 1
+    1b04:	03 c0       	rjmp	.+6      	; 0x1b0c <vfprintf+0x34e>
+    1b06:	88 e7       	ldi	r24, 0x78	; 120
+    1b08:	90 e0       	ldi	r25, 0x00	; 0
+    1b0a:	02 c0       	rjmp	.+4      	; 0x1b10 <vfprintf+0x352>
+    1b0c:	88 e5       	ldi	r24, 0x58	; 88
+    1b0e:	90 e0       	ldi	r25, 0x00	; 0
+    1b10:	b6 01       	movw	r22, r12
+    1b12:	0c c0       	rjmp	.+24     	; 0x1b2c <vfprintf+0x36e>
+    1b14:	8a 2d       	mov	r24, r10
+    1b16:	86 78       	andi	r24, 0x86	; 134
+    1b18:	59 f0       	breq	.+22     	; 0x1b30 <vfprintf+0x372>
+    1b1a:	a1 fe       	sbrs	r10, 1
+    1b1c:	02 c0       	rjmp	.+4      	; 0x1b22 <vfprintf+0x364>
+    1b1e:	8b e2       	ldi	r24, 0x2B	; 43
+    1b20:	01 c0       	rjmp	.+2      	; 0x1b24 <vfprintf+0x366>
+    1b22:	80 e2       	ldi	r24, 0x20	; 32
+    1b24:	a7 fc       	sbrc	r10, 7
+    1b26:	8d e2       	ldi	r24, 0x2D	; 45
+    1b28:	b6 01       	movw	r22, r12
+    1b2a:	90 e0       	ldi	r25, 0x00	; 0
+    1b2c:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1b30:	89 14       	cp	r8, r9
+    1b32:	38 f4       	brcc	.+14     	; 0x1b42 <vfprintf+0x384>
+    1b34:	b6 01       	movw	r22, r12
+    1b36:	80 e3       	ldi	r24, 0x30	; 48
+    1b38:	90 e0       	ldi	r25, 0x00	; 0
+    1b3a:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1b3e:	9a 94       	dec	r9
+    1b40:	f7 cf       	rjmp	.-18     	; 0x1b30 <vfprintf+0x372>
+    1b42:	8a 94       	dec	r8
+    1b44:	f3 01       	movw	r30, r6
+    1b46:	e8 0d       	add	r30, r8
+    1b48:	f1 1d       	adc	r31, r1
+    1b4a:	80 81       	ld	r24, Z
+    1b4c:	b6 01       	movw	r22, r12
+    1b4e:	90 e0       	ldi	r25, 0x00	; 0
+    1b50:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1b54:	81 10       	cpse	r8, r1
+    1b56:	f5 cf       	rjmp	.-22     	; 0x1b42 <vfprintf+0x384>
+    1b58:	22 20       	and	r2, r2
+    1b5a:	09 f4       	brne	.+2      	; 0x1b5e <vfprintf+0x3a0>
+    1b5c:	42 ce       	rjmp	.-892    	; 0x17e2 <vfprintf+0x24>
+    1b5e:	b6 01       	movw	r22, r12
+    1b60:	80 e2       	ldi	r24, 0x20	; 32
+    1b62:	90 e0       	ldi	r25, 0x00	; 0
+    1b64:	0e 94 d6 0d 	call	0x1bac	; 0x1bac <fputc>
+    1b68:	2a 94       	dec	r2
+    1b6a:	f6 cf       	rjmp	.-20     	; 0x1b58 <vfprintf+0x39a>
+    1b6c:	f6 01       	movw	r30, r12
+    1b6e:	86 81       	ldd	r24, Z+6	; 0x06
+    1b70:	97 81       	ldd	r25, Z+7	; 0x07
+    1b72:	02 c0       	rjmp	.+4      	; 0x1b78 <vfprintf+0x3ba>
+    1b74:	8f ef       	ldi	r24, 0xFF	; 255
+    1b76:	9f ef       	ldi	r25, 0xFF	; 255
+    1b78:	2b 96       	adiw	r28, 0x0b	; 11
+    1b7a:	e2 e1       	ldi	r30, 0x12	; 18
+    1b7c:	0c 94 8c 0e 	jmp	0x1d18	; 0x1d18 <__epilogue_restores__>
+
+00001b80 <strnlen_P>:
+    1b80:	fc 01       	movw	r30, r24
+    1b82:	05 90       	lpm	r0, Z+
+    1b84:	61 50       	subi	r22, 0x01	; 1
+    1b86:	70 40       	sbci	r23, 0x00	; 0
+    1b88:	01 10       	cpse	r0, r1
+    1b8a:	d8 f7       	brcc	.-10     	; 0x1b82 <strnlen_P+0x2>
+    1b8c:	80 95       	com	r24
+    1b8e:	90 95       	com	r25
+    1b90:	8e 0f       	add	r24, r30
+    1b92:	9f 1f       	adc	r25, r31
+    1b94:	08 95       	ret
+
+00001b96 <strnlen>:
+    1b96:	fc 01       	movw	r30, r24
+    1b98:	61 50       	subi	r22, 0x01	; 1
+    1b9a:	70 40       	sbci	r23, 0x00	; 0
+    1b9c:	01 90       	ld	r0, Z+
+    1b9e:	01 10       	cpse	r0, r1
+    1ba0:	d8 f7       	brcc	.-10     	; 0x1b98 <strnlen+0x2>
+    1ba2:	80 95       	com	r24
+    1ba4:	90 95       	com	r25
+    1ba6:	8e 0f       	add	r24, r30
+    1ba8:	9f 1f       	adc	r25, r31
+    1baa:	08 95       	ret
+
+00001bac <fputc>:
+    1bac:	0f 93       	push	r16
+    1bae:	1f 93       	push	r17
+    1bb0:	cf 93       	push	r28
+    1bb2:	df 93       	push	r29
+    1bb4:	fb 01       	movw	r30, r22
+    1bb6:	23 81       	ldd	r18, Z+3	; 0x03
+    1bb8:	21 fd       	sbrc	r18, 1
+    1bba:	03 c0       	rjmp	.+6      	; 0x1bc2 <fputc+0x16>
+    1bbc:	8f ef       	ldi	r24, 0xFF	; 255
+    1bbe:	9f ef       	ldi	r25, 0xFF	; 255
+    1bc0:	2c c0       	rjmp	.+88     	; 0x1c1a <fputc+0x6e>
+    1bc2:	22 ff       	sbrs	r18, 2
+    1bc4:	16 c0       	rjmp	.+44     	; 0x1bf2 <fputc+0x46>
+    1bc6:	46 81       	ldd	r20, Z+6	; 0x06
+    1bc8:	57 81       	ldd	r21, Z+7	; 0x07
+    1bca:	24 81       	ldd	r18, Z+4	; 0x04
+    1bcc:	35 81       	ldd	r19, Z+5	; 0x05
+    1bce:	42 17       	cp	r20, r18
+    1bd0:	53 07       	cpc	r21, r19
+    1bd2:	44 f4       	brge	.+16     	; 0x1be4 <fputc+0x38>
+    1bd4:	a0 81       	ld	r26, Z
+    1bd6:	b1 81       	ldd	r27, Z+1	; 0x01
+    1bd8:	9d 01       	movw	r18, r26
+    1bda:	2f 5f       	subi	r18, 0xFF	; 255
+    1bdc:	3f 4f       	sbci	r19, 0xFF	; 255
+    1bde:	31 83       	std	Z+1, r19	; 0x01
+    1be0:	20 83       	st	Z, r18
+    1be2:	8c 93       	st	X, r24
+    1be4:	26 81       	ldd	r18, Z+6	; 0x06
+    1be6:	37 81       	ldd	r19, Z+7	; 0x07
+    1be8:	2f 5f       	subi	r18, 0xFF	; 255
+    1bea:	3f 4f       	sbci	r19, 0xFF	; 255
+    1bec:	37 83       	std	Z+7, r19	; 0x07
+    1bee:	26 83       	std	Z+6, r18	; 0x06
+    1bf0:	14 c0       	rjmp	.+40     	; 0x1c1a <fputc+0x6e>
+    1bf2:	8b 01       	movw	r16, r22
+    1bf4:	ec 01       	movw	r28, r24
+    1bf6:	fb 01       	movw	r30, r22
+    1bf8:	00 84       	ldd	r0, Z+8	; 0x08
+    1bfa:	f1 85       	ldd	r31, Z+9	; 0x09
+    1bfc:	e0 2d       	mov	r30, r0
+    1bfe:	09 95       	icall
+    1c00:	89 2b       	or	r24, r25
+    1c02:	e1 f6       	brne	.-72     	; 0x1bbc <fputc+0x10>
+    1c04:	d8 01       	movw	r26, r16
+    1c06:	16 96       	adiw	r26, 0x06	; 6
+    1c08:	8d 91       	ld	r24, X+
+    1c0a:	9c 91       	ld	r25, X
+    1c0c:	17 97       	sbiw	r26, 0x07	; 7
+    1c0e:	01 96       	adiw	r24, 0x01	; 1
+    1c10:	17 96       	adiw	r26, 0x07	; 7
+    1c12:	9c 93       	st	X, r25
+    1c14:	8e 93       	st	-X, r24
+    1c16:	16 97       	sbiw	r26, 0x06	; 6
+    1c18:	ce 01       	movw	r24, r28
+    1c1a:	df 91       	pop	r29
+    1c1c:	cf 91       	pop	r28
+    1c1e:	1f 91       	pop	r17
+    1c20:	0f 91       	pop	r16
+    1c22:	08 95       	ret
+
+00001c24 <__ultoa_invert>:
+    1c24:	fa 01       	movw	r30, r20
+    1c26:	aa 27       	eor	r26, r26
+    1c28:	28 30       	cpi	r18, 0x08	; 8
+    1c2a:	51 f1       	breq	.+84     	; 0x1c80 <__ultoa_invert+0x5c>
+    1c2c:	20 31       	cpi	r18, 0x10	; 16
+    1c2e:	81 f1       	breq	.+96     	; 0x1c90 <__ultoa_invert+0x6c>
+    1c30:	e8 94       	clt
+    1c32:	6f 93       	push	r22
+    1c34:	6e 7f       	andi	r22, 0xFE	; 254
+    1c36:	6e 5f       	subi	r22, 0xFE	; 254
+    1c38:	7f 4f       	sbci	r23, 0xFF	; 255
+    1c3a:	8f 4f       	sbci	r24, 0xFF	; 255
+    1c3c:	9f 4f       	sbci	r25, 0xFF	; 255
+    1c3e:	af 4f       	sbci	r26, 0xFF	; 255
+    1c40:	b1 e0       	ldi	r27, 0x01	; 1
+    1c42:	3e d0       	rcall	.+124    	; 0x1cc0 <__ultoa_invert+0x9c>
+    1c44:	b4 e0       	ldi	r27, 0x04	; 4
+    1c46:	3c d0       	rcall	.+120    	; 0x1cc0 <__ultoa_invert+0x9c>
+    1c48:	67 0f       	add	r22, r23
+    1c4a:	78 1f       	adc	r23, r24
+    1c4c:	89 1f       	adc	r24, r25
+    1c4e:	9a 1f       	adc	r25, r26
+    1c50:	a1 1d       	adc	r26, r1
+    1c52:	68 0f       	add	r22, r24
+    1c54:	79 1f       	adc	r23, r25
+    1c56:	8a 1f       	adc	r24, r26
+    1c58:	91 1d       	adc	r25, r1
+    1c5a:	a1 1d       	adc	r26, r1
+    1c5c:	6a 0f       	add	r22, r26
+    1c5e:	71 1d       	adc	r23, r1
+    1c60:	81 1d       	adc	r24, r1
+    1c62:	91 1d       	adc	r25, r1
+    1c64:	a1 1d       	adc	r26, r1
+    1c66:	20 d0       	rcall	.+64     	; 0x1ca8 <__ultoa_invert+0x84>
+    1c68:	09 f4       	brne	.+2      	; 0x1c6c <__ultoa_invert+0x48>
+    1c6a:	68 94       	set
+    1c6c:	3f 91       	pop	r19
+    1c6e:	2a e0       	ldi	r18, 0x0A	; 10
+    1c70:	26 9f       	mul	r18, r22
+    1c72:	11 24       	eor	r1, r1
+    1c74:	30 19       	sub	r19, r0
+    1c76:	30 5d       	subi	r19, 0xD0	; 208
+    1c78:	31 93       	st	Z+, r19
+    1c7a:	de f6       	brtc	.-74     	; 0x1c32 <__ultoa_invert+0xe>
+    1c7c:	cf 01       	movw	r24, r30
+    1c7e:	08 95       	ret
+    1c80:	46 2f       	mov	r20, r22
+    1c82:	47 70       	andi	r20, 0x07	; 7
+    1c84:	40 5d       	subi	r20, 0xD0	; 208
+    1c86:	41 93       	st	Z+, r20
+    1c88:	b3 e0       	ldi	r27, 0x03	; 3
+    1c8a:	0f d0       	rcall	.+30     	; 0x1caa <__ultoa_invert+0x86>
+    1c8c:	c9 f7       	brne	.-14     	; 0x1c80 <__ultoa_invert+0x5c>
+    1c8e:	f6 cf       	rjmp	.-20     	; 0x1c7c <__ultoa_invert+0x58>
+    1c90:	46 2f       	mov	r20, r22
+    1c92:	4f 70       	andi	r20, 0x0F	; 15
+    1c94:	40 5d       	subi	r20, 0xD0	; 208
+    1c96:	4a 33       	cpi	r20, 0x3A	; 58
+    1c98:	18 f0       	brcs	.+6      	; 0x1ca0 <__ultoa_invert+0x7c>
+    1c9a:	49 5d       	subi	r20, 0xD9	; 217
+    1c9c:	31 fd       	sbrc	r19, 1
+    1c9e:	40 52       	subi	r20, 0x20	; 32
+    1ca0:	41 93       	st	Z+, r20
+    1ca2:	02 d0       	rcall	.+4      	; 0x1ca8 <__ultoa_invert+0x84>
+    1ca4:	a9 f7       	brne	.-22     	; 0x1c90 <__ultoa_invert+0x6c>
+    1ca6:	ea cf       	rjmp	.-44     	; 0x1c7c <__ultoa_invert+0x58>
+    1ca8:	b4 e0       	ldi	r27, 0x04	; 4
+    1caa:	a6 95       	lsr	r26
+    1cac:	97 95       	ror	r25
+    1cae:	87 95       	ror	r24
+    1cb0:	77 95       	ror	r23
+    1cb2:	67 95       	ror	r22
+    1cb4:	ba 95       	dec	r27
+    1cb6:	c9 f7       	brne	.-14     	; 0x1caa <__ultoa_invert+0x86>
+    1cb8:	00 97       	sbiw	r24, 0x00	; 0
+    1cba:	61 05       	cpc	r22, r1
+    1cbc:	71 05       	cpc	r23, r1
+    1cbe:	08 95       	ret
+    1cc0:	9b 01       	movw	r18, r22
+    1cc2:	ac 01       	movw	r20, r24
+    1cc4:	0a 2e       	mov	r0, r26
+    1cc6:	06 94       	lsr	r0
+    1cc8:	57 95       	ror	r21
+    1cca:	47 95       	ror	r20
+    1ccc:	37 95       	ror	r19
+    1cce:	27 95       	ror	r18
+    1cd0:	ba 95       	dec	r27
+    1cd2:	c9 f7       	brne	.-14     	; 0x1cc6 <__ultoa_invert+0xa2>
+    1cd4:	62 0f       	add	r22, r18
+    1cd6:	73 1f       	adc	r23, r19
+    1cd8:	84 1f       	adc	r24, r20
+    1cda:	95 1f       	adc	r25, r21
+    1cdc:	a0 1d       	adc	r26, r0
+    1cde:	08 95       	ret
+
+00001ce0 <__prologue_saves__>:
+    1ce0:	2f 92       	push	r2
+    1ce2:	3f 92       	push	r3
+    1ce4:	4f 92       	push	r4
+    1ce6:	5f 92       	push	r5
+    1ce8:	6f 92       	push	r6
+    1cea:	7f 92       	push	r7
+    1cec:	8f 92       	push	r8
+    1cee:	9f 92       	push	r9
+    1cf0:	af 92       	push	r10
+    1cf2:	bf 92       	push	r11
+    1cf4:	cf 92       	push	r12
+    1cf6:	df 92       	push	r13
+    1cf8:	ef 92       	push	r14
+    1cfa:	ff 92       	push	r15
+    1cfc:	0f 93       	push	r16
+    1cfe:	1f 93       	push	r17
+    1d00:	cf 93       	push	r28
+    1d02:	df 93       	push	r29
+    1d04:	cd b7       	in	r28, 0x3d	; 61
+    1d06:	de b7       	in	r29, 0x3e	; 62
+    1d08:	ca 1b       	sub	r28, r26
+    1d0a:	db 0b       	sbc	r29, r27
+    1d0c:	0f b6       	in	r0, 0x3f	; 63
+    1d0e:	f8 94       	cli
+    1d10:	de bf       	out	0x3e, r29	; 62
+    1d12:	0f be       	out	0x3f, r0	; 63
+    1d14:	cd bf       	out	0x3d, r28	; 61
+    1d16:	09 94       	ijmp
+
+00001d18 <__epilogue_restores__>:
+    1d18:	2a 88       	ldd	r2, Y+18	; 0x12
+    1d1a:	39 88       	ldd	r3, Y+17	; 0x11
+    1d1c:	48 88       	ldd	r4, Y+16	; 0x10
+    1d1e:	5f 84       	ldd	r5, Y+15	; 0x0f
+    1d20:	6e 84       	ldd	r6, Y+14	; 0x0e
+    1d22:	7d 84       	ldd	r7, Y+13	; 0x0d
+    1d24:	8c 84       	ldd	r8, Y+12	; 0x0c
+    1d26:	9b 84       	ldd	r9, Y+11	; 0x0b
+    1d28:	aa 84       	ldd	r10, Y+10	; 0x0a
+    1d2a:	b9 84       	ldd	r11, Y+9	; 0x09
+    1d2c:	c8 84       	ldd	r12, Y+8	; 0x08
+    1d2e:	df 80       	ldd	r13, Y+7	; 0x07
+    1d30:	ee 80       	ldd	r14, Y+6	; 0x06
+    1d32:	fd 80       	ldd	r15, Y+5	; 0x05
+    1d34:	0c 81       	ldd	r16, Y+4	; 0x04
+    1d36:	1b 81       	ldd	r17, Y+3	; 0x03
+    1d38:	aa 81       	ldd	r26, Y+2	; 0x02
+    1d3a:	b9 81       	ldd	r27, Y+1	; 0x01
+    1d3c:	ce 0f       	add	r28, r30
+    1d3e:	d1 1d       	adc	r29, r1
+    1d40:	0f b6       	in	r0, 0x3f	; 63
+    1d42:	f8 94       	cli
+    1d44:	de bf       	out	0x3e, r29	; 62
+    1d46:	0f be       	out	0x3f, r0	; 63
+    1d48:	cd bf       	out	0x3d, r28	; 61
+    1d4a:	ed 01       	movw	r28, r26
+    1d4c:	08 95       	ret
+
+00001d4e <_exit>:
+    1d4e:	f8 94       	cli
+
+00001d50 <__stop_program>:
+    1d50:	ff cf       	rjmp	.-2      	; 0x1d50 <__stop_program>
diff --git a/hdlc_screen/Debug/hdlc_screen.map b/hdlc_screen/Debug/hdlc_screen.map
new file mode 100644
index 0000000..4d6d650
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc_screen.map
@@ -0,0 +1,953 @@
+Archive member included to satisfy reference by file (symbol)
+
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+                              LCD/Lcd_print.o (__udivmodhi4)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+                              C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o (exit)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+                              hdlc/client.o (__do_copy_data)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+                              hdlc/client.o (__do_clear_bss)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o)
+                              LCD/Lcd_print.o (strncpy)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o)
+                              hdlc/client.o (printf)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o)
+                              LCD/Lcd_print.o (snprintf)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (vfprintf)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen_P)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (fputc)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (__iob)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (__ultoa_invert)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (__prologue_saves__)
+c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+                              c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (__epilogue_restores__)
+
+Allocating common symbols
+Common symbol       size              file
+
+uartRxBuffer        0x22              UART/uart.o
+pcf8574_pinstatus   0x1               LCD/pcf8574.o
+textCounter         0x6               LCD/Lcd_print.o
+uartTxBuffer        0x22              UART/uart.o
+__iob               0x6               c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o)
+connecting_frame_timeout_bf
+                    0x2               hdlc/client.o
+
+Discarded input sections
+
+ .data          0x00000000        0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ .bss           0x00000000        0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ .text          0x00000000        0x0 hdlc/client.o
+ .data          0x00000000        0x0 hdlc/client.o
+ .bss           0x00000000        0x0 hdlc/client.o
+ .text          0x00000000        0x0 hdlc/fcs.o
+ .data          0x00000000        0x0 hdlc/fcs.o
+ .bss           0x00000000        0x0 hdlc/fcs.o
+ .text          0x00000000        0x0 hdlc/hdlc.o
+ .data          0x00000000        0x0 hdlc/hdlc.o
+ .bss           0x00000000        0x0 hdlc/hdlc.o
+ .text.hdlc_set_state
+                0x00000000       0x20 hdlc/hdlc.o
+ .text.hdlc_get_state
+                0x00000000       0x20 hdlc/hdlc.o
+ .text.hdlc_get_data_reset
+                0x00000000        0xa hdlc/hdlc.o
+ .text.hdlc_get_data
+                0x00000000       0x24 hdlc/hdlc.o
+ .data.hdlc_state
+                0x00000000        0xb hdlc/hdlc.o
+ .text          0x00000000        0x0 LCD/lcdpcf8574.o
+ .data          0x00000000        0x0 LCD/lcdpcf8574.o
+ .bss           0x00000000        0x0 LCD/lcdpcf8574.o
+ .text.lcd_data
+                0x00000000       0x14 LCD/lcdpcf8574.o
+ .text.lcd_getxy
+                0x00000000        0x8 LCD/lcdpcf8574.o
+ .text.lcd_puts_p
+                0x00000000       0x24 LCD/lcdpcf8574.o
+ .text          0x00000000        0x0 LCD/Lcd_print.o
+ .data          0x00000000        0x0 LCD/Lcd_print.o
+ .bss           0x00000000        0x0 LCD/Lcd_print.o
+ .text          0x00000000        0x0 LCD/pcf8574.o
+ .data          0x00000000        0x0 LCD/pcf8574.o
+ .bss           0x00000000        0x0 LCD/pcf8574.o
+ .text.pcf8574_getoutput
+                0x00000000        0xe LCD/pcf8574.o
+ .text.pcf8574_setoutputpins
+                0x00000000       0x80 LCD/pcf8574.o
+ .text.pcf8574_getinput
+                0x00000000       0x22 LCD/pcf8574.o
+ .text.pcf8574_getinputpin
+                0x00000000       0x32 LCD/pcf8574.o
+ .text          0x00000000        0x0 LCD/twimaster.o
+ .data          0x00000000        0x0 LCD/twimaster.o
+ .bss           0x00000000        0x0 LCD/twimaster.o
+ .text.i2c_start_wait
+                0x00000000       0x50 LCD/twimaster.o
+ .text.i2c_rep_start
+                0x00000000        0x6 LCD/twimaster.o
+ .text.i2c_readAck
+                0x00000000       0x16 LCD/twimaster.o
+ .text.i2c_readNak
+                0x00000000       0x16 LCD/twimaster.o
+ .text          0x00000000        0x0 main.o
+ .data          0x00000000        0x0 main.o
+ .bss           0x00000000        0x0 main.o
+ .text          0x00000000        0x0 protocol/protocol.o
+ .data          0x00000000        0x0 protocol/protocol.o
+ .bss           0x00000000        0x0 protocol/protocol.o
+ .text          0x00000000        0x0 UART/circular_buf.o
+ .data          0x00000000        0x0 UART/circular_buf.o
+ .bss           0x00000000        0x0 UART/circular_buf.o
+ .text.initialize_buffer
+                0x00000000        0x8 UART/circular_buf.o
+ .text          0x00000000        0x0 UART/uart.o
+ .data          0x00000000        0x0 UART/uart.o
+ .bss           0x00000000        0x0 UART/uart.o
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .text.libgcc.mul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .text.libgcc.prologue
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .text.libgcc.builtins
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .text.libgcc.fmul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .text.libgcc.fixed
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text.libgcc.mul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text.libgcc.div
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text.libgcc.prologue
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text.libgcc.builtins
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text.libgcc.fmul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text.libgcc.fixed
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text.libgcc.mul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text.libgcc.div
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text.libgcc.prologue
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text.libgcc.builtins
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text.libgcc.fmul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text.libgcc.fixed
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text.libgcc.mul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text.libgcc.div
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text.libgcc.prologue
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text.libgcc.builtins
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text.libgcc.fmul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text.libgcc.fixed
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .text.libgcc.mul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .text.libgcc.div
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .text.libgcc.builtins
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .text.libgcc.fmul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .text.libgcc.fixed
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .text.libgcc.mul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .text.libgcc.div
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .text.libgcc.builtins
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .text.libgcc.fmul
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+ .text.libgcc.fixed
+                0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+
+Memory Configuration
+
+Name             Origin             Length             Attributes
+text             0x00000000         0x00020000         xr
+data             0x00800060         0x0000ffa0         rw !x
+eeprom           0x00810000         0x00010000         rw !x
+fuse             0x00820000         0x00000003         rw !x
+lock             0x00830000         0x00000400         rw !x
+signature        0x00840000         0x00000400         rw !x
+user_signatures  0x00850000         0x00000400         rw !x
+*default*        0x00000000         0xffffffff
+
+Linker script and memory map
+
+Address of section .data set to 0x800100
+LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+LOAD hdlc/client.o
+LOAD hdlc/fcs.o
+LOAD hdlc/hdlc.o
+LOAD LCD/lcdpcf8574.o
+LOAD LCD/Lcd_print.o
+LOAD LCD/pcf8574.o
+LOAD LCD/twimaster.o
+LOAD main.o
+LOAD protocol/protocol.o
+LOAD UART/circular_buf.o
+LOAD UART/uart.o
+START GROUP
+LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a
+END GROUP
+START GROUP
+LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a
+LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a
+LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a
+LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5\libatmega328p.a
+END GROUP
+                0x00000000                __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0
+                0x00800060                __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x800060
+                0x00020000                __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000
+                0x0000ffa0                __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0
+                0x00010000                __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000
+                [0x00000003]                __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400
+                0x00000400                __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400
+                0x00000400                __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400
+                0x00000400                __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400
+
+.hash
+ *(.hash)
+
+.dynsym
+ *(.dynsym)
+
+.dynstr
+ *(.dynstr)
+
+.gnu.version
+ *(.gnu.version)
+
+.gnu.version_d
+ *(.gnu.version_d)
+
+.gnu.version_r
+ *(.gnu.version_r)
+
+.rel.init
+ *(.rel.init)
+
+.rela.init
+ *(.rela.init)
+
+.rel.text
+ *(.rel.text)
+ *(.rel.text.*)
+ *(.rel.gnu.linkonce.t*)
+
+.rela.text
+ *(.rela.text)
+ *(.rela.text.*)
+ *(.rela.gnu.linkonce.t*)
+
+.rel.fini
+ *(.rel.fini)
+
+.rela.fini
+ *(.rela.fini)
+
+.rel.rodata
+ *(.rel.rodata)
+ *(.rel.rodata.*)
+ *(.rel.gnu.linkonce.r*)
+
+.rela.rodata
+ *(.rela.rodata)
+ *(.rela.rodata.*)
+ *(.rela.gnu.linkonce.r*)
+
+.rel.data
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.gnu.linkonce.d*)
+
+.rela.data
+ *(.rela.data)
+ *(.rela.data.*)
+ *(.rela.gnu.linkonce.d*)
+
+.rel.ctors
+ *(.rel.ctors)
+
+.rela.ctors
+ *(.rela.ctors)
+
+.rel.dtors
+ *(.rel.dtors)
+
+.rela.dtors
+ *(.rela.dtors)
+
+.rel.got
+ *(.rel.got)
+
+.rela.got
+ *(.rela.got)
+
+.rel.bss
+ *(.rel.bss)
+
+.rela.bss
+ *(.rela.bss)
+
+.rel.plt
+ *(.rel.plt)
+
+.rela.plt
+ *(.rela.plt)
+
+.text           0x00000000     0x1d52
+ *(.vectors)
+ .vectors       0x00000000       0x68 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+                0x00000000                __vector_default
+                0x00000000                __vectors
+ *(.vectors)
+ *(.progmem.gcc*)
+                0x00000068                . = ALIGN (0x2)
+                0x00000068                __trampolines_start = .
+ *(.trampolines)
+ .trampolines   0x00000068        0x0 linker stubs
+ *(.trampolines*)
+                0x00000068                __trampolines_end = .
+ *libprintf_flt.a:*(.progmem.data)
+ *libc.a:*(.progmem.data)
+ *(.progmem*)
+                0x00000068                . = ALIGN (0x2)
+ *(.jumptables)
+ *(.jumptables*)
+ *(.lowtext)
+ *(.lowtext*)
+                0x00000068                __ctors_start = .
+ *(.ctors)
+                0x00000068                __ctors_end = .
+                0x00000068                __dtors_start = .
+ *(.dtors)
+                0x00000068                __dtors_end = .
+ SORT(*)(.ctors)
+ SORT(*)(.dtors)
+ *(.init0)
+ .init0         0x00000068        0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+                0x00000068                __init
+ *(.init0)
+ *(.init1)
+ *(.init1)
+ *(.init2)
+ .init2         0x00000068        0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ *(.init2)
+ *(.init3)
+ *(.init3)
+ *(.init4)
+ .init4         0x00000074       0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o)
+                0x00000074                __do_copy_data
+ .init4         0x0000008a       0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o)
+                0x0000008a                __do_clear_bss
+ *(.init4)
+ *(.init5)
+ *(.init5)
+ *(.init6)
+ *(.init6)
+ *(.init7)
+ *(.init7)
+ *(.init8)
+ *(.init8)
+ *(.init9)
+ .init9         0x0000009a        0x8 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ *(.init9)
+ *(.text)
+ .text          0x000000a2        0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+                0x000000a2                __vector_22
+                0x000000a2                __vector_1
+                0x000000a2                __vector_24
+                0x000000a2                __vector_12
+                0x000000a2                __bad_interrupt
+                0x000000a2                __vector_6
+                0x000000a2                __vector_3
+                0x000000a2                __vector_23
+                0x000000a2                __vector_25
+                0x000000a2                __vector_11
+                0x000000a2                __vector_13
+                0x000000a2                __vector_17
+                0x000000a2                __vector_19
+                0x000000a2                __vector_7
+                0x000000a2                __vector_5
+                0x000000a2                __vector_4
+                0x000000a2                __vector_9
+                0x000000a2                __vector_2
+                0x000000a2                __vector_21
+                0x000000a2                __vector_15
+                0x000000a2                __vector_8
+                0x000000a2                __vector_14
+                0x000000a2                __vector_10
+                0x000000a2                __vector_16
+                0x000000a6                . = ALIGN (0x2)
+ *(.text.*)
+ .text.init_hdlc_client
+                0x000000a6       0x32 hdlc/client.o
+                0x000000a6                init_hdlc_client
+ .text.hdlc_connect
+                0x000000d8       0x14 hdlc/client.o
+                0x000000d8                hdlc_connect
+ .text.hdlc_send_data
+                0x000000ec       0x36 hdlc/client.o
+                0x000000ec                hdlc_send_data
+ .text.hdlc_get_raw_frame
+                0x00000122       0xec hdlc/client.o
+                0x00000122                hdlc_get_raw_frame
+ .text.hdlc_decode_recived_raw_data
+                0x0000020e      0x142 hdlc/client.o
+                0x0000020e                hdlc_decode_recived_raw_data
+ .text.hdlc_timeout_handler
+                0x00000350       0x20 hdlc/client.o
+                0x00000350                hdlc_timeout_handler
+ .text.calc_fcs
+                0x00000370       0x1c hdlc/fcs.o
+                0x00000370                calc_fcs
+ .text.hdlc_escape_value
+                0x0000038c       0x3e hdlc/hdlc.o
+                0x0000038c                hdlc_escape_value
+ .text.hdlc_get_control_type
+                0x000003ca       0x26 hdlc/hdlc.o
+                0x000003ca                hdlc_get_control_type
+ .text.hdlc_frame_control_type
+                0x000003f0       0x36 hdlc/hdlc.o
+                0x000003f0                hdlc_frame_control_type
+ .text.hdlc_get_data_reset_with_state
+                0x00000426       0x1e hdlc/hdlc.o
+                0x00000426                hdlc_get_data_reset_with_state
+ .text.hdlc_get_data_with_state
+                0x00000444      0x24c hdlc/hdlc.o
+                0x00000444                hdlc_get_data_with_state
+ .text.hdlc_frame_data
+                0x00000690      0x14a hdlc/hdlc.o
+                0x00000690                hdlc_frame_data
+ .text.lcd_read
+                0x000007da       0x76 LCD/lcdpcf8574.o
+ .text.lcd_waitbusy
+                0x00000850       0x14 LCD/lcdpcf8574.o
+ .text.toggle_e
+                0x00000864       0x14 LCD/lcdpcf8574.o
+ .text.lcd_write
+                0x00000878      0x144 LCD/lcdpcf8574.o
+ .text.lcd_command
+                0x000009bc       0x14 LCD/lcdpcf8574.o
+                0x000009bc                lcd_command
+ .text.lcd_gotoxy
+                0x000009d0       0x14 LCD/lcdpcf8574.o
+                0x000009d0                lcd_gotoxy
+ .text.lcd_clrscr
+                0x000009e4        0x8 LCD/lcdpcf8574.o
+                0x000009e4                lcd_clrscr
+ .text.lcd_led  0x000009ec       0x26 LCD/lcdpcf8574.o
+                0x000009ec                lcd_led
+ .text.lcd_home
+                0x00000a12        0x8 LCD/lcdpcf8574.o
+                0x00000a12                lcd_home
+ .text.lcd_putc
+                0x00000a1a       0x48 LCD/lcdpcf8574.o
+                0x00000a1a                lcd_putc
+ .text.lcd_puts
+                0x00000a62       0x20 LCD/lcdpcf8574.o
+                0x00000a62                lcd_puts
+ .text.lcd_init
+                0x00000a82       0xa4 LCD/lcdpcf8574.o
+                0x00000a82                lcd_init
+ .text.Lcd_inciliation
+                0x00000b26       0x12 LCD/Lcd_print.o
+                0x00000b26                Lcd_inciliation
+ .text.fillBuffer1
+                0x00000b38       0x7a LCD/Lcd_print.o
+                0x00000b38                fillBuffer1
+ .text.fillBuffer2
+                0x00000bb2       0x5e LCD/Lcd_print.o
+                0x00000bb2                fillBuffer2
+ .text.printLcd
+                0x00000c10       0xe0 LCD/Lcd_print.o
+                0x00000c10                printLcd
+ .text.pcf8574_init
+                0x00000cf0       0x12 LCD/pcf8574.o
+                0x00000cf0                pcf8574_init
+ .text.pcf8574_getoutputpin
+                0x00000d02       0x28 LCD/pcf8574.o
+                0x00000d02                pcf8574_getoutputpin
+ .text.pcf8574_setoutput
+                0x00000d2a       0x26 LCD/pcf8574.o
+                0x00000d2a                pcf8574_setoutput
+ .text.pcf8574_setoutputpin
+                0x00000d50       0x5c LCD/pcf8574.o
+                0x00000d50                pcf8574_setoutputpin
+ .text.pcf8574_setoutputpinhigh
+                0x00000dac        0x8 LCD/pcf8574.o
+                0x00000dac                pcf8574_setoutputpinhigh
+ .text.pcf8574_setoutputpinlow
+                0x00000db4        0x8 LCD/pcf8574.o
+                0x00000db4                pcf8574_setoutputpinlow
+ .text.i2c_init
+                0x00000dbc        0xc LCD/twimaster.o
+                0x00000dbc                i2c_init
+ .text.i2c_start
+                0x00000dc8       0x4e LCD/twimaster.o
+                0x00000dc8                i2c_start
+ .text.i2c_stop
+                0x00000e16       0x12 LCD/twimaster.o
+                0x00000e16                i2c_stop
+ .text.i2c_write
+                0x00000e28       0x24 LCD/twimaster.o
+                0x00000e28                i2c_write
+ .text.main     0x00000e4c      0x330 main.o
+                0x00000e4c                main
+ .text.protocol_decode
+                0x0000117c      0x13c protocol/protocol.o
+                0x0000117c                protocol_decode
+ .text.protocol_encode
+                0x000012b8      0x1c6 protocol/protocol.o
+                0x000012b8                protocol_encode
+ .text.buffer_empty
+                0x0000147e       0x14 UART/circular_buf.o
+                0x0000147e                buffer_empty
+ .text.buffer_full
+                0x00001492       0x34 UART/circular_buf.o
+                0x00001492                buffer_full
+ .text.write_buffer
+                0x000014c6       0x3a UART/circular_buf.o
+                0x000014c6                write_buffer
+ .text.read_buffer
+                0x00001500       0x3c UART/circular_buf.o
+                0x00001500                read_buffer
+ .text.UART_init
+                0x0000153c       0x18 UART/uart.o
+                0x0000153c                UART_init
+ .text.UART_send
+                0x00001554       0x48 UART/uart.o
+                0x00001554                UART_send
+ .text.UART_receive
+                0x0000159c       0x84 UART/uart.o
+                0x0000159c                UART_receive
+ .text.__vector_18
+                0x00001620       0x64 UART/uart.o
+                0x00001620                __vector_18
+ .text.__vector_20
+                0x00001684       0x68 UART/uart.o
+                0x00001684                __vector_20
+ .text.libgcc.div
+                0x000016ec       0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+                0x000016ec                __udivmodhi4
+ .text.avr-libc
+                0x00001714       0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o)
+                0x00001714                strncpy
+ .text.avr-libc
+                0x00001732       0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o)
+                0x00001732                printf
+ .text.avr-libc
+                0x0000175e       0x60 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o)
+                0x0000175e                snprintf
+ .text.avr-libc
+                0x000017be      0x3c2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o)
+                0x000017be                vfprintf
+ .text.avr-libc
+                0x00001b80       0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o)
+                0x00001b80                strnlen_P
+ .text.avr-libc
+                0x00001b96       0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o)
+                0x00001b96                strnlen
+ .text.avr-libc
+                0x00001bac       0x78 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o)
+                0x00001bac                fputc
+ .text.avr-libc
+                0x00001c24       0xbc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o)
+                0x00001c24                __ultoa_invert
+ .text.libgcc.prologue
+                0x00001ce0       0x38 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o)
+                0x00001ce0                __prologue_saves__
+ .text.libgcc.prologue
+                0x00001d18       0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o)
+                0x00001d18                __epilogue_restores__
+                0x00001d4e                . = ALIGN (0x2)
+ *(.fini9)
+ .fini9         0x00001d4e        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+                0x00001d4e                _exit
+                0x00001d4e                exit
+ *(.fini9)
+ *(.fini8)
+ *(.fini8)
+ *(.fini7)
+ *(.fini7)
+ *(.fini6)
+ *(.fini6)
+ *(.fini5)
+ *(.fini5)
+ *(.fini4)
+ *(.fini4)
+ *(.fini3)
+ *(.fini3)
+ *(.fini2)
+ *(.fini2)
+ *(.fini1)
+ *(.fini1)
+ *(.fini0)
+ .fini0         0x00001d4e        0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ *(.fini0)
+                0x00001d52                _etext = .
+
+.data           0x00800100      0x242 load address 0x00001d52
+                0x00800100                PROVIDE (__data_start, .)
+ *(.data)
+ *(.data*)
+ *(.gnu.linkonce.d*)
+ *(.rodata)
+ *(.rodata*)
+ .rodata.str1.1
+                0x00800100       0x16 hdlc/client.o
+ .rodata.fcstab
+                0x00800116      0x200 hdlc/fcs.o
+ .rodata.str1.1
+                0x00800316        0xf LCD/Lcd_print.o
+ .rodata.str1.1
+                0x00800325       0x1c main.o
+ *(.gnu.linkonce.r*)
+                0x00800342                . = ALIGN (0x2)
+ *fill*         0x00800341        0x1 
+                0x00800342                _edata = .
+                0x00800342                PROVIDE (__data_end, .)
+
+.bss            0x00800342       0x54
+                0x00800342                PROVIDE (__bss_start, .)
+ *(.bss)
+ *(.bss*)
+ .bss.dataport  0x00800342        0x1 LCD/lcdpcf8574.o
+                0x00800342                dataport
+ *(COMMON)
+ COMMON         0x00800343        0x2 hdlc/client.o
+                0x00800343                connecting_frame_timeout_bf
+ COMMON         0x00800345        0x6 LCD/Lcd_print.o
+                0x00800345                textCounter
+ COMMON         0x0080034b        0x1 LCD/pcf8574.o
+                0x0080034b                pcf8574_pinstatus
+ COMMON         0x0080034c       0x44 UART/uart.o
+                0x0080034c                uartRxBuffer
+                0x0080036e                uartTxBuffer
+ COMMON         0x00800390        0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o)
+                0x00800390                __iob
+                0x00800396                PROVIDE (__bss_end, .)
+                0x00001d52                __data_load_start = LOADADDR (.data)
+                0x00001f94                __data_load_end = (__data_load_start + SIZEOF (.data))
+
+.noinit         0x00800396        0x0
+                [!provide]                PROVIDE (__noinit_start, .)
+ *(.noinit*)
+                [!provide]                PROVIDE (__noinit_end, .)
+                0x00800396                _end = .
+                [!provide]                PROVIDE (__heap_start, .)
+
+.eeprom         0x00810000        0x0
+ *(.eeprom*)
+                0x00810000                __eeprom_end = .
+
+.fuse
+ *(.fuse)
+ *(.lfuse)
+ *(.hfuse)
+ *(.efuse)
+
+.lock
+ *(.lock*)
+
+.signature
+ *(.signature*)
+
+.user_signatures
+ *(.user_signatures*)
+
+.stab
+ *(.stab)
+
+.stabstr
+ *(.stabstr)
+
+.stab.excl
+ *(.stab.excl)
+
+.stab.exclstr
+ *(.stab.exclstr)
+
+.stab.index
+ *(.stab.index)
+
+.stab.indexstr
+ *(.stab.indexstr)
+
+.comment        0x00000000       0x8c
+ *(.comment)
+ .comment       0x00000000       0x30 hdlc/client.o
+                                 0x31 (size before relaxing)
+ .comment       0x00000030       0x30 hdlc/fcs.o
+                                 0x31 (size before relaxing)
+ .comment       0x00000060       0x31 hdlc/hdlc.o
+ .comment       0x00000060       0x31 LCD/lcdpcf8574.o
+ .comment       0x00000060       0x31 LCD/Lcd_print.o
+ .comment       0x00000060       0x31 LCD/pcf8574.o
+ .comment       0x00000060       0x31 LCD/twimaster.o
+ .comment       0x00000060       0x31 main.o
+ .comment       0x00000060       0x31 protocol/protocol.o
+ .comment       0x00000060       0x31 UART/circular_buf.o
+ .comment       0x00000060       0x31 UART/uart.o
+ .comment       0x00000060       0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o)
+ .comment       0x00000060       0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o)
+ .comment       0x00000060       0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o)
+                                 0x2d (size before relaxing)
+ .comment       0x0000008c       0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o)
+ .comment       0x0000008c       0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o)
+
+.note.gnu.avr.deviceinfo
+                0x00000000       0x40
+ .note.gnu.avr.deviceinfo
+                0x00000000       0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+
+.note.gnu.build-id
+ *(.note.gnu.build-id)
+
+.debug
+ *(.debug)
+
+.line
+ *(.line)
+
+.debug_srcinfo
+ *(.debug_srcinfo)
+
+.debug_sfnames
+ *(.debug_sfnames)
+
+.debug_aranges  0x00000000      0x320
+ *(.debug_aranges)
+ .debug_aranges
+                0x00000000       0x48 hdlc/client.o
+ .debug_aranges
+                0x00000048       0x20 hdlc/fcs.o
+ .debug_aranges
+                0x00000068       0x68 hdlc/hdlc.o
+ .debug_aranges
+                0x000000d0       0x90 LCD/lcdpcf8574.o
+ .debug_aranges
+                0x00000160       0x38 LCD/Lcd_print.o
+ .debug_aranges
+                0x00000198       0x68 LCD/pcf8574.o
+ .debug_aranges
+                0x00000200       0x58 LCD/twimaster.o
+ .debug_aranges
+                0x00000258       0x20 main.o
+ .debug_aranges
+                0x00000278       0x28 protocol/protocol.o
+ .debug_aranges
+                0x000002a0       0x40 UART/circular_buf.o
+ .debug_aranges
+                0x000002e0       0x40 UART/uart.o
+
+.debug_pubnames
+ *(.debug_pubnames)
+
+.debug_info     0x00000000     0x378f
+ *(.debug_info .gnu.linkonce.wi.*)
+ .debug_info    0x00000000      0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ .debug_info    0x000005f4      0x5e7 hdlc/client.o
+ .debug_info    0x00000bdb       0xa5 hdlc/fcs.o
+ .debug_info    0x00000c80      0x685 hdlc/hdlc.o
+ .debug_info    0x00001305      0x7d2 LCD/lcdpcf8574.o
+ .debug_info    0x00001ad7      0x45c LCD/Lcd_print.o
+ .debug_info    0x00001f33      0x54c LCD/pcf8574.o
+ .debug_info    0x0000247f      0x1c4 LCD/twimaster.o
+ .debug_info    0x00002643      0x91f main.o
+ .debug_info    0x00002f62      0x30c protocol/protocol.o
+ .debug_info    0x0000326e      0x1fc UART/circular_buf.o
+ .debug_info    0x0000346a      0x325 UART/uart.o
+
+.debug_abbrev   0x00000000     0x1589
+ *(.debug_abbrev)
+ .debug_abbrev  0x00000000      0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ .debug_abbrev  0x000005a2      0x1fc hdlc/client.o
+ .debug_abbrev  0x0000079e       0x83 hdlc/fcs.o
+ .debug_abbrev  0x00000821      0x194 hdlc/hdlc.o
+ .debug_abbrev  0x000009b5      0x266 LCD/lcdpcf8574.o
+ .debug_abbrev  0x00000c1b      0x163 LCD/Lcd_print.o
+ .debug_abbrev  0x00000d7e      0x1b6 LCD/pcf8574.o
+ .debug_abbrev  0x00000f34       0xe5 LCD/twimaster.o
+ .debug_abbrev  0x00001019      0x17c main.o
+ .debug_abbrev  0x00001195      0x137 protocol/protocol.o
+ .debug_abbrev  0x000012cc      0x175 UART/circular_buf.o
+ .debug_abbrev  0x00001441      0x148 UART/uart.o
+
+.debug_line     0x00000000     0x1e37
+ *(.debug_line .debug_line.* .debug_line_end)
+ .debug_line    0x00000000      0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ .debug_line    0x00000133      0x32b hdlc/client.o
+ .debug_line    0x0000045e       0x47 hdlc/fcs.o
+ .debug_line    0x000004a5      0x497 hdlc/hdlc.o
+ .debug_line    0x0000093c      0x4bb LCD/lcdpcf8574.o
+ .debug_line    0x00000df7      0x1e8 LCD/Lcd_print.o
+ .debug_line    0x00000fdf      0x36c LCD/pcf8574.o
+ .debug_line    0x0000134b      0x2bf LCD/twimaster.o
+ .debug_line    0x0000160a      0x2af main.o
+ .debug_line    0x000018b9      0x25e protocol/protocol.o
+ .debug_line    0x00001b17       0xfa UART/circular_buf.o
+ .debug_line    0x00001c11      0x226 UART/uart.o
+
+.debug_frame    0x00000000      0x9a0
+ *(.debug_frame)
+ .debug_frame   0x00000000      0x104 hdlc/client.o
+ .debug_frame   0x00000104       0x24 hdlc/fcs.o
+ .debug_frame   0x00000128      0x178 hdlc/hdlc.o
+ .debug_frame   0x000002a0      0x154 LCD/lcdpcf8574.o
+ .debug_frame   0x000003f4      0x124 LCD/Lcd_print.o
+ .debug_frame   0x00000518       0xe0 LCD/pcf8574.o
+ .debug_frame   0x000005f8       0xa0 LCD/twimaster.o
+ .debug_frame   0x00000698       0x7c main.o
+ .debug_frame   0x00000714       0xd0 protocol/protocol.o
+ .debug_frame   0x000007e4       0x74 UART/circular_buf.o
+ .debug_frame   0x00000858      0x148 UART/uart.o
+
+.debug_str      0x00000000      0xcc5
+ *(.debug_str)
+ .debug_str     0x00000000      0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o
+ .debug_str     0x00000208      0x387 hdlc/client.o
+                                0x412 (size before relaxing)
+ .debug_str     0x0000058f       0x41 hdlc/fcs.o
+                                0x11c (size before relaxing)
+ .debug_str     0x000005d0       0xcf hdlc/hdlc.o
+                                0x302 (size before relaxing)
+ .debug_str     0x0000069f      0x17f LCD/lcdpcf8574.o
+                                0x2ca (size before relaxing)
+ .debug_str     0x0000081e       0xfe LCD/Lcd_print.o
+                                0x287 (size before relaxing)
+ .debug_str     0x0000091c      0x123 LCD/pcf8574.o
+                                0x2e3 (size before relaxing)
+ .debug_str     0x00000a3f       0x49 LCD/twimaster.o
+                                0x1c6 (size before relaxing)
+ .debug_str     0x00000a88       0xe8 main.o
+                                0x4ac (size before relaxing)
+ .debug_str     0x00000b70       0x7d protocol/protocol.o
+                                0x232 (size before relaxing)
+ .debug_str     0x00000bed       0x7d UART/circular_buf.o
+                                0x1d1 (size before relaxing)
+ .debug_str     0x00000c6a       0x5b UART/uart.o
+                                0x242 (size before relaxing)
+
+.debug_loc      0x00000000     0x2fe7
+ *(.debug_loc)
+ .debug_loc     0x00000000      0x534 hdlc/client.o
+ .debug_loc     0x00000534       0x26 hdlc/fcs.o
+ .debug_loc     0x0000055a      0xb7e hdlc/hdlc.o
+ .debug_loc     0x000010d8      0x5b5 LCD/lcdpcf8574.o
+ .debug_loc     0x0000168d      0x4ac LCD/Lcd_print.o
+ .debug_loc     0x00001b39      0x69d LCD/pcf8574.o
+ .debug_loc     0x000021d6      0x12d LCD/twimaster.o
+ .debug_loc     0x00002303      0x21a main.o
+ .debug_loc     0x0000251d      0x578 protocol/protocol.o
+ .debug_loc     0x00002a95      0x140 UART/circular_buf.o
+ .debug_loc     0x00002bd5      0x412 UART/uart.o
+
+.debug_macinfo
+ *(.debug_macinfo)
+
+.debug_weaknames
+ *(.debug_weaknames)
+
+.debug_funcnames
+ *(.debug_funcnames)
+
+.debug_typenames
+ *(.debug_typenames)
+
+.debug_varnames
+ *(.debug_varnames)
+
+.debug_pubtypes
+ *(.debug_pubtypes)
+
+.debug_ranges   0x00000000      0x2e8
+ *(.debug_ranges)
+ .debug_ranges  0x00000000       0x50 hdlc/client.o
+ .debug_ranges  0x00000050       0x10 hdlc/fcs.o
+ .debug_ranges  0x00000060       0x58 hdlc/hdlc.o
+ .debug_ranges  0x000000b8       0x98 LCD/lcdpcf8574.o
+ .debug_ranges  0x00000150       0x28 LCD/Lcd_print.o
+ .debug_ranges  0x00000178       0x58 LCD/pcf8574.o
+ .debug_ranges  0x000001d0       0x48 LCD/twimaster.o
+ .debug_ranges  0x00000218       0x40 main.o
+ .debug_ranges  0x00000258       0x30 protocol/protocol.o
+ .debug_ranges  0x00000288       0x30 UART/circular_buf.o
+ .debug_ranges  0x000002b8       0x30 UART/uart.o
+
+.debug_macro
+ *(.debug_macro)
+OUTPUT(hdlc_screen.elf elf32-avr)
+LOAD linker stubs
diff --git a/hdlc_screen/Debug/hdlc_screen.srec b/hdlc_screen/Debug/hdlc_screen.srec
new file mode 100644
index 0000000..33acdeb
--- /dev/null
+++ b/hdlc_screen/Debug/hdlc_screen.srec
@@ -0,0 +1,509 @@
+S013000068646C635F73637265656E2E7372656397
+S11300000C9434000C9451000C9451000C94510045
+S11300100C9451000C9451000C9451000C94510018
+S11300200C9451000C9451000C9451000C94510008
+S11300300C9451000C9451000C9451000C945100F8
+S11300400C9451000C9451000C94100B0C9451001E
+S11300500C94420B0C9451000C9451000C945100DC
+S11300600C9451000C94510011241FBECFEFD8E022
+S1130070DEBFCDBF13E0A0E0B1E0E2E5FDE102C0E8
+S113008005900D92A234B107D9F723E0A2E4B3E0BE
+S113009001C01D92A639B207E1F70E9426070C940D
+S11300A0A70E0C940000FC0181E0808372836183BD
+S11300B0709344036093430384E1838314828FEF3A
+S11300C09FEF9683858390878783928781871486A1
+S11300D01386168615860895FC0183E08083808943
+S11300E0887F808B81E0878713820895FC0180815B
+S11300F0823089F485E080834134510578F4828923
+S1130100887F828B118A748B638B568B458B138209
+S113011080E090E008958CEF9FEF08958FEF9FEFBC
+S11301200895CF92DF92EF92FF920F931F93CF9394
+S1130130DF9300D0CDB7DEB77C016B015A834983CE
+S1130140FC0180818530D1F445895689638974899D
+S11301508E010F5F1F4F9601C70141960E9448030D
+S1130160992364F49F938F9380E091E09F938F93FE
+S11301700E94990B0F900F900F900F90F7018081C0
+S11301808330D1F48E010F5F1F4F960140E050E0A1
+S113019060E070E0C7010F960E944803992364F45D
+S11301A09F938F9380E091E09F938F930E94990B8C
+S11301B00F900F900F900F90F70180818430D1F44D
+S11301C08E010F5F1F4F960140E050E060E070E049
+S11301D0C70147960E944803992364F49F938F9321
+S11301E080E091E09F938F930E94990B0F900F9062
+S11301F00F900F9080E090E00F900F90DF91CF91DF
+S11302001F910F91FF90EF90DF90CF9008952F9260
+S11302103F924F925F926F927F928F929F92AF9292
+S1130220BF92CF92DF92EF92FF920F931F93CF93DF
+S1130230DF9300D000D0CDB7DEB75C015C834B8385
+S1130240222E332E38018DB69EB6C42ED52E8DB7F0
+S11302509EB78C199D090FB6F8949EBF0FBE8DBF33
+S1130260EDB7FEB731962F01CE0103967C018F01C5
+S11302709601AB01BE016F5F7F4FC50104960E94DA
+S1130280220299230CF448C08A81877090E0F5011A
+S1130290238130E08217930751F084E08083808DBE
+S11302A0887F808F82E0878B8AEF9FEF35C08981BA
+S11302B0813049F018F08230D9F025C0F2E0CF1A2D
+S11302C0D10829F40EC082E0F50180831CC0F2013C
+S11302D0A22DB32D4C0C5D1C81918D93E415F50575
+S11302E0D9F7F301D182C08286E0F50180830BC087
+S11302F084E0F5018083808D887F808F82E0878B06
+S11303008AEF9FEF09C08091430390914403F50164
+S11303109283818380E090E00FB6F8949EBE0FBE76
+S11303208DBE0F900F900F900F90DF91CF911F9182
+S11303300F91FF90EF90DF90CF90BF90AF909F9080
+S11303408F907F906F905F904F903F902F90089583
+S1130350FC0121813281261B370B32832183121643
+S113036013061CF480E090E008958BEF9FEF08954E
+S1130370FC01E627FF27EE0FFF1FEA5EFE4F892FE1
+S1130380992720813181822793270895FA0193E8E0
+S1130390980F923070F420813181A9014F5F5F4F33
+S11303A051834083DB01A20FB31F9DE79C9390E22E
+S11303B0892720813181A9014F5F5F4F5183408399
+S11303C0FB01E20FF31F80830895982F80FF0BC079
+S11303D086958695837011F082E001C081E0929544
+S11303E09695977003C09695977080E097700895DE
+S11303F0FC019081913049F018F0923061F011C005
+S113040081818770880F8061089581818295880F2A
+S1130410807E8160089581818295880F807E8960C5
+S1130420089580E00895FC018FEF9FEF928381830C
+S1130430968385839483838312861186108617821C
+S1130440108208953F924F925F926F927F928F92A3
+S11304509F92AF92BF92CF92DF92EF92FF920F934F
+S11304601F93CF93DF9300D000D0CDB7DEB70097B2
+S113047009F4EAC06115710509F4E9C04115510593
+S113048009F4E8C00115110509F4E7C0E114F10409
+S113049009F4E6C0380149017A8369839C838B831C
+S11304A02115310509F499C08A01C12CD12C689415
+S11304B0442445F833243394590121E0A21AB108A5
+S11304C0AB81BC8113968D919C91149799239CF4D4
+S11304D0F80180818E3709F070C0CA14DB0420F45F
+S11304E081818E3709F470C0EB81FC81878190850E
+S11304F09483838362C0F80150802EE7521219C09E
+S1130500CA14DB0420F421812E3709F45DC0AB81C9
+S1130510BC8117962D913C911897AC014F5F5F4FAA
+S11305204217530709F450C016963C932E9315971F
+S11305305DC0BDE75B1204C0EB81FC8130823DC02D
+S1130540AB81BC818C91882319F01C925080542477
+S1130550652DEB81FC81818192810E94B801AB8180
+S1130560BC8112969C938E93119717962D913C9172
+S1130570189713968D919C91149702962817390712
+S113058041F4852D0E94E501E981FA8191838083FC
+S113059014C0821793078CF4AB81BC8119968D919A
+S11305A09C911A979C012F5F3F4F1A963C932E9370
+S11305B01997F301E80FF91F5082EB81FC818781C1
+S11305C09085019690878783FFEFCF1ADF0A0F5F2C
+S11305D01F4F8C149D0409F073CFAB81BC8113961B
+S11305E08D919C91149799233CF06401EB81FC81DB
+S11305F025813681332334F4D7011D921C928EE079
+S113060092ED30C00496281739073CF0EB81FC8149
+S113061081819281883B904F31F0D701CD92DC9259
+S11306200EE012ED0AC0EB81FC8181859285029770
+S1130630D7018D939C930C2D1D2D8B819C810E9441
+S11306401302802F912F0EC08EE092ED0BC08EE02E
+S113065092ED08C08EE092ED05C08EE092ED02C0EE
+S11306608EE092ED0F900F900F900F90DF91CF914D
+S11306701F910F91FF90EF90DF90CF90BF90AF90BC
+S11306809F908F907F906F905F904F903F900895D0
+S11306905F926F927F928F929F92AF92BF92CF920E
+S11306A0DF92EF92FF920F931F93CF93DF9300D0CB
+S11306B0CDB7DEB7009709F473C06115710521F455
+S11306C04115510509F06FC02115310509F46EC0BB
+S11306D00115110509F46DC0380179015A014B0166
+S11306E08C0181E090E09A8389838EE7F90180830D
+S11306F06FEF8FEF9FEF0E94B8016C01AE014F5F67
+S11307005F4FB7018FEF0E94C601C8010E94F80134
+S1130710582E682FC6010E94B8016C01AE014F5FCC
+S11307205F4FB701852D0E94C601F80180818111B8
+S113073019C0A114B104B1F084018A0C9B1C5801A6
+S1130740F80161918F01C6010E94B8016C01AE01EC
+S11307504F5F5F4FB701F50180810E94C60180168B
+S1130760910669F7C094D094AE014F5F5F4FB70113
+S11307708C2D0E94C601AE014F5F5F4FB7018D2DD6
+S11307800E94C60189819A81F701E80FF91F2EE7BB
+S113079020830196F3019183808380E090E00BC075
+S11307A08EE092ED08C08EE092ED05C08EE092EDF1
+S11307B002C08EE092ED0F900F90DF91CF911F91C8
+S11307C00F91FF90EF90DF90CF90BF90AF909F90EC
+S11307D08F907F906F905F900895CF93882331F02E
+S11307E08091420381608093420305C0809142035B
+S11307F08E7F809342038091420382608093420300
+S11308006091420380E00E94950662E080E00E94CD
+S1130810D60600C064E080E00E948106C82F62E032
+S113082080E00E94DA0600C062E080E00E94D60602
+S113083000C064E080E00E948106C295C07F8F7092
+S1130840C82B62E080E00E94DA068C2FCF910895D5
+S113085080E00E94ED038823DCF300C080E00E9466
+S1130860ED03089562E080E00E94D60600C062E0D5
+S113087080E00E94DA060895CF93C82F662331F0F2
+S11308808091420381608093420305C080914203BA
+S11308908E7F80934203809142038D7F8093420335
+S11308A06091420380E00E949506809142038F7715
+S11308B080934203809142038F7B80934203809113
+S11308C042038F7D80934203809142038F7E809305
+S11308D04203CC232CF4809142038068809342032A
+S11308E0C6FF05C080914203806480934203C5FF24
+S11308F005C080914203806280934203C4FF05C017
+S1130900809142038061809342036091420380E0BE
+S11309100E9495060E943204809142038F7780934F
+S11309204203809142038F7B809342038091420370
+S11309308F7D80934203809142038F7E8093420394
+S1130940C3FF05C080914203806880934203C2FFC5
+S113095005C080914203806480934203C1FF05C0B7
+S113096080914203806280934203C0FF05C080915E
+S113097042038061809342036091420380E00E94BD
+S113098095060E9432048091420380618093420361
+S11309908091420380628093420380914203806489
+S11309A08093420380914203806880934203609164
+S11309B0420380E00E949506CF910895CF93C82FFB
+S11309C00E94280460E08C2F0E943C04CF9108957B
+S11309D0611104C080580E94DE04089580540E946E
+S11309E0DE04089581E00E94DE040895882331F036
+S11309F080914203877F8093420305C08091420324
+S1130A008860809342036091420380E00E949506CF
+S1130A10089582E00E94DE040895CF93C82F0E94B7
+S1130A202804CA3049F4803410F080E001C080E426
+S1130A3080580E94DE0413C0803129F460E080EC09
+S1130A400E943C0406C0803521F460E080E80E94E6
+S1130A503C040E94280461E08C2F0E943C04CF9146
+S1130A600895CF93DF93EC012196FC0180818823C4
+S1130A7029F00E940D0589918111FBCFDF91CF915F
+S1130A8008951F93CF93DF93182F0E947806109236
+S1130A9042036091420380E00E94950680EA9FE051
+S1130AA00197F1F780914203806280934203809121
+S1130AB042038061809342036091420380E00E947C
+S1130AC095060E94320480EE94E00197F1F70E94AB
+S1130AD03204C0E1D0E0CE010197F1F70E94320464
+S1130AE0CE010197F1F7809142038F7E80934203F8
+S1130AF06091420380E00E9495060E94320421978F
+S1130B00F1F788E20E94DE0488E00E94DE040E947D
+S1130B10F20486E00E94DE04812F0E94DE04DF914D
+S1130B20CF911F9108958DE00E9441050E9409050F
+S1130B3080E00E94F6040895CF92DF92EF92FF9234
+S1130B400F931F93CF93DF938C017B01C901F801AD
+S1130B5001900020E9F73197BF01601B710B0E94DF
+S1130B60760B670120E1C20ED11CE7019C012E190E
+S1130B703F09F80101900020E9F73197BF01601B9C
+S1130B80710BC9018C0F9D1F0E94760BF801E80FB1
+S1130B90F91F80818993CC15DD0559F7F701108A77
+S1130BA0DF91CF911F910F91FF90EF90DF90CF9045
+S1130BB00895AF92BF92CF92DF92EF92FF920F937C
+S1130BC01F931F930F93FF92EF925F934F933F9363
+S1130BD02F939F938F937F936F9386E193E09F93DB
+S1130BE08F93BF92AF92DF92CF920E94AF0B8DB7DB
+S1130BF09EB742960FB6F8949EBF0FBE8DBF1F914D
+S1130C000F91FF90EF90DF90CF90BF90AF90089539
+S1130C106F927F92AF92BF92CF92DF92EF92FF9248
+S1130C200F931F93CF93DF93CDB7DEB7C254D1098F
+S1130C300FB6F894DEBF0FBECDBF3C01209149032F
+S1130C4030914A0341E150E0BE016F5F7F4F0E9443
+S1130C509C05F301E85BFF4FE080F1800281138182
+S1130C60349720813181428153813497608171812D
+S1130C70828193810F2EF1E1AF2EB12CF02DFE0174
+S1130C8072966F010E94D90540E150E0BE016F5F8A
+S1130C907F4FCE0183960E948A0B40E150E0B6015B
+S1130CA0CE01C3960E948A0B60E080E00E94E804B3
+S1130CB0CE0183960E94310561E080E00E94E80441
+S1130CC0CE01C3960E943105CE5BDF4F0FB6F89478
+S1130CD0DEBF0FBECDBFDF91CF911F910F91FF906B
+S1130CE0EF90DF90CF90BF90AF907F906F9008957A
+S1130CF00E94DE0683E08A95F1F7000010924B0310
+S1130D00089581110EC0683070F480914B03082E51
+S1130D10000C990B02C0959587956A95E2F781704E
+S1130D2008958FEF08958FEF0895CF9381110DC02B
+S1130D30C62F60934B038EE40E94E4068C2F0E941E
+S1130D4014070E940B0780E001C08FEFCF91089534
+S1130D50CF93DF93811124C0683020F580914B0339
+S1130D60442349F0C1E0D0E002C0CC0FDD1F6A95F6
+S1130D70E2F7C82B09C0C1E0D0E002C0CC0FDD1FF0
+S1130D806A95E2F7C095C823C0934B038EE40E9492
+S1130D90E4068C2F0E9414070E940B0780E003C016
+S1130DA08FEF01C08FEFDF91CF91089541E00E9452
+S1130DB0A806089540E00E94A80608951092B9007C
+S1130DC08DEF8093B800089594EA9093BC00ECEB07
+S1130DD0F0E090819923ECF79091B900987F9830D6
+S1130DE011F09031A1F48093BB0084E88093BC009F
+S1130DF0ECEBF0E080818823ECF79091B900987FC8
+S1130E00983139F081E0903429F480E0089581E04C
+S1130E10089580E0089584E98093BC00ECEBF0E051
+S1130E20808184FDFDCF08958093BB0084E8809386
+S1130E30BC00ECEBF0E080818823ECF79091B900E2
+S1130E40987F81E0983209F480E008954F925F9290
+S1130E506F927F928F929F92AF92BF92CF92DF92C6
+S1130E60EF92FF920F931F93CF93DF93CDB7DEB72B
+S1130E70C350D2400FB6F894DEBF0FBECDBF0E9460
+S1130E8093050E949E0A68EC70E0CE0101960E94D0
+S1130E905300CE0101960E946C004AE050E0BE016E
+S1130EA0665E7F4FCE0101960E9491006AE070E079
+S1130EB0CE014A960E94AA0A64E170E0CE018051F4
+S1130EC09E4F0E94CE0A61E070E0CE0101960E941E
+S1130ED0A801059681F44AE050E0BE01665E7F4FAA
+S1130EE0CE0101960E9491006AE070E0CE014A961C
+S1130EF00E94AA0AE1CF00E010E020E030E044E1E3
+S1130F0050E0BE0160517E4FCE0101960E94070160
+S1130F108C019923ACF40A3F8FEF1807B1F444E134
+S1130F2050E0BE01605A7E4FCE0101960E949100AE
+S1130F3064E170E0CE01805A9E4F0E94AA0A05C067
+S1130F408981823009F0B8CF03C0802F912FFEC071
+S1130F5084EA90E7ADE9BFE38CA39DA3AEA3BFA34E
+S1130F608DEC9CECA0EBB1E488A799A7AAA7BBA73A
+S1130F7080E090E0A8ECB2E48CA79DA7AEA7BFA741
+S1130F8083E090E099AB88AB85E293E09BAB8AABBE
+S1130F9082E090E09DAB8CAB2E01E6E74E0E511C37
+S1130FA05F924F923E01F6E36F0E711C7F926F9237
+S1130FB08CA09DA0AEA0BFA0C8A4D9A4EAA4FBA401
+S1130FC00CA51DA52EA53FA548A959A96AA97BA9C9
+S1130FD08CA99DA90E945C09F20140815181B30151
+S1130FE0CE0101960E94760048E450E0BE016858A4
+S1130FF07F4FCE0101960E94910068E470E0CE011B
+S113100088589F4F0E94AA0A0F900F900F900F903C
+S113101060E970E0CE01805A9E4F0E94CE0A61E0E2
+S113102070E0CE0101960E94A801059689F448E477
+S113103050E0BE0168587F4FCE0101960E94910096
+S113104068E470E0CE0188589F4F0E94AA0AE0CF5E
+S11310508E0113959E0120543F4F40E950E0BE019C
+S1131060605A7E4FCE0101960E9407018C0199239C
+S11310709CF40696B1F444E150E0BE0160517E4F09
+S1131080CE0101960E94910064E170E0CE0180518E
+S11310909E4F0E94AA0A05C08981863009F0B8CF04
+S11310A003C0802F912F52C0C050DF4F68817981D7
+S11310B0C050D140AE014E5F5E4FCE0180549F4F71
+S11310C00E94BE08CE5FDE4F88819981AA81BB81D0
+S11310D0C250D140CC5ADE4F88839983AA83BB8304
+S11310E0C455D140CA5FDE4F88819981AA81BB81F2
+S11310F0C650D140C85ADE4F88839983AA83BB83E4
+S1131100C855D140C65FDE4F88819981AA81BB81D1
+S1131110CA50D140C45ADE4F88839983AA83BB83C3
+S1131120CC55D140C05FDE4F68817981C051D14038
+S11311304FE350E0CE018C5E9E4F0E948A0BCE019D
+S11311408C5E9E4F0E94080680E090E0CD5FDD4FEC
+S11311500FB6F894DEBF0FBECDBFDF91CF911F91C4
+S11311600F91FF90EF90DF90CF90BF90AF909F9042
+S11311708F907F906F905F904F9008958F929F9281
+S1131180AF92BF92CF92DF92EF92FF920F931F9391
+S1131190CF93DF93CDB7DEB7C054D1090FB6F8941F
+S11311A0DEBF0FBECDBF4B01672B09F46CC020E03E
+S11311B030E060E070E0A12CB12C6E01E5E0CE0ED1
+S11311C0D11CFE0131967F01FC01E20FF31F208147
+S11311D0211127C0DB011196A80FB91FFE0131961A
+S11311E02D912193EC15FD05D9F76C5F7F4FF50127
+S11311F0EE0FFF1FEE0FFF1FE40FF51F09811A8189
+S11312002B813C810083118322833383FA0124855B
+S113121035852F5F3F4F3587248795012F5F3F4FDB
+S11312205901FC01E60FF71F2081213021F59B01B4
+S11312302F5F3F4FFC01E20FF31FE081EE2399F093
+S11312406E5F7F4FDC01A60FB71FF701B9016F5F17
+S11312507F4F2D91219330E08F010E191F09021742
+S11312601307ACF301C0B90129813A81FA01378728
+S11312702687118A108A6F5F7F4F9B016815790555
+S113128008F4A2CF02C0A12CB12CFA01B586A48621
+S1131290C05CDF4F0FB6F894DEBF0FBECDBFDF9149
+S11312A0CF911F910F91FF90EF90DF90CF90BF905F
+S11312B0AF909F908F9008954F925F926F927F921C
+S11312C08F929F92AF92BF92CF92DF92EF92FF9252
+S11312D00F931F93CF93DF93CDB7DEB7C255D109D8
+S11312E00FB6F894DEBF0FBECDBF22968FAE229705
+S11312F023969FAE23972496AFAE24972596BFAE30
+S113130025972696CFAE26972796DFAE2797289661
+S1131310EFAE28972996FFAE29972A960FAF2A9702
+S11313202B961FAF2B972C962FAF2C972D963FAF54
+S11313302D972E964FAF2E972F965FAF2F976096CF
+S11313406FAF609761967FAF619762968FAF629738
+S113135063969FAF6397A7960EAD1FADA7972F9681
+S1131360CEACDFAC2F9763966EAD7FAD6397C1149F
+S1131370D10409F466C07801CE018F5B9F4F5601FA
+S1131380AA0CBB1CAA0CBB1CA80EB91EAE014B5F59
+S11313905F4FF7011192DC014D905D906D907D904F
+S11313A0CD0149825A826B827C82DE0111963D9185
+S11313B03193A417B507D9F7B5E0EB0EF11C8A15E4
+S11313C09B0539F79601220F331F220F331F2C0D73
+S11313D03D1D6115710509F1D801A20FB31F81E00C
+S11313E08C93D9011196A00FB11F2E5F3F4F6C93C0
+S11313F061968EAD9FAD61979A838983DE011196C4
+S1131400F801E20FF31F80E090E02F5F3F4F4D9112
+S11314104193019686179707C0F3A996EEADFFADE9
+S1131420A9973183208313C081E0F801808361830D
+S113143061968EAD9FAD61979A83898322E030E0F7
+S1131440DDCF6115710581F720E030E0E6CFCE5A9B
+S1131450DF4F0FB6F894DEBF0FBECDBFDF91CF9143
+S11314601F910F91FF90EF90DF90CF90BF90AF90BE
+S11314709F908F907F906F905F904F900895FC01A4
+S113148081E090E030A121A1321711F080E090E0DA
+S11314900895FC0121A130E02F5F3F4F2F71307878
+S11314A0332334F421503109206E3F6F2F5F3F4FB7
+S11314B0FC0140A150E081E090E02417350711F0D1
+S11314C080E090E008951F93CF93DF93EC01162FF3
+S11314D00E94490A892B81F489A190E0FE01E80F5A
+S11314E0F91F108301968F719078992324F4019742
+S11314F0806E9F6F019689A3DF91CF911F9108950C
+S1131500FC0120A181A12817B1F030E0DF01A20F76
+S1131510B31F4C9150E02F5F3F4F2F71307833232E
+S113152034F421503109206E3F6F2F5F3F4F20A3C9
+S1131530842F952F08958FEF9FEF089588EF809360
+S1131540C10086E08093C2001092C50087E68093B4
+S1131550C40008950F931F93CF93DF936115710512
+S113156099F08C01EC01060F171F8EE693E00E94A0
+S1131570490A892B49F4699170E08EE693E00E9450
+S1131580630AC017D10789F7E1ECF0E08081806439
+S11315908083DF91CF911F910F9108958F929F9235
+S11315A0AF92BF92CF92DF92EF92FF920F931F936D
+S11315B0CF93DF938B01EC01C12CD12C76014B012D
+S11315C0A12CB12C0AC08CE493E00E94800A899378
+S11315D08FEFC81AD80AE80AF80A8CE493E00E944C
+S11315E03F0A892B29F4C814D904EA04FB0458F3EC
+S11315F020E030E00C151D052E053F0510F0C60156
+S113160002C08FEF9FEFDF91CF911F910F91FF9059
+S1131610EF90DF90CF90BF90AF909F908F90089500
+S11316201F920F920FB60F9211242F933F934F9353
+S11316305F936F937F938F939F93AF93BF93CF9356
+S1131640EF93FF93C091C6008CE493E00E94490A93
+S1131650892B31F46C2F70E08CE493E00E94630AD0
+S1131660FF91EF91CF91BF91AF919F918F917F9116
+S11316706F915F914F913F912F910F900FBE0F90FB
+S11316801F9018951F920F920FB60F9211242F934B
+S11316903F934F935F936F937F938F939F93AF93F6
+S11316A0BF93EF93FF938EE693E00E943F0A892B4A
+S11316B039F48EE693E00E94800A8093C60005C048
+S11316C0E1ECF0E080818F7B8083FF91EF91BF910B
+S11316D0AF919F918F917F916F915F914F913F91C6
+S11316E02F910F900FBE0F901F901895AA1BBB1B34
+S11316F051E107C0AA1FBB1FA617B70710F0A61B0E
+S1131700B70B881F991F5A95A9F780959095BC012E
+S1131710CD010895FB01DC014150504048F0019097
+S11317200D920020C9F701C01D9241505040E0F7CE
+S11317300895A0E0B0E0EFE9FBE00C94800EAE0168
+S11317404B5F5F4FFA0161917191AF0180919203F8
+S1131750909193030E94DF0BE2E00C949C0EAEE0A8
+S1131760B0E0E5EBFBE00C947E0E0D891E898F89B9
+S1131770988D26E02C831A83098397FF02C080E0AA
+S113178090E801979E838D83AE01455E5F4F698D1E
+S11317907A8DCE0101960E94DF0B4D815E8157FD4B
+S11317A00AC02F813885421753070CF49A01F801B7
+S11317B0E20FF31F10822E96E4E00C949A0EABE035
+S11317C0B0E0E5EEFBE00C94700E6C017B018A0145
+S11317D0FC0117821682838181FFCCC1CE01019660
+S11317E03C01F6019381F70193FD859193FF81916B
+S11317F07F01882309F4BAC1853239F493FD8591B8
+S113180093FF81917F01853229F4B60190E00E9413
+S1131810D60DE7CF912C212C312CFFE1F315D8F014
+S11318208B3279F038F4803279F08332A1F4232DAD
+S113183020611DC08D3261F0803369F4232D216055
+S113184016C0832D8260382EE32DE4603E2E2AC01C
+S1131850F32DF8601DC037FC2DC020ED280F2A3071
+S113186040F08E32B9F436FC81C1232D2064322E2F
+S113187019C036FE06C08AE0989E200D1124922ECF
+S113188011C0EAE02E9E200D1124222EF32DF062C9
+S11318903F2E08C08C3621F4832D8068382E02C078
+S11318A0883641F4F70193FD859193FF81917F017F
+S11318B08111B3CF982F9F7D9554933028F40C5FFA
+S11318C01F4F9FE399830DC0833631F0833771F046
+S11318D0833509F059C021C0F801808189830E5FE6
+S11318E01F4F88248394912C530113C02801F2E0E4
+S11318F04F0E511CF801A080B18036FE03C0692D43
+S113190070E002C06FEF7FEFC5010E94CB0D4C0168
+S11319108201F32DFF773F2E16C0280122E0420EEC
+S1131920511CF801A080B18036FE03C0692D70E01F
+S113193002C06FEF7FEFC5010E94C00D4C01F32D73
+S1131940F0683F2E820133FC1BC0822D90E0881684
+S11319509906B0F4B60180E290E00E94D60D2A9474
+S1131960F4CFF50137FC859137FE81915F01B60113
+S113197090E00E94D60D21102A9421E0821A910849
+S11319808114910471F7E8C0843611F0893641F569
+S1131990F80137FE07C060817181828193810C5FF9
+S11319A01F4F08C060817181072E000C880B990BB2
+S11319B00E5F1F4FF32DFF763F2E97FF09C09095C2
+S11319C08095709561957F4F8F4F9F4FF0683F2EA4
+S11319D02AE030E0A3010E94120E882E861845C02A
+S11319E0853731F4232D2F7EB22E2AE030E025C036
+S11319F0932D997FB92E8F36C1F018F4883579F07C
+S1131A00B5C0803719F0883721F0B0C0E92FE06104
+S1131A10BE2EB4FE0DC0FB2DF460BF2E09C034FEF3
+S1131A200AC0292F2660B22E06C028E030E005C087
+S1131A3020E130E002C020E132E0F801B7FE07C047
+S1131A4060817181828193810C5F1F4F06C0608128
+S1131A50718180E090E00E5F1F4FA3010E94120E7F
+S1131A60882E8618FB2DFF773F2E36FE0DC0232DC2
+S1131A702E7FA22E891458F434FE0BC032FC09C008
+S1131A80832D8E7EA82E05C0B82CA32C03C0B82CA1
+S1131A9001C0B92CA4FE0FC0FE01E80DF11D808128
+S1131AA0803321F49A2D997EA92E09C0A2FE06C086
+S1131AB0B394B39404C08A2D867809F0B394A3FC3C
+S1131AC011C0A0FE06C0B21488F4280C922C9B18F6
+S1131AD00EC0B21460F4B60180E290E00E94D60D0C
+S1131AE0B394F7CFB21418F42B1802C0982C212CFD
+S1131AF0A4FE10C0B60180E390E00E94D60DA2FEC1
+S1131B0017C0A1FC03C088E790E002C088E590E01C
+S1131B10B6010CC08A2D867859F0A1FE02C08BE272
+S1131B2001C080E2A7FC8DE2B60190E00E94D60DD0
+S1131B30891438F4B60180E390E00E94D60D9A949B
+S1131B40F7CF8A94F301E80DF11D8081B60190E08E
+S1131B500E94D60D8110F5CF222009F442CEB601A1
+S1131B6080E290E00E94D60D2A94F6CFF601868199
+S1131B70978102C08FEF9FEF2B96E2E10C948C0EBD
+S1131B80FC010590615070400110D8F78095909544
+S1131B908E0F9F1F0895FC01615070400190011049
+S1131BA0D8F7809590958E0F9F1F08950F931F93DC
+S1131BB0CF93DF93FB01238121FD03C08FEF9FEFC0
+S1131BC02CC022FF16C046815781248135814217DB
+S1131BD0530744F4A081B1819D012F5F3F4F3183AE
+S1131BE020838C93268137812F5F3F4F3783268351
+S1131BF014C08B01EC01FB010084F185E02D0995F3
+S1131C00892BE1F6D80116968D919C911797019630
+S1131C1017969C938E931697CE01DF91CF911F91C7
+S1131C200F910895FA01AA27283051F1203181F14A
+S1131C30E8946F936E7F6E5F7F4F8F4F9F4FAF4FD0
+S1131C40B1E03ED0B4E03CD0670F781F891F9A1FE3
+S1131C50A11D680F791F8A1F911DA11D6A0F711D97
+S1131C60811D911DA11D20D009F468943F912AE0A3
+S1131C70269F11243019305D3193DEF6CF0108958B
+S1131C80462F4770405D4193B3E00FD0C9F7F6CFBC
+S1131C90462F4F70405D4A3318F0495D31FD405284
+S1131CA0419302D0A9F7EACFB4E0A695979587951A
+S1131CB077956795BA95C9F70097610571050895F9
+S1131CC09B01AC010A2E06945795479537952795A5
+S1131CD0BA95C9F7620F731F841F951FA01D08953D
+S1131CE02F923F924F925F926F927F928F929F9228
+S1131CF0AF92BF92CF92DF92EF92FF920F931F9316
+S1131D00CF93DF93CDB7DEB7CA1BDB0B0FB6F894C6
+S1131D10DEBF0FBECDBF09942A88398848885F8406
+S1131D206E847D848C849B84AA84B984C884DF8077
+S1131D30EE80FD800C811B81AA81B981CE0FD11D5B
+S1131D400FB6F894DEBF0FBECDBFED010895F89431
+S1051D50FFCFBF
+S1131D5265727220696E206765745F6672616D6573
+S1131D623A2025640A000000891112239B3224467A
+S1131D72AD573665BF74488CC19D5AAFD3BE6CCA89
+S1131D82E5DB7EE9F7F88110080193331A22A556A0
+S1131D922C47B7753E64C99C408DDBBF52AEEDDA69
+S1131DA264CBFFF976E802218B301002991326677F
+S1131DB2AF763444BD554AADC3BC588ED19F6EEB49
+S1131DC2E7FA7CC8F5D983310A2091121803A77760
+S1131DD22E66B5543C45CBBD42ACD99E508FEFFB29
+S1131DE266EAFDD874C904428D5316619F702004BB
+S1131DF2A9153227BB364CCEC5DF5EEDD7FC688809
+S1131E02E1997AABF3BA85520C4397711E60A1141F
+S1131E122805B3373A26CDDE44CFDFFD56ECE998E8
+S1131E226089FBBB72AA06638F7214409D512225FE
+S1131E32AB343006B9174EEFC7FE5CCCD5DD6AA9C8
+S1131E42E3B8788AF19B87730E6295501C41A335DF
+S1131E522A24B1163807CFFF46EEDDDC54CDEBB9A8
+S1131E6262A8F99A708B088481951AA793B62CC23A
+S1131E72A5D33EE1B7F04008C919522BDB3A644EB0
+S1131E82ED5F766DFF7C899400859BB712A6ADD277
+S1131E9224C3BFF136E0C1184809D33B5A2AE55E90
+S1131EA26C4FF77D7E6C0AA583B4188691972EE356
+S1131EB2A7F23CC0B5D14229CB38500AD91B666F70
+S1131EC2EF7E744CFD5D8BB502A499961087AFF337
+S1131ED226E2BDD034C1C3394A28D11A580BE77F50
+S1131EE26E6EF55C7C4D0CC685D71EE597F4288092
+S1131EF2A1913AA3B3B2444ACD5B5669DF78600C30
+S1131F02E91D722FFB3E8DD604C79FF516E4A990F6
+S1131F122081BBB332A2C55A4C4BD7795E68E11C0F
+S1131F22680DF33F7A2E0EE787F61CC495D52AA1D5
+S1131F32A3B03882B193466BCF7A5448DD59622DEF
+S1131F42EB3C700EF91F8FF706E69DD414C5ABB1B6
+S1131F5222A0B9923083C77B4E6AD5585C49E33DCF
+S1131F626A2CF11E780F252E32662E252E32662E0D
+S1131F72252E326600776F72642077617220696E53
+S1131F82206E657720776F726C6420696F206578A4
+S1051F92000049
+S9030000FC
diff --git a/hdlc_screen/Debug/main.d b/hdlc_screen/Debug/main.d
new file mode 100644
index 0000000..90f9c28
--- /dev/null
+++ b/hdlc_screen/Debug/main.d
@@ -0,0 +1,45 @@
+main.d main.o: .././main.c .././hdlc/client.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \
+ .././hdlc/hdlc.h .././hdlc/fcs.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ .././UART/uart.h .././LCD/lcd.h .././Protocol/protocol.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h
+
+.././hdlc/client.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h:
+
+.././hdlc/hdlc.h:
+
+.././hdlc/fcs.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+.././UART/uart.h:
+
+.././LCD/lcd.h:
+
+.././Protocol/protocol.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
diff --git a/hdlc_screen/Debug/main.o b/hdlc_screen/Debug/main.o
new file mode 100644
index 0000000..b64a833
Binary files /dev/null and b/hdlc_screen/Debug/main.o differ
diff --git a/hdlc_screen/Debug/makedep.mk b/hdlc_screen/Debug/makedep.mk
new file mode 100644
index 0000000..3b06a79
--- /dev/null
+++ b/hdlc_screen/Debug/makedep.mk
@@ -0,0 +1,26 @@
+################################################################################
+# Automatically-generated file. Do not edit or delete the file
+################################################################################
+
+hdlc\client.c
+
+hdlc\fcs.c
+
+hdlc\hdlc.c
+
+LCD\lcdpcf8574.c
+
+LCD\Lcd_print.c
+
+LCD\pcf8574.c
+
+LCD\twimaster.c
+
+main.c
+
+protocol\protocol.c
+
+UART\circular_buf.c
+
+UART\uart.c
+
diff --git a/hdlc_screen/Debug/protocol/protocol.d b/hdlc_screen/Debug/protocol/protocol.d
new file mode 100644
index 0000000..492f731
--- /dev/null
+++ b/hdlc_screen/Debug/protocol/protocol.d
@@ -0,0 +1,28 @@
+protocol/protocol.d protocol/protocol.o: ../protocol/protocol.c \
+ ../protocol/protocol.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
+ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h
+
+../protocol/protocol.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
+
+c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h:
diff --git a/hdlc_screen/Debug/protocol/protocol.o b/hdlc_screen/Debug/protocol/protocol.o
new file mode 100644
index 0000000..f5f9ecc
Binary files /dev/null and b/hdlc_screen/Debug/protocol/protocol.o differ
diff --git a/Lсd_print/Lcd_print.cpp b/hdlc_screen/LCD/Lcd_print.c
similarity index 50%
rename from Lсd_print/Lcd_print.cpp
rename to hdlc_screen/LCD/Lcd_print.c
index 3c59604..848976e 100644
--- a/Lсd_print/Lcd_print.cpp
+++ b/hdlc_screen/LCD/Lcd_print.c
@@ -1,31 +1,24 @@
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <MyLCD.h>
-#include <protocol.h>
-#include <Arduino.h>
-#include <cstddef>
-
-struct DisplayData {
-    char topLine[64];
-    float value1;
-    float value2;
-    float value3;
-};
+#include "lcd_headers.h"
+#include "lcd.h"
+//#include "time.h"
+// #include <Arduino.h>
+//#include <cstddef>
 
 struct TextCounter {
     unsigned long startTime;
     int incrementValue;
 };
 
-TextCounter textCounter;
+struct TextCounter textCounter;
+
+//struct TextCounter textCounter;
 
 void Lcd_inciliation() {
     lcd_init(LCD_DISP_ON_BLINK); // инициализация дисплея
     lcd_home(); // домой курсор
     lcd_led(0); // вкл подсветки
-    textCounter.startTime = millis(); // Запоминаем время запуска программы
+    //textCounter.startTime = millis(); // Запоминаем время запуска программы
+	//Из за строчки выше все ломается
 }
 
 void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) {
@@ -42,30 +35,30 @@ void fillBuffer2(float value1, float value2, float value3, char* buffer, size_t
     snprintf(buffer, bufferSize, "%.2f.%.2f.%.2f", value1, value2, value3);
 }
 
-void printLcd(struct message* decode_message) {
-    unsigned long currentTime = millis(); // Текущее время
+void printLcd(struct DisplayData* displayData) {
+    //unsigned long currentTime = millis(); // Текущее время
     // Проверяем, прошло ли 500 мс с момента последнего увеличения incrementValue
-    if (currentTime - textCounter.startTime >= 500) {
-        textCounter.incrementValue++; // Увеличиваем incrementValue на 1
-        textCounter.startTime = currentTime; // Обновляем время
-    }
+    //if (currentTime - textCounter.startTime >= 500) {
+    //    textCounter.incrementValue++; // Увеличиваем incrementValue на 1
+    //    textCounter.startTime = currentTime; // Обновляем время
+    //}
 
-    struct DisplayData displayData;
-    strncpy(displayData.topLine, decode_message->str, sizeof(displayData.topLine) - 1);
-    displayData.topLine[sizeof(displayData.topLine) - 1] = '\0';
-    displayData.value1 = decode_message->numbers[0];
-    displayData.value2 = decode_message->numbers[1];
-    displayData.value3 = decode_message->numbers[2];
+    //struct DisplayData displayData;
+    //strncpy(displayData.topLine, decode_message->str, sizeof(displayData.topLine) - 1);
+    //displayData.topLine[sizeof(displayData.topLine) - 1] = '\0';
+    //displayData.value1 = displayDataResp->value1;
+    //displayData.value2 = displayDataResp->value2;
+    //displayData.value3 = displayDataResp->value3;
 
     // Буферы для заполнения данных
     char buffer1[17];
     char buffer2[17];
 
     // Заполнение буфера 1
-    fillBuffer1(displayData.topLine, buffer1, sizeof(buffer1), textCounter.incrementValue);
+    fillBuffer1(displayData->topLine, buffer1, sizeof(buffer1), textCounter.incrementValue);
 
     // Заполнение буфера 2
-    fillBuffer2(displayData.value1, displayData.value2, displayData.value3, buffer2, sizeof(buffer2));
+    fillBuffer2(displayData->value1, displayData->value2, displayData->value3, buffer2, sizeof(buffer2));
 
     // Создание массива для вывода на дисплей
     char displayArray[32];
@@ -80,21 +73,21 @@ void printLcd(struct message* decode_message) {
     lcd_puts(displayArray + 16); // Вывод второй половины displayArray
 }
 
-void dder() {
-    Lcd_inciliation();
-
-    uint8_t encode_message[100];
-    size_t len_encode_message = 0;
-    struct message message;
-
-
-    // Получаем данные из протокола
-    protocol_encode(message, encode_message, &len_encode_message);
-
-    // Декодируем данные из протокола
-    struct message decode_message;
-    protocol_decode(encode_message, len_encode_message, &decode_message);
-
-    // Выводим данные на экран
-    printLcd(&decode_message);
-}
\ No newline at end of file
+//void dder() {
+//    Lcd_inciliation();
+//
+//    uint8_t encode_message[100];
+//    size_t len_encode_message = 0;
+//    struct message message;
+//
+//
+//    // Получаем данные из протокола
+//    protocol_encode(message, encode_message, &len_encode_message);
+//
+//    // Декодируем данные из протокола
+//    struct message decode_message;
+//    protocol_decode(encode_message, len_encode_message, &decode_message);
+//
+//    // Выводим данные на экран
+//    printLcd(&decode_message);
+//}
\ No newline at end of file
diff --git a/MyLCD/i2cmaster.h b/hdlc_screen/LCD/i2cmaster.h
similarity index 100%
rename from MyLCD/i2cmaster.h
rename to hdlc_screen/LCD/i2cmaster.h
diff --git a/hdlc_screen/LCD/lcd.h b/hdlc_screen/LCD/lcd.h
new file mode 100644
index 0000000..f3ca4bc
--- /dev/null
+++ b/hdlc_screen/LCD/lcd.h
@@ -0,0 +1,14 @@
+#ifndef Lsd_print_h
+#define Lsd_print_h
+
+struct DisplayData {
+	char topLine[64];
+	float value1;
+	float value2;
+	float value3;
+};
+
+void Lcd_inciliation();
+void printLcd(struct DisplayData* displayData);
+
+#endif
\ No newline at end of file
diff --git a/main_sketch/MyLCD.h b/hdlc_screen/LCD/lcd_headers.h
similarity index 66%
rename from main_sketch/MyLCD.h
rename to hdlc_screen/LCD/lcd_headers.h
index f9d17f9..d4d9291 100644
--- a/main_sketch/MyLCD.h
+++ b/hdlc_screen/LCD/lcd_headers.h
@@ -1,9 +1,14 @@
-
-#ifndef MYLCD_H_
-#define MYLCD_H_
+/*
+ * lcd_headers.h
+ *
+ * Created: 22.02.2024 15:16:19
+ *  Author: 79513
+ */ 
 
 
-// ���������� ��� ����
+#ifndef LCD_HEADERS_H_
+#define LCD_HEADERS_H_
+
 #include <avr/io.h>
 #include <util/delay.h>
 #include <stdlib.h>
@@ -18,5 +23,4 @@
 #include "pcf8574.h"
 #include "i2cmaster.h"
 
-
-#endif
\ No newline at end of file
+#endif /* LCD_HEADERS_H_ */
\ No newline at end of file
diff --git a/main_sketch/lcdpcf8574.cpp b/hdlc_screen/LCD/lcdpcf8574.c
similarity index 99%
rename from main_sketch/lcdpcf8574.cpp
rename to hdlc_screen/LCD/lcdpcf8574.c
index c5808d5..24d09ff 100644
--- a/main_sketch/lcdpcf8574.cpp
+++ b/hdlc_screen/LCD/lcdpcf8574.c
@@ -1,4 +1,4 @@
-#include "MyLCD.h"
+#include "lcd_headers.h"
 
 // задержеки через асемблер
 #define lcd_e_delay()   __asm__ __volatile__( "rjmp 1f\n 1:" );
diff --git a/MyLCD/lcdpcf8574.h b/hdlc_screen/LCD/lcdpcf8574.h
similarity index 100%
rename from MyLCD/lcdpcf8574.h
rename to hdlc_screen/LCD/lcdpcf8574.h
diff --git a/main_sketch/pcf8574.cpp b/hdlc_screen/LCD/pcf8574.c
similarity index 99%
rename from main_sketch/pcf8574.cpp
rename to hdlc_screen/LCD/pcf8574.c
index e93f3d8..de5ebf6 100644
--- a/main_sketch/pcf8574.cpp
+++ b/hdlc_screen/LCD/pcf8574.c
@@ -1,4 +1,4 @@
-#include "MyLCD.h"
+#include "lcd_headers.h"
 uint8_t pcf8574_pinstatus[PCF8574_MAXDEVICES];
 
 // инициализация pcf
diff --git a/MyLCD/pcf8574.h b/hdlc_screen/LCD/pcf8574.h
similarity index 100%
rename from MyLCD/pcf8574.h
rename to hdlc_screen/LCD/pcf8574.h
diff --git a/main_sketch/twimaster.cpp b/hdlc_screen/LCD/twimaster.c
similarity index 99%
rename from main_sketch/twimaster.cpp
rename to hdlc_screen/LCD/twimaster.c
index 2fad0d7..6019a42 100644
--- a/main_sketch/twimaster.cpp
+++ b/hdlc_screen/LCD/twimaster.c
@@ -1,4 +1,4 @@
-#include "MyLCD.h"
+#include "lcd_headers.h"
 
 // инициализация интерфейса i2c
 void i2c_init(void)
diff --git a/hdlc_screen/Readme.md b/hdlc_screen/Readme.md
new file mode 100644
index 0000000..e63e9d8
--- /dev/null
+++ b/hdlc_screen/Readme.md
@@ -0,0 +1,15 @@
+# Устройство с дисплеем на AVR
+* Команда: Лежнин Роман, Куршаков Кирилл, Деркачев Андрей, Чертков Максим
+
+Лежнин Роман
+* Главный в группе
+* Внедрение протокола HDLC и разработка протокола
+
+Куршаков Кирилл
+* Внедрение протокола UART
+
+Чертков Максим
+* Отрисовка данных на дисплей
+
+Деркачев Андрей
+* Соединения и рефактор блоков UART, HDLC и вывода
\ No newline at end of file
diff --git a/UART/circular_buf.c b/hdlc_screen/UART/circular_buf.c
similarity index 100%
rename from UART/circular_buf.c
rename to hdlc_screen/UART/circular_buf.c
diff --git a/UART/circular_buf.h b/hdlc_screen/UART/circular_buf.h
similarity index 100%
rename from UART/circular_buf.h
rename to hdlc_screen/UART/circular_buf.h
diff --git a/hdlc/client.c b/hdlc_screen/hdlc/client.c
similarity index 100%
rename from hdlc/client.c
rename to hdlc_screen/hdlc/client.c
diff --git a/hdlc/client.h b/hdlc_screen/hdlc/client.h
similarity index 100%
rename from hdlc/client.h
rename to hdlc_screen/hdlc/client.h
diff --git a/hdlc/fcs.c b/hdlc_screen/hdlc/fcs.c
similarity index 100%
rename from hdlc/fcs.c
rename to hdlc_screen/hdlc/fcs.c
diff --git a/hdlc/fcs.h b/hdlc_screen/hdlc/fcs.h
similarity index 100%
rename from hdlc/fcs.h
rename to hdlc_screen/hdlc/fcs.h
diff --git a/hdlc/hdlc.c b/hdlc_screen/hdlc/hdlc.c
similarity index 100%
rename from hdlc/hdlc.c
rename to hdlc_screen/hdlc/hdlc.c
diff --git a/hdlc/hdlc.h b/hdlc_screen/hdlc/hdlc.h
similarity index 98%
rename from hdlc/hdlc.h
rename to hdlc_screen/hdlc/hdlc.h
index 12ddaa1..2798da9 100644
--- a/hdlc/hdlc.h
+++ b/hdlc_screen/hdlc/hdlc.h
@@ -7,7 +7,8 @@
 
 #include "fcs.h"
 #include <errno.h>
-#include "stdint.h"
+#include <stdint.h>
+#include <stddef.h>
 
 /** HDLC start/end flag sequence */
 #define HDLC_FLAG_SEQUENCE 0x7E
diff --git a/hdlc_screen/hdlc_screen.componentinfo.xml b/hdlc_screen/hdlc_screen.componentinfo.xml
new file mode 100644
index 0000000..7473b85
--- /dev/null
+++ b/hdlc_screen/hdlc_screen.componentinfo.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
+	<ProjectComponents>
+		<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
+			<CApiVersion></CApiVersion>
+			<CBundle></CBundle>
+			<CClass>Device</CClass>
+			<CGroup>Startup</CGroup>
+			<CSub></CSub>
+			<CVariant></CVariant>
+			<CVendor>Atmel</CVendor>
+			<CVersion>1.2.0</CVersion>
+			<DefaultRepoPath>D:/atmelstudio\7.0\Packs</DefaultRepoPath>
+			<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+			<Description></Description>
+			<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
+				<d4p1:anyType i:type="FileInfo">
+					<AbsolutePath>D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include</AbsolutePath>
+					<Attribute></Attribute>
+					<Category>include</Category>
+					<Condition>C</Condition>
+					<FileContentHash i:nil="true" />
+					<FileVersion></FileVersion>
+					<Name>include</Name>
+					<SelectString></SelectString>
+					<SourcePath></SourcePath>
+				</d4p1:anyType>
+				<d4p1:anyType i:type="FileInfo">
+					<AbsolutePath>D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include\avr\iom328p.h</AbsolutePath>
+					<Attribute></Attribute>
+					<Category>header</Category>
+					<Condition>C</Condition>
+					<FileContentHash>UMk4QUzkkuShabuoYtNl/Q==</FileContentHash>
+					<FileVersion></FileVersion>
+					<Name>include/avr/iom328p.h</Name>
+					<SelectString></SelectString>
+					<SourcePath></SourcePath>
+				</d4p1:anyType>
+				<d4p1:anyType i:type="FileInfo">
+					<AbsolutePath>D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.c</AbsolutePath>
+					<Attribute>template</Attribute>
+					<Category>source</Category>
+					<Condition>C Exe</Condition>
+					<FileContentHash>7MqOviI+fX8DsJg4frGlyg==</FileContentHash>
+					<FileVersion></FileVersion>
+					<Name>templates/main.c</Name>
+					<SelectString>Main file (.c)</SelectString>
+					<SourcePath></SourcePath>
+				</d4p1:anyType>
+				<d4p1:anyType i:type="FileInfo">
+					<AbsolutePath>D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.cpp</AbsolutePath>
+					<Attribute>template</Attribute>
+					<Category>source</Category>
+					<Condition>C Exe</Condition>
+					<FileContentHash>YXFphlh0CtZJU+ebktABgQ==</FileContentHash>
+					<FileVersion></FileVersion>
+					<Name>templates/main.cpp</Name>
+					<SelectString>Main file (.cpp)</SelectString>
+					<SourcePath></SourcePath>
+				</d4p1:anyType>
+				<d4p1:anyType i:type="FileInfo">
+					<AbsolutePath>D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p</AbsolutePath>
+					<Attribute></Attribute>
+					<Category>libraryPrefix</Category>
+					<Condition>GCC</Condition>
+					<FileContentHash i:nil="true" />
+					<FileVersion></FileVersion>
+					<Name>gcc/dev/atmega328p</Name>
+					<SelectString></SelectString>
+					<SourcePath></SourcePath>
+				</d4p1:anyType>
+			</Files>
+			<PackName>ATmega_DFP</PackName>
+			<PackPath>D:/atmelstudio/7.0/Packs/atmel/ATmega_DFP/1.2.209/Atmel.ATmega_DFP.pdsc</PackPath>
+			<PackVersion>1.2.209</PackVersion>
+			<PresentInProject>true</PresentInProject>
+			<ReferenceConditionId>ATmega328P</ReferenceConditionId>
+			<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
+				<d4p1:string></d4p1:string>
+			</RteComponents>
+			<Status>Resolved</Status>
+			<VersionMode>Fixed</VersionMode>
+			<IsComponentInAtProject>true</IsComponentInAtProject>
+		</ProjectComponent>
+	</ProjectComponents>
+</Store>
\ No newline at end of file
diff --git a/hdlc_screen/hdlc_screen.cproj b/hdlc_screen/hdlc_screen.cproj
new file mode 100644
index 0000000..541f3ef
--- /dev/null
+++ b/hdlc_screen/hdlc_screen.cproj
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
+  <PropertyGroup>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectVersion>7.0</ProjectVersion>
+    <ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
+    <ProjectGuid>dce6c7e3-ee26-4d79-826b-08594b9ad897</ProjectGuid>
+    <avrdevice>ATmega328P</avrdevice>
+    <avrdeviceseries>none</avrdeviceseries>
+    <OutputType>Executable</OutputType>
+    <Language>C</Language>
+    <OutputFileName>$(MSBuildProjectName)</OutputFileName>
+    <OutputFileExtension>.elf</OutputFileExtension>
+    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
+    <AssemblyName>hdlc_screen</AssemblyName>
+    <Name>hdlc_screen</Name>
+    <RootNamespace>hdlc_screen</RootNamespace>
+    <ToolchainFlavour>Native</ToolchainFlavour>
+    <KeepTimersRunning>true</KeepTimersRunning>
+    <OverrideVtor>false</OverrideVtor>
+    <CacheFlash>true</CacheFlash>
+    <ProgFlashFromRam>true</ProgFlashFromRam>
+    <RamSnippetAddress>0x20000000</RamSnippetAddress>
+    <UncachedRange />
+    <preserveEEPROM>true</preserveEEPROM>
+    <OverrideVtorValue>exception_table</OverrideVtorValue>
+    <BootSegment>2</BootSegment>
+    <ResetRule>0</ResetRule>
+    <eraseonlaunchrule>0</eraseonlaunchrule>
+    <EraseKey />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+    <ToolchainSettings>
+      <AvrGcc>
+        <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</avrgcc.common.Device>
+        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
+        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
+        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
+        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
+        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
+        <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
+        <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
+        <avrgcc.compiler.symbols.DefSymbols>
+          <ListValues>
+            <Value>NDEBUG</Value>
+          </ListValues>
+        </avrgcc.compiler.symbols.DefSymbols>
+        <avrgcc.compiler.directories.IncludePaths>
+          <ListValues>
+            <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
+          </ListValues>
+        </avrgcc.compiler.directories.IncludePaths>
+        <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
+        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
+        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
+        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
+        <avrgcc.linker.libraries.Libraries>
+          <ListValues>
+            <Value>libm</Value>
+          </ListValues>
+        </avrgcc.linker.libraries.Libraries>
+        <avrgcc.assembler.general.IncludePaths>
+          <ListValues>
+            <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
+          </ListValues>
+        </avrgcc.assembler.general.IncludePaths>
+      </AvrGcc>
+    </ToolchainSettings>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
+    <ToolchainSettings>
+      <AvrGcc>
+        <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</avrgcc.common.Device>
+        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
+        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
+        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
+        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
+        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
+        <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
+        <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
+        <avrgcc.compiler.symbols.DefSymbols>
+          <ListValues>
+            <Value>DEBUG</Value>
+          </ListValues>
+        </avrgcc.compiler.symbols.DefSymbols>
+        <avrgcc.compiler.directories.IncludePaths>
+          <ListValues>
+            <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
+          </ListValues>
+        </avrgcc.compiler.directories.IncludePaths>
+        <avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
+        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
+        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
+        <avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
+        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
+        <avrgcc.linker.libraries.Libraries>
+          <ListValues>
+            <Value>libm</Value>
+          </ListValues>
+        </avrgcc.linker.libraries.Libraries>
+        <avrgcc.assembler.general.IncludePaths>
+          <ListValues>
+            <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
+          </ListValues>
+        </avrgcc.assembler.general.IncludePaths>
+        <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
+      </AvrGcc>
+    </ToolchainSettings>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hdlc\client.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="hdlc\client.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="hdlc\fcs.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="hdlc\fcs.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="hdlc\hdlc.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="hdlc\hdlc.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\i2cmaster.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\lcd.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\lcdpcf8574.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\lcdpcf8574.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\lcd_headers.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\Lcd_print.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\pcf8574.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\pcf8574.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="LCD\twimaster.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="main.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="protocol\protocol.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="protocol\protocol.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="UART\circular_buf.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="UART\circular_buf.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="UART\uart.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="UART\uart.h">
+      <SubType>compile</SubType>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="hdlc" />
+    <Folder Include="LCD" />
+    <Folder Include="UART" />
+    <Folder Include="protocol" />
+  </ItemGroup>
+  <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
+</Project>
\ No newline at end of file
diff --git a/MyLCD/keywords.txt b/hdlc_screen/keywords.txt
similarity index 100%
rename from MyLCD/keywords.txt
rename to hdlc_screen/keywords.txt
diff --git a/main.c b/hdlc_screen/main.c
similarity index 90%
rename from main.c
rename to hdlc_screen/main.c
index 9c9bf50..ccebf62 100644
--- a/main.c
+++ b/hdlc_screen/main.c
@@ -1,12 +1,10 @@
-//#include "Lсd_print/lcd.h"
 #include "hdlc/client.h"
 #include "UART/uart.h"
 #include "stdbool.h"
-//#include "stdio.h"
-#include "Lсd_print/lcd.h"
-//#include "protocol.h"
+#include "LCD/lcd.h"
+#include "Protocol/protocol.h"
 
-int main() {
+int main(void) {
     struct Client hdlc;
     bool flag_connection = false;
 
@@ -103,8 +101,15 @@ int main() {
 
     struct message resp;
     protocol_decode(data_recive, len_data_recive, &resp);
+	
+	struct DisplayData disp;
+	disp.value1 = resp.numbers[0];
+	disp.value2 = resp.numbers[1];
+	disp.value3 = resp.numbers[2];
+	//disp.topLine = *resp.str;
+	strncpy(disp.topLine, resp.str, sizeof(disp.topLine) - 1);
 
-    printLcd(&resp);
+    printLcd(&disp);
 
     return 0;
 }
\ No newline at end of file
diff --git a/main_sketch/protocol.c b/hdlc_screen/protocol/protocol.c
similarity index 100%
rename from main_sketch/protocol.c
rename to hdlc_screen/protocol/protocol.c
diff --git a/main_sketch/protocol.h b/hdlc_screen/protocol/protocol.h
similarity index 100%
rename from main_sketch/protocol.h
rename to hdlc_screen/protocol/protocol.h
diff --git a/main_sketch/Lcd_print.cpp b/main_sketch/Lcd_print.cpp
deleted file mode 100644
index bae875b..0000000
--- a/main_sketch/Lcd_print.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdio.h>
-#include "MyLCD.h"
-#include "protocol.h"
-#include <Arduino.h>
-
-struct DisplayData {
-    char topLine[64];
-    float value1;
-    float value2;
-    float value3;
-};
-
-struct TextCounter {
-    unsigned long startTime;
-    int incrementValue;
-};
-
-TextCounter textCounter;
-
-void Lcd_inciliation() {
-    lcd_init(LCD_DISP_ON_BLINK); // инициализация дисплея
-    lcd_home(); // домой курсор
-    lcd_led(0); // вкл подсветки
-    textCounter.startTime = millis(); // Запоминаем время запуска программы
-}
-
-void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) {
-    int startIndex = incrementValue % strlen(source); // Определяем начальный индекс на основе incrementValue
-    int endIndex = startIndex + 16;
-
-    for (int i = 0; i < 16; ++i) {
-        buffer[i] = source[(startIndex + i) % strlen(source)];
-    }
-    buffer[16] = '\0'; // Установка нулевого символа в конце буфера
-}
-
-void fillBuffer2(float value1, float value2, float value3, char* buffer, size_t bufferSize) {
-    snprintf(buffer, bufferSize, "%.2f.%.2f.%.2f", value1, value2, value3);
-}
-
-void printLcd(struct message* decode_message) {
-    unsigned long currentTime = millis(); // Текущее время
-    // Проверяем, прошло ли 500 мс с момента последнего увеличения incrementValue
-    if (currentTime - textCounter.startTime >= 500) {
-        textCounter.incrementValue++; // Увеличиваем incrementValue на 1
-        textCounter.startTime = currentTime; // Обновляем время
-    }
-
-    struct DisplayData displayData;
-    strncpy(displayData.topLine, decode_message->str, sizeof(displayData.topLine) - 1);
-    displayData.topLine[sizeof(displayData.topLine) - 1] = '\0';
-    displayData.value1 = decode_message->numbers[0];
-    displayData.value2 = decode_message->numbers[1];
-    displayData.value3 = decode_message->numbers[2];
-
-    // Буферы для заполнения данных
-    char buffer1[17];
-    char buffer2[17];
-
-    // Заполнение буфера 1
-    fillBuffer1(displayData.topLine, buffer1, sizeof(buffer1), textCounter.incrementValue);
-
-    // Заполнение буфера 2
-    fillBuffer2(displayData.value1, displayData.value2, displayData.value3, buffer2, sizeof(buffer2));
-
-    // Создание массива для вывода на дисплей
-    char displayArray[32];
-    strncpy(displayArray, buffer1, 16); // Копирование первых 16 символов из buffer1 в displayArray
-    strncpy(displayArray + 16, buffer2, 16); // Копирование первых 16 символов из buffer2 в displayArray, начиная с позиции 16
-
-    // Вывод данных на экран
-    lcd_gotoxy(0, 0);
-    lcd_puts(displayArray);
-
-    lcd_gotoxy(0, 1);
-    lcd_puts(displayArray + 16); // Вывод второй половины displayArray
-}
-
-void dder() {
-    Lcd_inciliation();
-
-    uint8_t encode_message[100];
-    size_t len_encode_message = 0;
-    struct message message;
-
-
-    // Получаем данные из протокола
-    protocol_encode(message, encode_message, &len_encode_message);
-
-    // Декодируем данные из протокола
-    struct message decode_message;
-    protocol_decode(encode_message, len_encode_message, &decode_message);
-
-    // Выводим данные на экран
-    printLcd(&decode_message);
-}
\ No newline at end of file
diff --git a/main_sketch/circular_buf.c b/main_sketch/circular_buf.c
deleted file mode 100644
index e1b91c7..0000000
--- a/main_sketch/circular_buf.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "circular_buf.h"
-
-
-void initialize_buffer(struct circular_buffer* cb) {
-	cb->buf_head = 0;
-	cb->buf_tail = 0;
-}
-// Проверка, пустой ли буфер
-int buffer_empty(const struct circular_buffer* cb) {
-	return cb->buf_head == cb->buf_tail;
-}
-// Проверка, заполнен ли буфер
-int buffer_full(const struct circular_buffer* cb) {
-	return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head; //проверяем следующее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывод true
-}
-// Запись в буфер
-void write_buffer(struct circular_buffer* cb, int value) {
-	if (buffer_full(cb)) { // проверяем, заполнен ли буфер
-		return;
-	}
-	cb->buffer[cb->buf_tail] = value;// записываем значение в элемент массива в хвост
-	cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере
-}
-// Чтение элемента
-int read_buffer(struct circular_buffer* cb) {
-	if (buffer_empty(cb)) { // проверка на пустоту
-		return -1;// -1  как индикатор в случае ошибки
-	}
-	int value = cb->buffer[cb->buf_head]; // чтение по индексу головы
-	cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; // увеличиваем индекс на 1
-	return value;
-}
-
-
diff --git a/main_sketch/circular_buf.h b/main_sketch/circular_buf.h
deleted file mode 100644
index 22dc139..0000000
--- a/main_sketch/circular_buf.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef CIRCULAR_BUFFER_H
-#define CIRCULAR_BUFFER_H
-
-#define BUFFER_SIZE 32
-
-struct circular_buffer{
-	unsigned char buffer[BUFFER_SIZE];
-	unsigned char buf_head;
-	unsigned char buf_tail;
-};
-
-void initialize_buffer(struct circular_buffer* cb);
-int buffer_empty(const struct circular_buffer* cb);
-int buffer_full(const struct circular_buffer* cb);
-void write_buffer(struct circular_buffer* cb, int value);
-int read_buffer(struct circular_buffer* cb);
-
-#endif /* CIRCULAR_BUFFER_H */
diff --git a/main_sketch/client.c b/main_sketch/client.c
deleted file mode 100644
index b2b7318..0000000
--- a/main_sketch/client.c
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "client.h"
-#include "hdlc.h"
-#include "stdio.h"
-
-#define SIZE_DATA_BUFFERS 64
-
-int connecting_frame_timeout_bf;
-
-void init_hdlc_client(struct Client* client, int connecting_frame_timeout){
-    client->state = IDLE_STATE;
-    client->connecting_frame_timeout = connecting_frame_timeout;
-    connecting_frame_timeout_bf = connecting_frame_timeout;
-    client->current_index_frame = 20;
-
-    client->current_state_hdlc.control_escape = 0;
-    client->current_state_hdlc.fcs = FCS_INIT_VALUE;
-    client->current_state_hdlc.start_index = -1;
-    client->current_state_hdlc.end_index = -1;
-    client->current_state_hdlc.src_index = 0;
-    client->current_state_hdlc.dest_index = 0;
-}
-
-void hdlc_connect(struct Client* client){
-    client->state = CONNECTING;
-
-    client->frameS.seq_no = 0;
-    client->frameS.frame = S_FRAME;
-    client->current_index_frame = client->frameS.seq_no;
-}
-
-int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len){
-    if (client->state != READY_STATE){
-        return ERR_INVALID_STATE;
-    }
-
-    client->state = RECIVING;
-
-    if (SIZE_DATA_BUFFERS < data_len){
-        return ERR_INVALID_DATA_SIZE;
-    }
-
-    client->frameI.seq_no = 0;
-    client->frameI.frame = I_FRAME;
-    client->data_i_frame = data;
-    client->len_data_i_frame = data_len;
-    client->current_index_frame = client->frameI.seq_no;
-
-    client->state = RECIVING;
-    return 0;
-}
-
-int hdlc_get_raw_frame(struct Client *client, uint8_t* buffer, size_t lenBuffer) {
-    if(client->state == RECIVING){
-        int ret = hdlc_frame_data(&client->frameI, client->data_i_frame,
-                                  client->len_data_i_frame, buffer, &lenBuffer);
-        if (ret < 0){
-            printf("err in get_frame: %d\n", ret);
-        }
-    }
-
-    if (client->state == CONNECTING){
-        int ret = hdlc_frame_data(&client->frameS, NULL, 0, buffer, &lenBuffer);
-
-        if (ret < 0){
-            printf("err in get_frame: %d\n", ret);
-        }
-    }
-
-    if (client->state == DISCONNECTING){
-        int ret = hdlc_frame_data(&client->frame_rej, NULL, 0, buffer, &lenBuffer);
-
-        if (ret < 0){
-            printf("err in get_frame: %d\n", ret);
-        }
-    }
-
-    return 0;
-}
-
-int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data){
-    hdlc_control_t recv_control;
-    uint8_t recive[len_buffer];
-
-    int ret = hdlc_get_data_with_state(&client->current_state_hdlc,&recv_control, buffer, len_buffer, recive,
-                            &len_buffer);
-
-    if (ret < 0) {
-        return ret;
-    }
-
-    if (recv_control.seq_no != client->current_index_frame){
-        client->state = DISCONNECTING;
-        client->frame_rej.seq_no = 0;
-        client->frame_rej.frame = S_FRAME_NACK;
-        return ERR_INVALID_SEQ_NUMBER_FRAME;
-    }
-
-    switch (recv_control.frame) {
-        case S_FRAME:
-            client->state = READY_STATE;
-            break;
-        case I_FRAME:
-            for (int i = 0; i < sizeof(recive)-2; i++){
-                recived_data[i] = recive[i];
-            }
-
-            *len_recived_data = sizeof(recive)-2;
-
-            client->state = SEND;
-            break;
-        case S_FRAME_NACK:
-            client->state = DISCONNECTING;
-            client->frame_rej.seq_no = 0;
-            client->frame_rej.frame = S_FRAME_NACK;
-            return ERR_INVALID_SEQ_NUMBER_FRAME;
-    }
-
-    client->connecting_frame_timeout = connecting_frame_timeout_bf;
-    return 0;
-}
-
-int hdlc_timeout_handler(struct Client* client, int delta_time){
-    client->connecting_frame_timeout -= delta_time;
-
-    if (client->connecting_frame_timeout <= 0){
-        return ERR_FRAME_TIME_OUT;
-    }
-    return 0;
-}
\ No newline at end of file
diff --git a/main_sketch/client.h b/main_sketch/client.h
deleted file mode 100644
index 8702fa1..0000000
--- a/main_sketch/client.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef CLIENT_H
-#define CLIENT_H
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "hdlc.h"
-
-#define ERR_INVALID_DATA_SIZE -1
-#define ERR_ALL_BUFFERS_FILL -2
-#define ERR_INVALID_PARAMS -3
-#define ERR_INVALID_STATE -4
-#define ERR_FRAME_TIME_OUT -5
-#define ERR_INVALID_SEQ_NUMBER_FRAME -6
-#define ERR_TIMEOUT_ANSWER -7
-
-enum HDLCState {
-    UNINITIALIZED_STATE = 0,  // состояние до инцилизации
-    IDLE_STATE, // Состояние ожидания начала
-    READY_STATE, // Состояние принятия
-    CONNECTING, // состояние соединения
-    DISCONNECTING, // состояния отключения
-    RECIVING, // состояние приема и отправки
-    SEND, //данные отправлены
-};
-
-struct Client{
-    enum HDLCState state;
-    int connecting_frame_timeout; //-1
-    uint8_t current_index_frame;
-    hdlc_state_t current_state_hdlc;
-    hdlc_control_t frameS;
-    hdlc_control_t frameI;
-    uint8_t* data_i_frame;
-    size_t len_data_i_frame;
-//    hdlc_control_t frame3;
-//    hdlc_control_t frame4;
-    hdlc_control_t frame_rej;
-};
-
-//название функций
-void init_hdlc_client(struct Client* client, int connecting_frame_timeout);
-void hdlc_connect(struct Client* client);
-int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len);
-int hdlc_get_raw_frame(struct Client *client, uint8_t* buffer, size_t lenBuffer);
-//принимает буффер с уарта
-int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data);
-int hdlc_timeout_handler(struct Client* client, int delta_time);
-
-#endif //CLIENT_H
diff --git a/main_sketch/fcs.c b/main_sketch/fcs.c
deleted file mode 100644
index 6e29cf8..0000000
--- a/main_sketch/fcs.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "fcs.h"
-
-/*
- *    CRC-Type:     CRC16 CCIT
- *    Polynomial:   0x1021 (x^16+x^12+x^5+1)
- *    Lookup Table: Reflected
- */
-static const unsigned short fcstab[256] = {
-        0x0000, 0x1189, 0x2312, 0x329b,
-        0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c,
-        0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c,
-        0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff,
-        0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
-        0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183,
-        0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42,
-        0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116,
-        0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7,
-        0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1,
-        0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960,
-        0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630,
-        0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
-        0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf,
-        0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581,
-        0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52,
-        0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612,
-        0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5,
-        0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7,
-        0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74,
-        0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
-        0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c,
-        0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd,
-        0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f,
-        0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e,
-        0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a,
-        0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb,
-        0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9,
-        0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 };
-
-FCS_SIZE calc_fcs(FCS_SIZE fcs, unsigned char value) {
-    return (fcs >> 8) ^ fcstab[(fcs ^ value) & 0xff];
-}
\ No newline at end of file
diff --git a/main_sketch/fcs.h b/main_sketch/fcs.h
deleted file mode 100644
index 6673d40..0000000
--- a/main_sketch/fcs.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef FCS_H
-#define FCS_H
-
-#define FCS_INIT_VALUE 0xFFFF /* FCS initialization value. */
-#define FCS_GOOD_VALUE 0xF0B8 /* FCS value for valid frames. */
-#define FCS_INVERT_MASK 0xFFFF /* Invert the FCS value accordingly to the specification */
-#define FCS_SIZE unsigned short
-
-/**
- * Calculates a new FCS based on the current value and value of data.
- *
- * @param fcs Current FCS value
- * @param value The value to be added
- * @returns Calculated FCS value
- */
-FCS_SIZE calc_fcs(FCS_SIZE fcs, unsigned char value);
-
-#endif
\ No newline at end of file
diff --git a/main_sketch/hdlc.c b/main_sketch/hdlc.c
deleted file mode 100644
index a5792e5..0000000
--- a/main_sketch/hdlc.c
+++ /dev/null
@@ -1,262 +0,0 @@
-#include "hdlc.h"
-
-// HDLC Control field bit positions
-#define HDLC_CONTROL_S_OR_U_FRAME_BIT 0
-#define HDLC_CONTROL_SEND_SEQ_NO_BIT 1
-#define HDLC_CONTROL_S_FRAME_TYPE_BIT 2
-#define HDLC_CONTROL_POLL_BIT 4
-#define HDLC_CONTROL_RECV_SEQ_NO_BIT 5
-
-// HDLC Control type definitions
-#define HDLC_CONTROL_TYPE_RECEIVE_READY 0
-#define HDLC_CONTROL_TYPE_RECEIVE_NOT_READY 1
-#define HDLC_CONTROL_TYPE_REJECT 2
-#define HDLC_CONTROL_TYPE_SELECTIVE_REJECT 3
-
-static hdlc_state_t hdlc_state = {
-        .control_escape = 0,
-        .fcs = FCS_INIT_VALUE,
-        .start_index = -1,
-        .end_index = -1,
-        .src_index = 0,
-        .dest_index = 0,
-};
-
-int hdlc_set_state(hdlc_state_t *state) {
-    if (!state) {
-        return -EINVAL;
-    }
-
-    hdlc_state = *state;
-    return 0;
-}
-
-
-int hdlc_get_state(hdlc_state_t *state) {
-    if (!state) {
-        return -EINVAL;
-    }
-
-    *state = hdlc_state;
-    return 0;
-}
-
-void hdlc_escape_value(char value, char *dest, int *dest_index) {
-    // Check and escape the value if needed
-    if ((value == HDLC_FLAG_SEQUENCE) || (value == HDLC_CONTROL_ESCAPE)) {
-        dest[(*dest_index)++] = HDLC_CONTROL_ESCAPE;
-        value ^= 0x20;
-    }
-
-    // Add the value to the destination buffer and increment destination index
-    dest[(*dest_index)++] = value;
-}
-
-hdlc_control_t hdlc_get_control_type(unsigned char control) {
-    hdlc_control_t value;
-
-    // Check if the frame is a S-frame (or U-frame)
-    if (control & (1 << HDLC_CONTROL_S_OR_U_FRAME_BIT)) {
-        // Check if S-frame type is a Receive Ready (ACK)
-        if (((control >> HDLC_CONTROL_S_FRAME_TYPE_BIT) & 0x3)
-            == HDLC_CONTROL_TYPE_RECEIVE_READY) {
-            value.frame = S_FRAME;
-        } else {
-            // Assume it is an NACK since Receive Not Ready, Selective Reject and U-frames are not supported
-            value.frame = S_FRAME_NACK;
-        }
-
-        // Add the receive sequence number from the S-frame (or U-frame)
-        value.seq_no = (control >> HDLC_CONTROL_RECV_SEQ_NO_BIT);
-    } else {
-        // It must be an I-frame so add the send sequence number (receive sequence number is not used)
-        value.frame = I_FRAME;
-        value.seq_no = (control >> HDLC_CONTROL_SEND_SEQ_NO_BIT);
-    }
-
-    return value;
-}
-
-unsigned char hdlc_frame_control_type(hdlc_control_t *control) {
-    unsigned char value = 0;
-
-    switch (control->frame) {
-        case I_FRAME:
-            // Create the HDLC I-frame control byte with Poll bit set
-            value |= (control->seq_no << HDLC_CONTROL_SEND_SEQ_NO_BIT);
-            value |= (1 << HDLC_CONTROL_POLL_BIT);
-            break;
-        case S_FRAME:
-            // Create the HDLC Receive Ready S-frame control byte with Poll bit cleared
-            value |= (control->seq_no << HDLC_CONTROL_RECV_SEQ_NO_BIT);
-            value |= (1 << HDLC_CONTROL_S_OR_U_FRAME_BIT);
-            break;
-        case S_FRAME_NACK:
-            // Create the HDLC Receive Ready S-frame control byte with Poll bit cleared
-            value |= (control->seq_no << HDLC_CONTROL_RECV_SEQ_NO_BIT);
-            value |= (HDLC_CONTROL_TYPE_REJECT << HDLC_CONTROL_S_FRAME_TYPE_BIT);
-            value |= (1 << HDLC_CONTROL_S_OR_U_FRAME_BIT);
-            break;
-    }
-
-    return value;
-}
-
-void hdlc_get_data_reset() {
-    hdlc_get_data_reset_with_state(&hdlc_state);
-}
-
-void hdlc_get_data_reset_with_state(hdlc_state_t *state) {
-    state->fcs = FCS_INIT_VALUE;
-    state->start_index = state->end_index = -1;
-    state->src_index = state->dest_index = 0;
-    state->control_escape = 0;
-}
-
-//int hdlc_get_data(hdlc_control_t *control, const char *src,
-//                    unsigned int src_len, char *dest, unsigned int *dest_len)
-int hdlc_get_data(hdlc_control_t *control, uint8_t *src,
-                  size_t src_len, uint8_t *dest, size_t *dest_len){
-    return hdlc_get_data_with_state(&hdlc_state, control, src, src_len, dest, dest_len);
-}
-
-//int hdlc_get_data_with_state(hdlc_state_t *state, hdlc_control_t *control, const char *src,
-//                               unsigned int src_len, char *dest, unsigned int *dest_len)
-int
-hdlc_get_data_with_state(hdlc_state_t *state, hdlc_control_t *control, uint8_t *src,
-                             size_t src_len, uint8_t *dest, size_t *dest_len){
-    int ret;
-    char value;
-    unsigned int i;
-
-    // Make sure that all parameters are valid
-    if (!state || !control || !src || !dest || !dest_len) {
-        return -EINVAL;
-    }
-
-    // Run through the data bytes
-    for (i = 0; i < src_len; i++) {
-        // First find the start flag sequence
-        if (state->start_index < 0) {
-            if (src[i] == HDLC_FLAG_SEQUENCE) {
-                // Check if an additional flag sequence byte is present
-                if ((i < (src_len - 1)) && (src[i + 1] == HDLC_FLAG_SEQUENCE)) {
-                    // Just loop again to silently discard it (accordingly to HDLC)
-                    continue;
-                }
-
-                state->start_index = state->src_index;
-            }
-        } else {
-            // Check for end flag sequence
-            if (src[i] == HDLC_FLAG_SEQUENCE) {
-                // Check if an additional flag sequence byte is present or earlier received
-                if (((i < (src_len - 1)) && (src[i + 1] == HDLC_FLAG_SEQUENCE))
-                    || ((state->start_index + 1) == state->src_index)) {
-                    // Just loop again to silently discard it (accordingly to HDLC)
-                    continue;
-                }
-
-                state->end_index = state->src_index;
-                break;
-            } else if (src[i] == HDLC_CONTROL_ESCAPE) {
-                state->control_escape = 1;
-            } else {
-                // Update the value based on any control escape received
-                if (state->control_escape) {
-                    state->control_escape = 0;
-                    value = src[i] ^ 0x20;
-                } else {
-                    value = src[i];
-                }
-
-                // Now update the FCS value
-                state->fcs = calc_fcs(state->fcs, value);
-
-                if (state->src_index == state->start_index + 2) {
-                    // Control field is the second byte after the start flag sequence
-                    *control = hdlc_get_control_type(value);
-                } else if (state->src_index > (state->start_index + 2)) {
-                    // Start adding the data values after the Control field to the buffer
-                    dest[state->dest_index++] = value;
-                }
-            }
-        }
-        state->src_index++;
-    }
-
-    // Check for invalid frame (no start or end flag sequence)
-    if ((state->start_index < 0) || (state->end_index < 0)) {
-        // Return no message and make sure destination length is 0
-        *dest_len = 0;
-        ret = -ENOMSG;
-    } else {
-        // A frame is at least 4 bytes in size and has a valid FCS value
-        if ((state->end_index < (state->start_index + 4))
-            || (state->fcs != FCS_GOOD_VALUE)) {
-            // Return FCS error and indicate that data up to end flag sequence in buffer should be discarded
-            *dest_len = i;
-            ret = -EIO;
-        } else {
-            // Return success and indicate that data up to end flag sequence in buffer should be discarded
-            *dest_len = state->dest_index - sizeof(state->fcs);
-            ret = i;
-        }
-
-        // Reset values for next frame
-        hdlc_get_data_reset_with_state(state);
-    }
-
-    return ret;
-}
-
-//int hdlc_frame_data(hdlc_control_t *control, const char *src,
-//                      unsigned int src_len, char *dest, unsigned int *dest_len)
-int hdlc_frame_data(hdlc_control_t *control, uint8_t *src,
-                    size_t src_len, uint8_t *dest, size_t *dest_len){
-    unsigned int i;
-    int dest_index = 0;
-    unsigned char value = 0;
-    FCS_SIZE fcs = FCS_INIT_VALUE;
-
-    // Make sure that all parameters are valid
-    if (!control || (!src && (src_len > 0)) || !dest || !dest_len) {
-        return -EINVAL;
-    }
-
-    // Start by adding the start flag sequence
-    dest[dest_index++] = HDLC_FLAG_SEQUENCE;
-
-    // Add the all-station address from HDLC (broadcast)
-    fcs = calc_fcs(fcs, HDLC_ALL_STATION_ADDR);
-    hdlc_escape_value(HDLC_ALL_STATION_ADDR, dest, &dest_index);
-
-    // Add the framed control field value
-    value = hdlc_frame_control_type(control);
-    fcs = calc_fcs(fcs, value);
-    hdlc_escape_value(value, dest, &dest_index);
-
-    // Only DATA frames should contain data
-    if (control->frame == I_FRAME) {
-        // Calculate FCS and escape data
-        for (i = 0; i < src_len; i++) {
-            fcs = calc_fcs(fcs, src[i]);
-            hdlc_escape_value(src[i], dest, &dest_index);
-        }
-    }
-
-    // Invert the FCS value accordingly to the specification
-    fcs ^= FCS_INVERT_MASK;
-
-    // Run through the FCS bytes and escape the values
-    for (i = 0; i < sizeof(fcs); i++) {
-        value = ((fcs >> (8 * i)) & 0xFF);
-        hdlc_escape_value(value, dest, &dest_index);
-    }
-
-    // Add end flag sequence and update length of frame
-    dest[dest_index++] = HDLC_FLAG_SEQUENCE;
-    *dest_len = dest_index;
-
-    return 0;
-}
\ No newline at end of file
diff --git a/main_sketch/hdlc.h b/main_sketch/hdlc.h
deleted file mode 100644
index 61fc74a..0000000
--- a/main_sketch/hdlc.h
+++ /dev/null
@@ -1,108 +0,0 @@
-//
-// Created by 79513 on 15.12.2023.
-//
-
-#ifndef HDLC_H
-#define HDLC_H
-
-#include "fcs.h"
-#include "errno.h"
-#include "stdint.h"
-
-/** HDLC start/end flag sequence */
-#define HDLC_FLAG_SEQUENCE 0x7E
-
-/** HDLC control escape value */
-#define HDLC_CONTROL_ESCAPE 0x7D
-
-/** HDLC all station address */
-#define HDLC_ALL_STATION_ADDR 0xFF
-
-/** Supported HDLC frame types */
-typedef enum {
-    I_FRAME,
-    S_FRAME,
-    S_FRAME_NACK,
-} hdlc_frame_t;
-
-/** Control field information */
-typedef struct {
-    hdlc_frame_t frame;
-    unsigned char seq_no :3;
-} hdlc_control_t;
-
-/** Variables used in hdlc_get_data and hdlc_get_data_with_state
- * to keep track of received buffers
- */
-typedef struct {
-    char control_escape;
-    FCS_SIZE fcs;
-    int start_index;
-    int end_index;
-    int src_index;
-    int dest_index;
-} hdlc_state_t;
-
-/**
- * Retrieves data from specified buffer containing the HDLC frame. Frames can be
- * parsed from multiple buffers e.g. when received via UART.
- *
- * @param[out] control Control field structure with frame type and sequence number
- * @param[in] src Source buffer with frame
- * @param[in] src_len Source buffer length
- * @param[out] dest Destination buffer (should be able to contain max frame size)
- * @param[out] dest_len Destination buffer length
- * @retval >=0 Success (size of returned value should be discarded from source buffer)
- * @retval -EINVAL Invalid parameter
- * @retval -ENOMSG Invalid message
- * @retval -EIO Invalid FCS (size of dest_len should be discarded from source buffer)
- *
- * @see hdlc_get_data_with_state
- */
-int hdlc_get_data(hdlc_control_t *control, uint8_t *src,
-                    size_t src_len, uint8_t *dest, size_t *dest_len);
-
-/**
- * Retrieves data from specified buffer containing the HDLC frame. Frames can be
- * parsed from multiple buffers e.g. when received via UART.
- *
- * This function is a variation of @ref hdlc_get_data
- * The difference is only in first argument: hdlc_state_t *state
- * Data under that pointer is used to keep track of internal buffers.
- *
- * @see hdlc_get_data
- */
-int hdlc_get_data_with_state(hdlc_state_t *state, hdlc_control_t *control, uint8_t *src,
-                             size_t src_len, uint8_t *dest, size_t *dest_len);
-
-/**
- * Resets values used in yahdlc_get_data function to keep track of received buffers
- */
-void hdlc_get_data_reset();
-
-/**
- * This is a variation of @ref hdlc_get_data_reset
- * Resets state values that are under the pointer provided as argument
- *
- * This function need to be called before the first call to hdlc_get_data_with_state
- * when custom state storage is used.
- *
- * @see hdlc_get_data_reset
- */
-void hdlc_get_data_reset_with_state(hdlc_state_t *state);
-
-/**
- * Creates HDLC frame with specified data buffer.
- *
- * @param[in] control Control field structure with frame type and sequence number
- * @param[in] src Source buffer with data
- * @param[in] src_len Source buffer length
- * @param[out] dest Destination buffer (should be bigger than source buffer)
- * @param[out] dest_len Destination buffer length
- * @retval 0 Success
- * @retval -EINVAL Invalid parameter
- */
-int hdlc_frame_data(hdlc_control_t *control, uint8_t *src,
-                      size_t src_len, uint8_t *dest, size_t *dest_len);
-
-#endif //HDLC_H
diff --git a/main_sketch/i2cmaster.h b/main_sketch/i2cmaster.h
deleted file mode 100644
index 72efb7c..0000000
--- a/main_sketch/i2cmaster.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef _I2CMASTER_H
-#define _I2CMASTER_H
-
-// ����, ���������� �� ������ ������ �� i2c
-#define I2C_READ    1
-
-// ����, ���������� �� �������� ������ �� i2c
-#define I2C_WRITE   0
-
-// ������� ������������ ����� � ������
-#define SCL_CLOCK 100000L
-
-// ������������� ����������
-void i2c_init(void);
-
-// �������� ������� ���� �� ����
-void i2c_stop(void);
-
-// �������� ������� ����� �� ����
-unsigned char i2c_start(unsigned char addr);
-
-// ��������� �����(����������)
-unsigned char i2c_rep_start(unsigned char addr);
-
-// ����, ���� ������-�� ������, � ����� �������� ������� ����� �� ����
-void i2c_start_wait(unsigned char addr);
-
- // �������� ������
-unsigned char i2c_write(unsigned char data);
-
-// ������ ������ � ���������� �������
-unsigned char i2c_readAck(void);
-
-// ������ ������ � ����� �� ��������� �������� ������ ����
-unsigned char i2c_readNak(void);
-
-// ������ ������ � ����
-unsigned char i2c_read(unsigned char ack);
-
-// �������� ����� ������ ������ ������ �����
-#define i2c_read(ack)  (ack) ? i2c_readAck() : i2c_readNak(); 
-#endif
diff --git a/main_sketch/keywords.txt b/main_sketch/keywords.txt
deleted file mode 100644
index 26f60da..0000000
--- a/main_sketch/keywords.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-lcd_init  KEYWORD2
-lcd_clrscr  KEYWORD2
-lcd_home  KEYWORD2
-lcd_gotoxy  KEYWORD2
-lcd_led  KEYWORD2
-lcd_putc  KEYWORD2
-lcd_puts  KEYWORD2
-lcd_puts_p  KEYWORD2
-lcd_command  KEYWORD2
-lcd_data  KEYWORD2
\ No newline at end of file
diff --git a/main_sketch/lcd.h b/main_sketch/lcd.h
deleted file mode 100644
index f798ae0..0000000
--- a/main_sketch/lcd.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef Lsd_print_h
-#define Lsd_print_h
-#include "protocol.h"
-
-void Lcd_inciliation();
-void printLcd(struct message* decode_message);
-
-#endif
\ No newline at end of file
diff --git a/main_sketch/lcdpcf8574.h b/main_sketch/lcdpcf8574.h
deleted file mode 100644
index cff8714..0000000
--- a/main_sketch/lcdpcf8574.h
+++ /dev/null
@@ -1,110 +0,0 @@
-#ifndef LCD_H
-#define LCD_H
-
-#define LCD_PCF8574_INIT 1 //������������� pcf
-
-#define LCD_PCF8574_DEVICEID 0 //id ���-��
-#define LCD_FUNCTION_DEFAULT    LCD_FUNCTION_4BIT_2LINES 
-
-// ��������� ������ �����: ���������/���������� �������� �������, ����������� ����������� ������� ���������/�����������
-#define LCD_ENTRY_DEC            0x04   // �������� ������� ���������, ������ ������������ �� �������
-#define LCD_ENTRY_DEC_SHIFT      0x05   // ��������� ������ �������, ����������� ������� �� �������
-#define LCD_ENTRY_INC_           0x06   // �������� ������� ���������, ���. ����������� ������� � �����������
-#define LCD_ENTRY_INC_SHIFT      0x07   // ��������� �������� �������, ���������� ����������� ����������� �������
-
-// ���������/���������� �������, ���������/���������� �������, �������� ������ � ������� �������
-#define LCD_DISP_OFF             0x08   // ������� ��������
-#define LCD_DISP_ON              0x0C   // ������� ���, ������ ����
-#define LCD_DISP_ON_BLINK        0x0D   // ������� ���, ������ ����, ���� �������� �����
-#define LCD_DISP_ON_CURSOR       0x0E   // ������� ���, ������ ���
-#define LCD_DISP_ON_CURSOR_BLINK 0x0F   // ������� ���, ������ ���, ���� �������� �����
-
-// ����������� �������/�������� �������
-#define LCD_MOVE_CURSOR_LEFT     0x10   // ������ ������
-#define LCD_MOVE_CURSOR_RIGHT    0x14   // ������ �������
-#define LCD_MOVE_DISP_LEFT       0x18   // ����� �����
-#define LCD_MOVE_DISP_RIGHT      0x1C   // ����� ������
-
-// ����� �������: ��������� ����� ������ ���������� � ���������� ����� �����������
-#define LCD_FUNCTION_4BIT_1LINE  0x20   // 4-������ ���������, ���� ������, 5x7 �����
-#define LCD_FUNCTION_4BIT_2LINES 0x28   // 4-������ ���������, ������������, 5x7 �����
-#define LCD_FUNCTION_8BIT_1LINE  0x30   // 8-������ ���������, ���� ������, 5x7 �����
-#define LCD_FUNCTION_8BIT_2LINES 0x38   // 8-������ ���������, ������������, 5x7 �����
-
-#define LCD_LINES           2	  // ���-�� �����
-#define LCD_DISP_LENGTH    16     // ���-�� �������� � ������
-#define LCD_LINE_LENGTH  0x40	  // ���������� ����� ������ �������
-#define LCD_START_LINE1  0x00     // DDRM ����� ��� 1 ������
-#define LCD_START_LINE2  0x40     // DDRM ����� ��� 2 ������
-#define LCD_WRAP_LINES      1     // ������� ������
-
-
-
-#define LCD_DATA0_PIN    4            // ��� ��� ������
-#define LCD_DATA1_PIN    5            // ��� ��� ������
-#define LCD_DATA2_PIN    6            // ��� ��� ������
-#define LCD_DATA3_PIN    7            // ��� ��� ������
-#define LCD_RS_PIN       0            // ��� ����� RS
-#define LCD_RW_PIN       1            // ��� ����� RW
-#define LCD_E_PIN        2            // ��� ����� ������������
-#define LCD_LED_PIN      3            // ��� ���������
-
-
-// ������� ����� �������� ������ HD44780U.
-#define LCD_CLR               0      // ��������� �������
-#define LCD_HOME              1      // ������� ������ �����
-#define LCD_ENTRY_MODE        2      // ��������� ������ �����
-#define LCD_ENTRY_INC         1      // ���������
-#define LCD_ENTRY_SHIFT       0      // ��� ��������
-#define LCD_ON                3      // ��� �������
-#define LCD_ON_DISPLAY        2      // ���� �������
-#define LCD_ON_CURSOR         1      // ���� ������
-#define LCD_ON_BLINK          0      // ������� �������
-#define LCD_MOVE              4      // ������������ �������
-#define LCD_MOVE_DISP         3      // ������������ �������
-#define LCD_MOVE_RIGHT        2      // ������������ ������� �������
-#define LCD_FUNCTION          5      // ��������� �������
-#define LCD_FUNCTION_8BIT     4      // 8 ������ �����
-#define LCD_FUNCTION_2LINES   3      // ��������� �����
-#define LCD_FUNCTION_10DOTS   2      // ������
-#define LCD_CGRAM             6      // ��������� ������ CG RAM
-#define LCD_DDRAM             7      // ��������� ������ DD RAM
-#define LCD_BUSY              7      // ������� �����
-
-// ����������� �����
-#define LCD_MODE_DEFAULT     ((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC) )
-
-// ������������� �������
-void lcd_init(uint8_t dispAttr);
-
-// ������� �������
-void lcd_clrscr(void);
-
-// ������ � ������ ���������
-void lcd_home(void);
-
-// ����������� ������� �� �����������
-void lcd_gotoxy(uint8_t x, uint8_t y);
-
-// ��� � ���� ���������
-void lcd_led(uint8_t onoff);
-
-// ����������� ������� � ������� ������� �������
-void lcd_putc(char c);
-
-// ����� ������ �� �������
-void lcd_puts(const char *s);
-
-// ����� ������ �� ������
-void lcd_puts_p(const char *progmem_s);
-
-// ��������� ������� ��� �������� ������ �������
-void lcd_command(uint8_t cmd);
-
-// �������� ����� �� �������
-void lcd_data(uint8_t data);
-
-// ������� ��� ��������������� ���������� ��������� ��������� � ������ ���������
-#define lcd_puts_P(__s)         lcd_puts_p(PSTR(__s))
-
-#endif
diff --git a/main_sketch/main.c b/main_sketch/main.c
deleted file mode 100644
index 28aa299..0000000
--- a/main_sketch/main.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include "protocol.h"
-#include "stdio.h"
-
-int main(){
-//    union convert_float sample;
-//    sample.fVal = 135;
-//    union convert_float sample2;
-//    for(int i = 0; i < sizeof sample.buf; i++){
-//        printf("buffer %d: %d\n", i, sample.buf[i]);
-//        sample2.buf[i] = sample.buf[i];
-//    }
-//
-//    printf("float: %f\n", sample2.fVal);
-
-//    union convert_char sample;
-//    sample.cVal = "world_word_z";
-//    union convert_char sample2;
-//    for(int i = 0; i < sizeof sample.buf; i++){
-//        printf("buffer %d: %d\n", i, sample.buf[i]);
-//        sample2.buf[i] = sample.buf[i];
-//    }
-//
-//    printf("char: %s\n", sample2.cVal);
-
-
-//    char a[64];
-//    float f = 3.14159;  // number to start with
-//
-//    snprintf(a, sizeof a, "%f", f);   // point a to f's location
-//
-//    float num = atof(a);
-//
-//    printf("%s\n", a);
-//    printf("%f", num);
-//
-//    // print float & byte array as hex
-//    printf("float: %f\n", f);
-//    printf("byte array: %hhX:%hhX:%hhX:%hhX\n", \
-//    a[0], a[1], a[2], a[3]);
-
-//    uint8_t num;
-//    sscanf(a, "%s", &num);
-//    float s = atof(a);
-//    printf("%f\n", s);
-
-//    float vIn = -1.07231;
-//    char *vOut[4];
-//    _gcvt_s(vOut,sizeof(vOut),vIn,9);
-//
-//    float vA = (float)strtod(vOut,NULL);
-//
-//    printf("\n%f", vA);
-
-    printf("Test number\n");
-    struct message messNum;
-    messNum.numbers[0] = 12.134;
-    messNum.numbers[1] = 135.123;
-    messNum.numbers[2] = 5214.12;
-    messNum.numbers[3] = 12345.12345;
-    messNum.len_str = 0;
-    messNum.len_numbers = 4;
-
-    uint8_t buffer_number[] = {};
-    size_t len_buffer_number;
-    protocol_encode(messNum, buffer_number, &len_buffer_number);
-    for (int i = 0; i < len_buffer_number; i++){
-        printf("buffer %d: %d\n", i, buffer_number[i]);
-    }
-
-    printf("---------------------------------------\n");
-
-    struct message respNum;
-    protocol_decode(buffer_number, len_buffer_number, &respNum);
-    for (int i = 0; i < 4; i++){
-        printf("number %d: %f\n", i, respNum.numbers[i]);
-    }
-
-    printf("\nTest word\n");
-    struct message messStr;
-    messStr.str = "word_war";
-    messStr.len_str = sizeof messStr.str;
-    messStr.len_numbers = 0;
-    uint8_t bufferStr[] = {};
-    size_t len_bufferStr;
-    protocol_encode(messStr, bufferStr, &len_bufferStr);
-    for (int i = 0; i < len_bufferStr; i++){
-        printf("buffer %d: %d\n", i, bufferStr[i]);
-    }
-
-    printf("---------------------------------------\n");
-
-    struct message respStr;
-    protocol_decode(bufferStr, len_bufferStr, &respStr);
-    printf("message: %s\n", respStr.str);
-
-    printf("\nTest number + word\n");
-
-    struct message mess;
-    mess.numbers[0] = 12.134;
-    mess.numbers[1] = 135.123;
-    mess.len_numbers = 2;
-    mess.str = "word_war_sas";
-    mess.len_str = sizeof mess.str;
-    uint8_t buffer[] = {};
-    size_t len_buffer;
-    protocol_encode(mess, buffer, &len_buffer);
-    for (int i = 0; i < len_buffer; i++){
-        printf("buffer %d: %d\n", i, buffer[i]);
-    }
-
-    printf("---------------------------------------\n");
-
-    struct message resp;
-    protocol_decode(buffer, len_buffer, &resp);
-    for (int i = 0; i < resp.len_numbers; i++){
-        printf("numbers %d: %f\n", i, resp.numbers[i]);
-    }
-    printf("message: %s\n", resp.str);
-
-}
\ No newline at end of file
diff --git a/main_sketch/main_sketch.ino b/main_sketch/main_sketch.ino
deleted file mode 100644
index 97d49b8..0000000
--- a/main_sketch/main_sketch.ino
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "lcd.h"
-#include "client.h"
-#include "uart.h"
-#include "stdbool.h"
-#include "stdio.h"
-
-struct Client hdlc;
-bool flag_connection = false;
-
-void setup() {
-    Lsd_inciliation();
-    UART_init();
-    init_hdlc_client(&hdlc, 200);
-}
-
-void loop() {
-//    while(true){
-//        if (!flag_connection){
-//        }
-//    }
-
-    hdlc_connect(&hdlc);
-    uint8_t buffer[10];
-
-    hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer);
-
-    UART_send(&buffer, sizeof buffer);
-
-    while(!flag_connection){
-        uint8_t* buffer_recive[10];
-        UART_receive(&buffer_recive, sizeof buffer_recive);
-
-        int err = hdlc_timeout_handler(&hdlc, 1);
-        if (err == ERR_FRAME_TIME_OUT){
-            hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer);
-            UART_send(buffer, sizeof buffer);
-            continue;
-        }
-
-        err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive, sizeof buffer_recive, 0, 0);
-        if (err < 0){
-            if (err == ERR_INVALID_SEQ_NUMBER_FRAME){
-                uint8_t* buffer_rej[10];
-                hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej);
-                UART_send(&buffer_rej, sizeof buffer_rej);
-                return err;
-            }
-            return err;
-        }
-
-        if (hdlc.state == READY_STATE){
-            flag_connection = true;
-        }
-    }
-
-    struct message mess;
-    mess.numbers[0] = 1.23;
-    mess.numbers[1] = 22.1;
-    mess.numbers[2] = 100;
-    mess.len_numbers = 3;
-    mess.str = "word war in new world io ex";
-    mess.len_str = sizeof mess.str;
-
-    uint8_t data[64];
-    size_t len_data;
-    protocol_encode(mess, data, &len_data);
-
-    hdlc_send_data(&hdlc, data, len_data);
-    uint8_t buffer_data[72];
-    hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data);
-
-    UART_send(&buffer_data, sizeof buffer_data);
-
-    bool flag_recive = false;
-    uint8_t data_recive[64];
-    size_t len_data_recive;
-    while (!flag_recive){
-        uint8_t* buffer_recive_data[72];
-        UART_receive(&buffer_recive_data, sizeof buffer_recive_data);
-
-        int err = hdlc_timeout_handler(&hdlc, 1);
-        if (err == ERR_FRAME_TIME_OUT){
-            hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data);
-            UART_send(&buffer_data, sizeof buffer_data);
-            continue;
-        }
-
-        err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive_data, sizeof buffer_recive_data, data_recive, &len_data_recive);
-        if (err < 0){
-            if (err == ERR_INVALID_SEQ_NUMBER_FRAME){
-                uint8_t* buffer_rej[10];
-                hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej);
-                UART_send(&buffer_rej, sizeof buffer_rej);
-                return err;
-            }
-            return err;
-        }
-
-        if (hdlc.state == SEND){
-            flag_recive = true;
-        }
-    }
-
-    struct message resp;
-    protocol_decode(data_recive, len_data_recive, &resp);
-
-    printLcd(&resp);
-}
\ No newline at end of file
diff --git a/main_sketch/pcf8574.h b/main_sketch/pcf8574.h
deleted file mode 100644
index 74af505..0000000
--- a/main_sketch/pcf8574.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef PCF8574_H_
-#define PCF8574_H_
-
-#define PCF8574_ADDRBASE (0x27) // ����� ���-��
-
-#define PCF8574_I2CINIT 1 // ������������� i2c
-
-#define PCF8574_MAXDEVICES 1 // ���� ���-�� ��������
-#define PCF8574_MAXPINS 8 // ���� ���-�� �����
-
-void pcf8574_init();
-int8_t pcf8574_getoutput(uint8_t deviceid);
-int8_t pcf8574_getoutputpin(uint8_t deviceid, uint8_t pin);
-int8_t pcf8574_setoutput(uint8_t deviceid, uint8_t data);
-int8_t pcf8574_setoutputpins(uint8_t deviceid, uint8_t pinstart, uint8_t pinlength, int8_t data);
-int8_t pcf8574_setoutputpin(uint8_t deviceid, uint8_t pin, uint8_t data);
-int8_t pcf8574_setoutputpinhigh(uint8_t deviceid, uint8_t pin);
-int8_t pcf8574_setoutputpinlow(uint8_t deviceid, uint8_t pin);
-int8_t pcf8574_getinput(uint8_t deviceid);
-int8_t pcf8574_getinputpin(uint8_t deviceid, uint8_t pin);
-#endif
diff --git a/main_sketch/timer.c b/main_sketch/timer.c
deleted file mode 100644
index ca35795..0000000
--- a/main_sketch/timer.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <avr/io.h>
-#include <avr/interrupt.h>
-
-static volatile unsigned long timerMillis = 0;
-
-void timerInit() {
-	TCCR1B |= (1 << WGM12) | (1 << CS11) | (1 << CS10);
-	OCR1A = 250;
-	TIMSK1 |= (1 << OCIE1A);
-	sei();
-}
-
-unsigned long millis() {
-	unsigned long ms;
-	ms = timerMillis;
-	return ms;
-}
-
-ISR(TIMER1_COMPA_vect) {
-	timerMillis++;
-}
\ No newline at end of file
diff --git a/main_sketch/timer.h b/main_sketch/timer.h
deleted file mode 100644
index f5b07fe..0000000
--- a/main_sketch/timer.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef TIMER_H
-#define TIMER_H
-
-void timerInit();
-unsigned long millis();
-
-#endif // TIMER_H
\ No newline at end of file
diff --git a/protocol/main.c b/protocol/main.c
deleted file mode 100644
index 28aa299..0000000
--- a/protocol/main.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include "protocol.h"
-#include "stdio.h"
-
-int main(){
-//    union convert_float sample;
-//    sample.fVal = 135;
-//    union convert_float sample2;
-//    for(int i = 0; i < sizeof sample.buf; i++){
-//        printf("buffer %d: %d\n", i, sample.buf[i]);
-//        sample2.buf[i] = sample.buf[i];
-//    }
-//
-//    printf("float: %f\n", sample2.fVal);
-
-//    union convert_char sample;
-//    sample.cVal = "world_word_z";
-//    union convert_char sample2;
-//    for(int i = 0; i < sizeof sample.buf; i++){
-//        printf("buffer %d: %d\n", i, sample.buf[i]);
-//        sample2.buf[i] = sample.buf[i];
-//    }
-//
-//    printf("char: %s\n", sample2.cVal);
-
-
-//    char a[64];
-//    float f = 3.14159;  // number to start with
-//
-//    snprintf(a, sizeof a, "%f", f);   // point a to f's location
-//
-//    float num = atof(a);
-//
-//    printf("%s\n", a);
-//    printf("%f", num);
-//
-//    // print float & byte array as hex
-//    printf("float: %f\n", f);
-//    printf("byte array: %hhX:%hhX:%hhX:%hhX\n", \
-//    a[0], a[1], a[2], a[3]);
-
-//    uint8_t num;
-//    sscanf(a, "%s", &num);
-//    float s = atof(a);
-//    printf("%f\n", s);
-
-//    float vIn = -1.07231;
-//    char *vOut[4];
-//    _gcvt_s(vOut,sizeof(vOut),vIn,9);
-//
-//    float vA = (float)strtod(vOut,NULL);
-//
-//    printf("\n%f", vA);
-
-    printf("Test number\n");
-    struct message messNum;
-    messNum.numbers[0] = 12.134;
-    messNum.numbers[1] = 135.123;
-    messNum.numbers[2] = 5214.12;
-    messNum.numbers[3] = 12345.12345;
-    messNum.len_str = 0;
-    messNum.len_numbers = 4;
-
-    uint8_t buffer_number[] = {};
-    size_t len_buffer_number;
-    protocol_encode(messNum, buffer_number, &len_buffer_number);
-    for (int i = 0; i < len_buffer_number; i++){
-        printf("buffer %d: %d\n", i, buffer_number[i]);
-    }
-
-    printf("---------------------------------------\n");
-
-    struct message respNum;
-    protocol_decode(buffer_number, len_buffer_number, &respNum);
-    for (int i = 0; i < 4; i++){
-        printf("number %d: %f\n", i, respNum.numbers[i]);
-    }
-
-    printf("\nTest word\n");
-    struct message messStr;
-    messStr.str = "word_war";
-    messStr.len_str = sizeof messStr.str;
-    messStr.len_numbers = 0;
-    uint8_t bufferStr[] = {};
-    size_t len_bufferStr;
-    protocol_encode(messStr, bufferStr, &len_bufferStr);
-    for (int i = 0; i < len_bufferStr; i++){
-        printf("buffer %d: %d\n", i, bufferStr[i]);
-    }
-
-    printf("---------------------------------------\n");
-
-    struct message respStr;
-    protocol_decode(bufferStr, len_bufferStr, &respStr);
-    printf("message: %s\n", respStr.str);
-
-    printf("\nTest number + word\n");
-
-    struct message mess;
-    mess.numbers[0] = 12.134;
-    mess.numbers[1] = 135.123;
-    mess.len_numbers = 2;
-    mess.str = "word_war_sas";
-    mess.len_str = sizeof mess.str;
-    uint8_t buffer[] = {};
-    size_t len_buffer;
-    protocol_encode(mess, buffer, &len_buffer);
-    for (int i = 0; i < len_buffer; i++){
-        printf("buffer %d: %d\n", i, buffer[i]);
-    }
-
-    printf("---------------------------------------\n");
-
-    struct message resp;
-    protocol_decode(buffer, len_buffer, &resp);
-    for (int i = 0; i < resp.len_numbers; i++){
-        printf("numbers %d: %f\n", i, resp.numbers[i]);
-    }
-    printf("message: %s\n", resp.str);
-
-}
\ No newline at end of file
diff --git a/protocol/protocol.c b/protocol/protocol.c
deleted file mode 100644
index 9717050..0000000
--- a/protocol/protocol.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "protocol.h"
-
-void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){
-    int count_number = 0;
-    for(int i = 0; i < len_encode_message; i++){
-        if (encode_message[i] == FLAG_NUMBER){
-            union convert_float sample;
-            for (int z = 0; z < sizeof sample.buf; z++){
-                i++;
-                sample.buf[z] = encode_message[i];
-            }
-            decode_message->numbers[count_number++] = sample.fVal;
-            decode_message->len_numbers++;
-        }
-
-
-        if (encode_message[i] == FLAG_WORD){
-            int count_word = 0;
-            i++;
-            union convert_char sample;
-            for (int z = 0; z < encode_message[i]; z++){
-                i++;
-                sample.buf[z] = encode_message[i];
-            }
-            decode_message->str = sample.cVal;
-            decode_message->len_str = count_word;
-        }
-    }
-    decode_message->len_numbers = count_number;
-}
-
-void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){
-    size_t count = 0;
-    if (message.len_numbers > 0){
-        for (int i = 0; i < message.len_numbers; i++){
-            encode_message[count++] = FLAG_NUMBER;
-            union convert_float sample;
-            sample.fVal = message.numbers[i];
-            for (int z = 0; z < sizeof sample.buf; z++){
-                encode_message[count++] = sample.buf[z];
-            }
-        }
-    }
-
-    if (message.len_str > 0){
-        encode_message[count++] = FLAG_WORD;
-        encode_message[count++] = message.len_str;
-        union convert_char sample;
-        sample.cVal = message.str;
-        for (int i = 0; i < message.len_str; i++){
-            encode_message[count++] = sample.buf[i];
-        }
-    }
-
-    *len_encode_message = count;
-}
\ No newline at end of file
diff --git a/protocol/protocol.h b/protocol/protocol.h
deleted file mode 100644
index c23f040..0000000
--- a/protocol/protocol.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef PROTOCOL_H
-#define PROTOCOL_H
-
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-#include "stdio.h"
-
-#define FLAG_NUMBER 0
-#define FLAG_WORD 1
-
-struct message{
-    float numbers[3];
-    size_t len_numbers;
-    char* str;
-    size_t len_str;
-};
-
-union convert_float{
-    float fVal;
-    uint8_t buf[4];
-};
-
-union convert_char{
-    char* cVal;
-    uint8_t buf[64];
-};
-
-void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message);
-void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message);
-
-#endif //PROTOCOL_H