
main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000682  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .bss          00000004  00800060  00800060  000006f6  2**0
                  ALLOC
  2 .debug_aranges 00000020  00000000  00000000  000006f6  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_pubnames 00000149  00000000  00000000  00000716  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_info   00000837  00000000  00000000  0000085f  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_abbrev 00000194  00000000  00000000  00001096  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_line   000007ba  00000000  00000000  0000122a  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_frame  00000140  00000000  00000000  000019e4  2**2
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_str    000001f4  00000000  00000000  00001b24  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_loc    0000063d  00000000  00000000  00001d18  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_ranges 00000048  00000000  00000000  00002355  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26 <__ctors_end>
   2:	1f c0       	rjmp	.+62     	; 0x42 <__bad_interrupt>
   4:	1e c0       	rjmp	.+60     	; 0x42 <__bad_interrupt>
   6:	1d c0       	rjmp	.+58     	; 0x42 <__bad_interrupt>
   8:	1c c0       	rjmp	.+56     	; 0x42 <__bad_interrupt>
   a:	1b c0       	rjmp	.+54     	; 0x42 <__bad_interrupt>
   c:	1a c0       	rjmp	.+52     	; 0x42 <__bad_interrupt>
   e:	19 c0       	rjmp	.+50     	; 0x42 <__bad_interrupt>
  10:	18 c0       	rjmp	.+48     	; 0x42 <__bad_interrupt>
  12:	17 c0       	rjmp	.+46     	; 0x42 <__bad_interrupt>
  14:	16 c0       	rjmp	.+44     	; 0x42 <__bad_interrupt>
  16:	15 c0       	rjmp	.+42     	; 0x42 <__bad_interrupt>
  18:	14 c0       	rjmp	.+40     	; 0x42 <__bad_interrupt>
  1a:	13 c0       	rjmp	.+38     	; 0x42 <__bad_interrupt>
  1c:	12 c0       	rjmp	.+36     	; 0x42 <__bad_interrupt>
  1e:	11 c0       	rjmp	.+34     	; 0x42 <__bad_interrupt>
  20:	10 c0       	rjmp	.+32     	; 0x42 <__bad_interrupt>
  22:	0f c0       	rjmp	.+30     	; 0x42 <__bad_interrupt>
  24:	0e c0       	rjmp	.+28     	; 0x42 <__bad_interrupt>

00000026 <__ctors_end>:
  26:	11 24       	eor	r1, r1
  28:	1f be       	out	0x3f, r1	; 63
  2a:	cf ed       	ldi	r28, 0xDF	; 223
  2c:	cd bf       	out	0x3d, r28	; 61

0000002e <__do_clear_bss>:
  2e:	10 e0       	ldi	r17, 0x00	; 0
  30:	a0 e6       	ldi	r26, 0x60	; 96
  32:	b0 e0       	ldi	r27, 0x00	; 0
  34:	01 c0       	rjmp	.+2      	; 0x38 <.do_clear_bss_start>

00000036 <.do_clear_bss_loop>:
  36:	1d 92       	st	X+, r1

00000038 <.do_clear_bss_start>:
  38:	a4 36       	cpi	r26, 0x64	; 100
  3a:	b1 07       	cpc	r27, r17
  3c:	e1 f7       	brne	.-8      	; 0x36 <.do_clear_bss_loop>
  3e:	12 d1       	rcall	.+548    	; 0x264 <main>
  40:	1e c3       	rjmp	.+1596   	; 0x67e <_exit>

00000042 <__bad_interrupt>:
  42:	de cf       	rjmp	.-68     	; 0x0 <__vectors>

00000044 <LCDsendChar>:
#include <avr/pgmspace.h>
#include <util/delay.h>

void LCDsendChar(uint8_t ch)		//Sends Char to LCD
{
	LDP=(ch&0b11110000);
  44:	28 2f       	mov	r18, r24
  46:	20 7f       	andi	r18, 0xF0	; 240
  48:	28 bb       	out	0x18, r18	; 24
	LCP|=1<<LCD_RS;
  4a:	c0 9a       	sbi	0x18, 0	; 24
	LCP|=1<<LCD_E;		
  4c:	c2 9a       	sbi	0x18, 2	; 24
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  4e:	20 ed       	ldi	r18, 0xD0	; 208
  50:	37 e0       	ldi	r19, 0x07	; 7
  52:	f9 01       	movw	r30, r18
  54:	31 97       	sbiw	r30, 0x01	; 1
  56:	f1 f7       	brne	.-4      	; 0x54 <LCDsendChar+0x10>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);	
  58:	c2 98       	cbi	0x18, 2	; 24
	LCP&=~(1<<LCD_RS);
  5a:	c0 98       	cbi	0x18, 0	; 24
  5c:	f9 01       	movw	r30, r18
  5e:	31 97       	sbiw	r30, 0x01	; 1
  60:	f1 f7       	brne	.-4      	; 0x5e <LCDsendChar+0x1a>
	_delay_ms(1);
	LDP=((ch&0b00001111)<<4);
  62:	90 e0       	ldi	r25, 0x00	; 0
  64:	44 e0       	ldi	r20, 0x04	; 4
  66:	88 0f       	add	r24, r24
  68:	99 1f       	adc	r25, r25
  6a:	4a 95       	dec	r20
  6c:	e1 f7       	brne	.-8      	; 0x66 <LCDsendChar+0x22>
  6e:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_RS;
  70:	c0 9a       	sbi	0x18, 0	; 24
	LCP|=1<<LCD_E;		
  72:	c2 9a       	sbi	0x18, 2	; 24
  74:	c9 01       	movw	r24, r18
  76:	01 97       	sbiw	r24, 0x01	; 1
  78:	f1 f7       	brne	.-4      	; 0x76 <LCDsendChar+0x32>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);	
  7a:	c2 98       	cbi	0x18, 2	; 24
	LCP&=~(1<<LCD_RS);
  7c:	c0 98       	cbi	0x18, 0	; 24
  7e:	c9 01       	movw	r24, r18
  80:	01 97       	sbiw	r24, 0x01	; 1
  82:	f1 f7       	brne	.-4      	; 0x80 <LCDsendChar+0x3c>
	_delay_ms(1);
}
  84:	08 95       	ret

00000086 <LCDsendCommand>:
void LCDsendCommand(uint8_t cmd)	//Sends Command to LCD
{
	LDP=(cmd&0b11110000);
  86:	28 2f       	mov	r18, r24
  88:	20 7f       	andi	r18, 0xF0	; 240
  8a:	28 bb       	out	0x18, r18	; 24
	LCP|=1<<LCD_E;		
  8c:	c2 9a       	sbi	0x18, 2	; 24
  8e:	20 ed       	ldi	r18, 0xD0	; 208
  90:	37 e0       	ldi	r19, 0x07	; 7
  92:	f9 01       	movw	r30, r18
  94:	31 97       	sbiw	r30, 0x01	; 1
  96:	f1 f7       	brne	.-4      	; 0x94 <LCDsendCommand+0xe>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  98:	c2 98       	cbi	0x18, 2	; 24
  9a:	f9 01       	movw	r30, r18
  9c:	31 97       	sbiw	r30, 0x01	; 1
  9e:	f1 f7       	brne	.-4      	; 0x9c <LCDsendCommand+0x16>
	_delay_ms(1);
	LDP=((cmd&0b00001111)<<4);	
  a0:	90 e0       	ldi	r25, 0x00	; 0
  a2:	54 e0       	ldi	r21, 0x04	; 4
  a4:	88 0f       	add	r24, r24
  a6:	99 1f       	adc	r25, r25
  a8:	5a 95       	dec	r21
  aa:	e1 f7       	brne	.-8      	; 0xa4 <LCDsendCommand+0x1e>
  ac:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E;		
  ae:	c2 9a       	sbi	0x18, 2	; 24
  b0:	c9 01       	movw	r24, r18
  b2:	01 97       	sbiw	r24, 0x01	; 1
  b4:	f1 f7       	brne	.-4      	; 0xb2 <LCDsendCommand+0x2c>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  b6:	c2 98       	cbi	0x18, 2	; 24
  b8:	c9 01       	movw	r24, r18
  ba:	01 97       	sbiw	r24, 0x01	; 1
  bc:	f1 f7       	brne	.-4      	; 0xba <LCDsendCommand+0x34>
	_delay_ms(1);
}
  be:	08 95       	ret

000000c0 <LCDinit>:
  c0:	80 e3       	ldi	r24, 0x30	; 48
  c2:	95 e7       	ldi	r25, 0x75	; 117
  c4:	01 97       	sbiw	r24, 0x01	; 1
  c6:	f1 f7       	brne	.-4      	; 0xc4 <LCDinit+0x4>
void LCDinit(void)//Initializes LCD
{
	_delay_ms(15);
	LDP=0x00;
  c8:	18 ba       	out	0x18, r1	; 24
	LCP=0x00;
  ca:	18 ba       	out	0x18, r1	; 24
	LDDR|=1<<LCD_D7|1<<LCD_D6|1<<LCD_D5|1<<LCD_D4;
  cc:	87 b3       	in	r24, 0x17	; 23
  ce:	80 6f       	ori	r24, 0xF0	; 240
  d0:	87 bb       	out	0x17, r24	; 23
	LCDR|=1<<LCD_E|1<<LCD_RW|1<<LCD_RS;
  d2:	87 b3       	in	r24, 0x17	; 23
  d4:	87 60       	ori	r24, 0x07	; 7
  d6:	87 bb       	out	0x17, r24	; 23
   //---------one------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
  d8:	80 e3       	ldi	r24, 0x30	; 48
  da:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
  dc:	c2 9a       	sbi	0x18, 2	; 24
  de:	20 ed       	ldi	r18, 0xD0	; 208
  e0:	37 e0       	ldi	r19, 0x07	; 7
  e2:	f9 01       	movw	r30, r18
  e4:	31 97       	sbiw	r30, 0x01	; 1
  e6:	f1 f7       	brne	.-4      	; 0xe4 <__stack+0x5>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  e8:	c2 98       	cbi	0x18, 2	; 24
  ea:	f9 01       	movw	r30, r18
  ec:	31 97       	sbiw	r30, 0x01	; 1
  ee:	f1 f7       	brne	.-4      	; 0xec <__stack+0xd>
	_delay_ms(1);
	//-----------two-----------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
  f0:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
  f2:	c2 9a       	sbi	0x18, 2	; 24
  f4:	c9 01       	movw	r24, r18
  f6:	01 97       	sbiw	r24, 0x01	; 1
  f8:	f1 f7       	brne	.-4      	; 0xf6 <__stack+0x17>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  fa:	c2 98       	cbi	0x18, 2	; 24
  fc:	c9 01       	movw	r24, r18
  fe:	01 97       	sbiw	r24, 0x01	; 1
 100:	f1 f7       	brne	.-4      	; 0xfe <__stack+0x1f>
	_delay_ms(1);
	//-------three-------------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|0<<LCD_D4; //4 bit mode
 102:	80 e2       	ldi	r24, 0x20	; 32
 104:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
 106:	c2 9a       	sbi	0x18, 2	; 24
 108:	c9 01       	movw	r24, r18
 10a:	01 97       	sbiw	r24, 0x01	; 1
 10c:	f1 f7       	brne	.-4      	; 0x10a <__stack+0x2b>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
 10e:	c2 98       	cbi	0x18, 2	; 24
 110:	c9 01       	movw	r24, r18
 112:	01 97       	sbiw	r24, 0x01	; 1
 114:	f1 f7       	brne	.-4      	; 0x112 <__stack+0x33>
	_delay_ms(1);
	//--------4 bit--dual line---------------
	LCDsendCommand(0b00101000);
 116:	88 e2       	ldi	r24, 0x28	; 40
 118:	b6 df       	rcall	.-148    	; 0x86 <LCDsendCommand>
   //-----increment address, cursor shift------
	LCDsendCommand(0b00001110);
 11a:	8e e0       	ldi	r24, 0x0E	; 14
 11c:	b4 df       	rcall	.-152    	; 0x86 <LCDsendCommand>


}			
 11e:	08 95       	ret

00000120 <LCDclr>:
void LCDclr(void)				//Clears LCD
{
	LCDsendCommand(1<<LCD_CLR);
 120:	81 e0       	ldi	r24, 0x01	; 1
 122:	b1 df       	rcall	.-158    	; 0x86 <LCDsendCommand>
}
 124:	08 95       	ret

00000126 <LCDhome>:
void LCDhome(void)			//LCD cursor home
{
	LCDsendCommand(1<<LCD_HOME);
 126:	82 e0       	ldi	r24, 0x02	; 2
 128:	ae df       	rcall	.-164    	; 0x86 <LCDsendCommand>
}
 12a:	08 95       	ret

0000012c <LCDstring>:
void LCDstring(uint8_t* data, uint8_t nBytes)	//Outputs string to LCD
{
 12c:	0f 93       	push	r16
 12e:	1f 93       	push	r17
 130:	cf 93       	push	r28
 132:	df 93       	push	r29
 134:	06 2f       	mov	r16, r22
register uint8_t i;

	// check to make sure we have a good pointer
	if (!data) return;
 136:	00 97       	sbiw	r24, 0x00	; 0
 138:	41 f0       	breq	.+16     	; 0x14a <LCDstring+0x1e>
 13a:	ec 01       	movw	r28, r24
 13c:	10 e0       	ldi	r17, 0x00	; 0
 13e:	03 c0       	rjmp	.+6      	; 0x146 <LCDstring+0x1a>

	// print data
	for(i=0; i<nBytes; i++)
	{
		LCDsendChar(data[i]);
 140:	89 91       	ld	r24, Y+
 142:	80 df       	rcall	.-256    	; 0x44 <LCDsendChar>

	// check to make sure we have a good pointer
	if (!data) return;

	// print data
	for(i=0; i<nBytes; i++)
 144:	1f 5f       	subi	r17, 0xFF	; 255
 146:	10 17       	cp	r17, r16
 148:	d8 f3       	brcs	.-10     	; 0x140 <LCDstring+0x14>
	{
		LCDsendChar(data[i]);
	}
}
 14a:	df 91       	pop	r29
 14c:	cf 91       	pop	r28
 14e:	1f 91       	pop	r17
 150:	0f 91       	pop	r16
 152:	08 95       	ret

00000154 <LCDGotoXY>:
void LCDGotoXY(uint8_t x, uint8_t y)	//Cursor to X Y position
{
	register uint8_t DDRAMAddr;
	// remap lines into proper order
	switch(y)
 154:	62 30       	cpi	r22, 0x02	; 2
 156:	31 f0       	breq	.+12     	; 0x164 <LCDGotoXY+0x10>
 158:	63 30       	cpi	r22, 0x03	; 3
 15a:	31 f0       	breq	.+12     	; 0x168 <LCDGotoXY+0x14>
 15c:	61 30       	cpi	r22, 0x01	; 1
 15e:	29 f4       	brne	.+10     	; 0x16a <LCDGotoXY+0x16>
	{
	case 0: DDRAMAddr = LCD_LINE0_DDRAMADDR+x; break;
	case 1: DDRAMAddr = LCD_LINE1_DDRAMADDR+x; break;
 160:	80 5c       	subi	r24, 0xC0	; 192
 162:	03 c0       	rjmp	.+6      	; 0x16a <LCDGotoXY+0x16>
	case 2: DDRAMAddr = LCD_LINE2_DDRAMADDR+x; break;
 164:	8c 5e       	subi	r24, 0xEC	; 236
 166:	01 c0       	rjmp	.+2      	; 0x16a <LCDGotoXY+0x16>
	case 3: DDRAMAddr = LCD_LINE3_DDRAMADDR+x; break;
 168:	8c 5a       	subi	r24, 0xAC	; 172
	default: DDRAMAddr = LCD_LINE0_DDRAMADDR+x;
	}
	// set data address
	LCDsendCommand(1<<LCD_DDRAM | DDRAMAddr);
 16a:	80 68       	ori	r24, 0x80	; 128
 16c:	8c df       	rcall	.-232    	; 0x86 <LCDsendCommand>
	
}
 16e:	08 95       	ret

00000170 <CopyStringtoLCD>:
//Copies string from flash memory to LCD at x y position
//const uint8_t welcomeln1[] PROGMEM="AVR LCD DEMO\0";
//CopyStringtoLCD(welcomeln1, 3, 1);	
void CopyStringtoLCD(const uint8_t *FlashLoc, uint8_t x, uint8_t y)
{
 170:	1f 93       	push	r17
 172:	cf 93       	push	r28
 174:	df 93       	push	r29
 176:	ec 01       	movw	r28, r24
 178:	86 2f       	mov	r24, r22
	uint8_t i;
	LCDGotoXY(x,y);
 17a:	64 2f       	mov	r22, r20
 17c:	eb df       	rcall	.-42     	; 0x154 <LCDGotoXY>
 17e:	10 e0       	ldi	r17, 0x00	; 0
 180:	02 c0       	rjmp	.+4      	; 0x186 <CopyStringtoLCD+0x16>
	for(i=0;(uint8_t)pgm_read_byte(&FlashLoc[i]);i++)
	{
		LCDsendChar((uint8_t)pgm_read_byte(&FlashLoc[i]));
 182:	60 df       	rcall	.-320    	; 0x44 <LCDsendChar>
//CopyStringtoLCD(welcomeln1, 3, 1);	
void CopyStringtoLCD(const uint8_t *FlashLoc, uint8_t x, uint8_t y)
{
	uint8_t i;
	LCDGotoXY(x,y);
	for(i=0;(uint8_t)pgm_read_byte(&FlashLoc[i]);i++)
 184:	1f 5f       	subi	r17, 0xFF	; 255
 186:	fe 01       	movw	r30, r28
 188:	e1 0f       	add	r30, r17
 18a:	f1 1d       	adc	r31, r1
 18c:	84 91       	lpm	r24, Z+
 18e:	88 23       	and	r24, r24
 190:	c1 f7       	brne	.-16     	; 0x182 <CopyStringtoLCD+0x12>
	{
		LCDsendChar((uint8_t)pgm_read_byte(&FlashLoc[i]));
	}
}
 192:	df 91       	pop	r29
 194:	cf 91       	pop	r28
 196:	1f 91       	pop	r17
 198:	08 95       	ret

0000019a <LCDdefinechar>:
0b00000000,
0b00000000
};
LCDdefinechar(backslash,0);
*/
void LCDdefinechar(const uint8_t *pc,uint8_t char_code){
 19a:	ef 92       	push	r14
 19c:	ff 92       	push	r15
 19e:	0f 93       	push	r16
 1a0:	1f 93       	push	r17
 1a2:	cf 93       	push	r28
 1a4:	df 93       	push	r29
 1a6:	7c 01       	movw	r14, r24
 1a8:	16 2f       	mov	r17, r22
	uint8_t a, pcc;
	uint16_t i;
	a=(char_code<<3)|0x40;
 1aa:	11 0f       	add	r17, r17
 1ac:	11 0f       	add	r17, r17
 1ae:	11 0f       	add	r17, r17
 1b0:	10 64       	ori	r17, 0x40	; 64
 1b2:	c0 e0       	ldi	r28, 0x00	; 0
 1b4:	d0 e0       	ldi	r29, 0x00	; 0
	for (i=0; i<8; i++){
		pcc=pgm_read_byte(&pc[i]);
 1b6:	f7 01       	movw	r30, r14
 1b8:	ec 0f       	add	r30, r28
 1ba:	fd 1f       	adc	r31, r29
 1bc:	04 91       	lpm	r16, Z+
		LCDsendCommand(a++);
 1be:	81 2f       	mov	r24, r17
 1c0:	8c 0f       	add	r24, r28
 1c2:	61 df       	rcall	.-318    	; 0x86 <LCDsendCommand>
		LCDsendChar(pcc);
 1c4:	80 2f       	mov	r24, r16
 1c6:	3e df       	rcall	.-388    	; 0x44 <LCDsendChar>
*/
void LCDdefinechar(const uint8_t *pc,uint8_t char_code){
	uint8_t a, pcc;
	uint16_t i;
	a=(char_code<<3)|0x40;
	for (i=0; i<8; i++){
 1c8:	21 96       	adiw	r28, 0x01	; 1
 1ca:	c8 30       	cpi	r28, 0x08	; 8
 1cc:	d1 05       	cpc	r29, r1
 1ce:	99 f7       	brne	.-26     	; 0x1b6 <LCDdefinechar+0x1c>
		pcc=pgm_read_byte(&pc[i]);
		LCDsendCommand(a++);
		LCDsendChar(pcc);
		}
}
 1d0:	df 91       	pop	r29
 1d2:	cf 91       	pop	r28
 1d4:	1f 91       	pop	r17
 1d6:	0f 91       	pop	r16
 1d8:	ff 90       	pop	r15
 1da:	ef 90       	pop	r14
 1dc:	08 95       	ret

000001de <LCDshiftLeft>:

void LCDshiftLeft(uint8_t n)	//Scrol n of characters Right
{
 1de:	0f 93       	push	r16
 1e0:	1f 93       	push	r17
 1e2:	08 2f       	mov	r16, r24
 1e4:	10 e0       	ldi	r17, 0x00	; 0
 1e6:	03 c0       	rjmp	.+6      	; 0x1ee <LCDshiftLeft+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x1E);
 1e8:	8e e1       	ldi	r24, 0x1E	; 30
 1ea:	4d df       	rcall	.-358    	; 0x86 <LCDsendCommand>
		}
}

void LCDshiftLeft(uint8_t n)	//Scrol n of characters Right
{
	for (uint8_t i=0;i<n;i++)
 1ec:	1f 5f       	subi	r17, 0xFF	; 255
 1ee:	10 17       	cp	r17, r16
 1f0:	d8 f3       	brcs	.-10     	; 0x1e8 <LCDshiftLeft+0xa>
	{
		LCDsendCommand(0x1E);
	}
}
 1f2:	1f 91       	pop	r17
 1f4:	0f 91       	pop	r16
 1f6:	08 95       	ret

000001f8 <LCDshiftRight>:
void LCDshiftRight(uint8_t n)	//Scrol n of characters Left
{
 1f8:	0f 93       	push	r16
 1fa:	1f 93       	push	r17
 1fc:	08 2f       	mov	r16, r24
 1fe:	10 e0       	ldi	r17, 0x00	; 0
 200:	03 c0       	rjmp	.+6      	; 0x208 <LCDshiftRight+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x18);
 202:	88 e1       	ldi	r24, 0x18	; 24
 204:	40 df       	rcall	.-384    	; 0x86 <LCDsendCommand>
		LCDsendCommand(0x1E);
	}
}
void LCDshiftRight(uint8_t n)	//Scrol n of characters Left
{
	for (uint8_t i=0;i<n;i++)
 206:	1f 5f       	subi	r17, 0xFF	; 255
 208:	10 17       	cp	r17, r16
 20a:	d8 f3       	brcs	.-10     	; 0x202 <LCDshiftRight+0xa>
	{
		LCDsendCommand(0x18);
	}
}
 20c:	1f 91       	pop	r17
 20e:	0f 91       	pop	r16
 210:	08 95       	ret

00000212 <LCDcursorOn>:
void LCDcursorOn(void) //displays LCD cursor
{
	LCDsendCommand(0x0E);
 212:	8e e0       	ldi	r24, 0x0E	; 14
 214:	38 df       	rcall	.-400    	; 0x86 <LCDsendCommand>
}
 216:	08 95       	ret

00000218 <LCDcursorOnBlink>:
void LCDcursorOnBlink(void)	//displays LCD blinking cursor
{
	LCDsendCommand(0x0F);
 218:	8f e0       	ldi	r24, 0x0F	; 15
 21a:	35 df       	rcall	.-406    	; 0x86 <LCDsendCommand>
}
 21c:	08 95       	ret

0000021e <LCDcursorOFF>:
void LCDcursorOFF(void)	//turns OFF cursor
{
	LCDsendCommand(0x0C);
 21e:	8c e0       	ldi	r24, 0x0C	; 12
 220:	32 df       	rcall	.-412    	; 0x86 <LCDsendCommand>
}
 222:	08 95       	ret

00000224 <LCDblank>:
void LCDblank(void)		//blanks LCD
{
	LCDsendCommand(0x08);
 224:	88 e0       	ldi	r24, 0x08	; 8
 226:	2f df       	rcall	.-418    	; 0x86 <LCDsendCommand>
}
 228:	08 95       	ret

0000022a <LCDvisible>:
void LCDvisible(void)		//Shows LCD
{
	LCDsendCommand(0x0C);
 22a:	8c e0       	ldi	r24, 0x0C	; 12
 22c:	2c df       	rcall	.-424    	; 0x86 <LCDsendCommand>
}
 22e:	08 95       	ret

00000230 <LCDcursorLeft>:
void LCDcursorLeft(uint8_t n)	//Moves cursor by n poisitions left
{
 230:	0f 93       	push	r16
 232:	1f 93       	push	r17
 234:	08 2f       	mov	r16, r24
 236:	10 e0       	ldi	r17, 0x00	; 0
 238:	03 c0       	rjmp	.+6      	; 0x240 <LCDcursorLeft+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x10);
 23a:	80 e1       	ldi	r24, 0x10	; 16
 23c:	24 df       	rcall	.-440    	; 0x86 <LCDsendCommand>
{
	LCDsendCommand(0x0C);
}
void LCDcursorLeft(uint8_t n)	//Moves cursor by n poisitions left
{
	for (uint8_t i=0;i<n;i++)
 23e:	1f 5f       	subi	r17, 0xFF	; 255
 240:	10 17       	cp	r17, r16
 242:	d8 f3       	brcs	.-10     	; 0x23a <LCDcursorLeft+0xa>
	{
		LCDsendCommand(0x10);
	}
}
 244:	1f 91       	pop	r17
 246:	0f 91       	pop	r16
 248:	08 95       	ret

0000024a <LCDcursorRight>:
void LCDcursorRight(uint8_t n)	//Moves cursor by n poisitions left
{
 24a:	0f 93       	push	r16
 24c:	1f 93       	push	r17
 24e:	08 2f       	mov	r16, r24
 250:	10 e0       	ldi	r17, 0x00	; 0
 252:	03 c0       	rjmp	.+6      	; 0x25a <LCDcursorRight+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x14);
 254:	84 e1       	ldi	r24, 0x14	; 20
 256:	17 df       	rcall	.-466    	; 0x86 <LCDsendCommand>
		LCDsendCommand(0x10);
	}
}
void LCDcursorRight(uint8_t n)	//Moves cursor by n poisitions left
{
	for (uint8_t i=0;i<n;i++)
 258:	1f 5f       	subi	r17, 0xFF	; 255
 25a:	10 17       	cp	r17, r16
 25c:	d8 f3       	brcs	.-10     	; 0x254 <LCDcursorRight+0xa>
	{
		LCDsendCommand(0x14);
	}
}
 25e:	1f 91       	pop	r17
 260:	0f 91       	pop	r16
 262:	08 95       	ret

00000264 <main>:
#include <util/delay.h>// Подключаем библиотеку функции задержки
#include <lcd_lib.h>//Подключаем библиотеку для LCD
#include <lcd_lib.c>//Подключаем библиотеку для LCD
int a,b=0;// инициализируем целочисленные переменные a,b и присваиваем им значение 0
int main (void)// главная функция программы 
{ DDRB=0XFF;//порт В как выход (диоды)
 264:	cf 93       	push	r28
 266:	df 93       	push	r29
 268:	8f ef       	ldi	r24, 0xFF	; 255
 26a:	87 bb       	out	0x17, r24	; 23
  DDRD=0X00;//порт D как вход (кнопки)
 26c:	11 ba       	out	0x11, r1	; 17
  PORTB=0X00;// обнуляем порт B
 26e:	18 ba       	out	0x18, r1	; 24
  PORTD=0XFF;// осуществляем подтяжку внутреннего резистора 
 270:	82 bb       	out	0x12, r24	; 18
  LCDinit();//инициализируем LCD
 272:	26 df       	rcall	.-436    	; 0xc0 <LCDinit>
  LCDclr();//очищаем экран LCD
 274:	55 df       	rcall	.-342    	; 0x120 <LCDclr>
 276:	c8 ec       	ldi	r28, 0xC8	; 200
 278:	d0 e0       	ldi	r29, 0x00	; 0
 27a:	38 c0       	rjmp	.+112    	; 0x2ec <main+0x88>
   while (1)// задаем бесконечный цикл
  {
      while (~PIND&(1<<PD0))// пока кнопка D0 нажата
      {a++;// инкрементируем значение переменной а
 27c:	80 91 62 00 	lds	r24, 0x0062
 280:	90 91 63 00 	lds	r25, 0x0063
 284:	01 96       	adiw	r24, 0x01	; 1
 286:	90 93 63 00 	sts	0x0063, r25
 28a:	80 93 62 00 	sts	0x0062, r24
	   
	     if(a<10)//если а-однозначное число
 28e:	0a 97       	sbiw	r24, 0x0a	; 10
 290:	3c f4       	brge	.+14     	; 0x2a0 <main+0x3c>
        {LCDGotoXY(0, 0);
 292:	80 e0       	ldi	r24, 0x00	; 0
 294:	60 e0       	ldi	r22, 0x00	; 0
 296:	5e df       	rcall	.-324    	; 0x154 <LCDGotoXY>
	     LCDsendChar(a+48);// выводим  однозначное число а на дисплей
 298:	80 91 62 00 	lds	r24, 0x0062
 29c:	80 5d       	subi	r24, 0xD0	; 208
 29e:	d2 de       	rcall	.-604    	; 0x44 <LCDsendChar>
	    }
	    if(a>=10)//если а - двузначное число
 2a0:	80 91 62 00 	lds	r24, 0x0062
 2a4:	90 91 63 00 	lds	r25, 0x0063
 2a8:	0a 97       	sbiw	r24, 0x0a	; 10
 2aa:	cc f0       	brlt	.+50     	; 0x2de <main+0x7a>
	    {LCDGotoXY(0, 0);
 2ac:	80 e0       	ldi	r24, 0x00	; 0
 2ae:	60 e0       	ldi	r22, 0x00	; 0
 2b0:	51 df       	rcall	.-350    	; 0x154 <LCDGotoXY>
	     LCDsendChar(a/10+48);//выводим второй разряд числа а на дисплей
 2b2:	80 91 62 00 	lds	r24, 0x0062
 2b6:	90 91 63 00 	lds	r25, 0x0063
 2ba:	6a e0       	ldi	r22, 0x0A	; 10
 2bc:	70 e0       	ldi	r23, 0x00	; 0
 2be:	b8 d1       	rcall	.+880    	; 0x630 <__divmodhi4>
 2c0:	86 2f       	mov	r24, r22
 2c2:	80 5d       	subi	r24, 0xD0	; 208
 2c4:	bf de       	rcall	.-642    	; 0x44 <LCDsendChar>
	     LCDGotoXY(1, 0);
 2c6:	81 e0       	ldi	r24, 0x01	; 1
 2c8:	60 e0       	ldi	r22, 0x00	; 0
 2ca:	44 df       	rcall	.-376    	; 0x154 <LCDGotoXY>
	     LCDsendChar(a%10+48);//выводим  первый разряд числа а на дисплей
 2cc:	80 91 62 00 	lds	r24, 0x0062
 2d0:	90 91 63 00 	lds	r25, 0x0063
 2d4:	6a e0       	ldi	r22, 0x0A	; 10
 2d6:	70 e0       	ldi	r23, 0x00	; 0
 2d8:	ab d1       	rcall	.+854    	; 0x630 <__divmodhi4>
 2da:	80 5d       	subi	r24, 0xD0	; 208
 2dc:	b3 de       	rcall	.-666    	; 0x44 <LCDsendChar>
 2de:	88 eb       	ldi	r24, 0xB8	; 184
 2e0:	9b e0       	ldi	r25, 0x0B	; 11
 2e2:	fe 01       	movw	r30, r28
 2e4:	31 97       	sbiw	r30, 0x01	; 1
 2e6:	f1 f7       	brne	.-4      	; 0x2e4 <main+0x80>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 2e8:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
 2ea:	d9 f7       	brne	.-10     	; 0x2e2 <main+0x7e>
  PORTD=0XFF;// осуществляем подтяжку внутреннего резистора 
  LCDinit();//инициализируем LCD
  LCDclr();//очищаем экран LCD
   while (1)// задаем бесконечный цикл
  {
      while (~PIND&(1<<PD0))// пока кнопка D0 нажата
 2ec:	80 9b       	sbis	0x10, 0	; 16
 2ee:	c6 cf       	rjmp	.-116    	; 0x27c <main+0x18>
 2f0:	38 c0       	rjmp	.+112    	; 0x362 <main+0xfe>
	  }
	  _delay_ms (300);// ждем 300 мс
	  }
	  
      while (~PIND&(1<<PD1))// пока кнопка D0 нажата
      {b++;// инкрементируем значение переменной b
 2f2:	80 91 60 00 	lds	r24, 0x0060
 2f6:	90 91 61 00 	lds	r25, 0x0061
 2fa:	01 96       	adiw	r24, 0x01	; 1
 2fc:	90 93 61 00 	sts	0x0061, r25
 300:	80 93 60 00 	sts	0x0060, r24
	   
	     if(b<10)//если b - однозначное
 304:	0a 97       	sbiw	r24, 0x0a	; 10
 306:	3c f4       	brge	.+14     	; 0x316 <main+0xb2>
        {LCDGotoXY(3, 0);
 308:	83 e0       	ldi	r24, 0x03	; 3
 30a:	60 e0       	ldi	r22, 0x00	; 0
 30c:	23 df       	rcall	.-442    	; 0x154 <LCDGotoXY>
	     LCDsendChar(b+48);// выводим  однозначное число b на дисплей
 30e:	80 91 60 00 	lds	r24, 0x0060
 312:	80 5d       	subi	r24, 0xD0	; 208
 314:	97 de       	rcall	.-722    	; 0x44 <LCDsendChar>
	    }
	    if(b>=10)
 316:	80 91 60 00 	lds	r24, 0x0060
 31a:	90 91 61 00 	lds	r25, 0x0061
 31e:	0a 97       	sbiw	r24, 0x0a	; 10
 320:	cc f0       	brlt	.+50     	; 0x354 <main+0xf0>
	    {LCDGotoXY(3, 0);
 322:	83 e0       	ldi	r24, 0x03	; 3
 324:	60 e0       	ldi	r22, 0x00	; 0
 326:	16 df       	rcall	.-468    	; 0x154 <LCDGotoXY>
	     LCDsendChar(b/10+48);//выводим второй разряд числа b на дисплей
 328:	80 91 60 00 	lds	r24, 0x0060
 32c:	90 91 61 00 	lds	r25, 0x0061
 330:	6a e0       	ldi	r22, 0x0A	; 10
 332:	70 e0       	ldi	r23, 0x00	; 0
 334:	7d d1       	rcall	.+762    	; 0x630 <__divmodhi4>
 336:	86 2f       	mov	r24, r22
 338:	80 5d       	subi	r24, 0xD0	; 208
 33a:	84 de       	rcall	.-760    	; 0x44 <LCDsendChar>
	     LCDGotoXY(4, 0);
 33c:	84 e0       	ldi	r24, 0x04	; 4
 33e:	60 e0       	ldi	r22, 0x00	; 0
 340:	09 df       	rcall	.-494    	; 0x154 <LCDGotoXY>
	     LCDsendChar(b%10+48);//выводим  первый разряд числа b на дисплей
 342:	80 91 60 00 	lds	r24, 0x0060
 346:	90 91 61 00 	lds	r25, 0x0061
 34a:	6a e0       	ldi	r22, 0x0A	; 10
 34c:	70 e0       	ldi	r23, 0x00	; 0
 34e:	70 d1       	rcall	.+736    	; 0x630 <__divmodhi4>
 350:	80 5d       	subi	r24, 0xD0	; 208
 352:	78 de       	rcall	.-784    	; 0x44 <LCDsendChar>
 354:	88 eb       	ldi	r24, 0xB8	; 184
 356:	9b e0       	ldi	r25, 0x0B	; 11
 358:	fe 01       	movw	r30, r28
 35a:	31 97       	sbiw	r30, 0x01	; 1
 35c:	f1 f7       	brne	.-4      	; 0x35a <main+0xf6>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 35e:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
 360:	d9 f7       	brne	.-10     	; 0x358 <main+0xf4>
	     LCDsendChar(a%10+48);//выводим  первый разряд числа а на дисплей
	  }
	  _delay_ms (300);// ждем 300 мс
	  }
	  
      while (~PIND&(1<<PD1))// пока кнопка D0 нажата
 362:	81 9b       	sbis	0x10, 1	; 16
 364:	c6 cf       	rjmp	.-116    	; 0x2f2 <main+0x8e>
	     LCDGotoXY(4, 0);
	     LCDsendChar(b%10+48);//выводим  первый разряд числа b на дисплей
	  }
	  _delay_ms (300);// ждем 300 мс
	  }
      if (~PIND&(1<<PD2))// если нажата кнопка D2
 366:	82 99       	sbic	0x10, 2	; 16
 368:	51 c0       	rjmp	.+162    	; 0x40c <main+0x1a8>
      {  LCDGotoXY(2, 0);
 36a:	82 e0       	ldi	r24, 0x02	; 2
 36c:	60 e0       	ldi	r22, 0x00	; 0
 36e:	f2 de       	rcall	.-540    	; 0x154 <LCDGotoXY>
	     LCDsendChar(43);//выводим символ "+" на дисплей,код которого 43
 370:	8b e2       	ldi	r24, 0x2B	; 43
 372:	68 de       	rcall	.-816    	; 0x44 <LCDsendChar>
		 LCDGotoXY(5, 0);
 374:	85 e0       	ldi	r24, 0x05	; 5
 376:	60 e0       	ldi	r22, 0x00	; 0
 378:	ed de       	rcall	.-550    	; 0x154 <LCDGotoXY>
	     LCDsendChar(61);//выводим символ "=" на дисплей,код которого 61
 37a:	8d e3       	ldi	r24, 0x3D	; 61
 37c:	63 de       	rcall	.-826    	; 0x44 <LCDsendChar>
		if(a+b<10)//если результат сложения а и b -однозначное число
 37e:	80 91 60 00 	lds	r24, 0x0060
 382:	90 91 61 00 	lds	r25, 0x0061
 386:	20 91 62 00 	lds	r18, 0x0062
 38a:	30 91 63 00 	lds	r19, 0x0063
 38e:	82 0f       	add	r24, r18
 390:	93 1f       	adc	r25, r19
 392:	0a 97       	sbiw	r24, 0x0a	; 10
 394:	54 f4       	brge	.+20     	; 0x3aa <main+0x146>
        {LCDGotoXY(6, 0);
 396:	86 e0       	ldi	r24, 0x06	; 6
 398:	60 e0       	ldi	r22, 0x00	; 0
 39a:	dc de       	rcall	.-584    	; 0x154 <LCDGotoXY>
	     LCDsendChar(a+b+48);// выводим результат сложения на дисплей
 39c:	80 91 62 00 	lds	r24, 0x0062
 3a0:	90 91 60 00 	lds	r25, 0x0060
 3a4:	89 0f       	add	r24, r25
 3a6:	80 5d       	subi	r24, 0xD0	; 208
 3a8:	4d de       	rcall	.-870    	; 0x44 <LCDsendChar>
	    }
	    if(a+b>=10)//если результат сложения а и b -двузначное число
 3aa:	80 91 60 00 	lds	r24, 0x0060
 3ae:	90 91 61 00 	lds	r25, 0x0061
 3b2:	20 91 62 00 	lds	r18, 0x0062
 3b6:	30 91 63 00 	lds	r19, 0x0063
 3ba:	82 0f       	add	r24, r18
 3bc:	93 1f       	adc	r25, r19
 3be:	0a 97       	sbiw	r24, 0x0a	; 10
 3c0:	2c f1       	brlt	.+74     	; 0x40c <main+0x1a8>
	    {LCDGotoXY(6, 0);
 3c2:	86 e0       	ldi	r24, 0x06	; 6
 3c4:	60 e0       	ldi	r22, 0x00	; 0
 3c6:	c6 de       	rcall	.-628    	; 0x154 <LCDGotoXY>
	     LCDsendChar((a+b)/10+48);// выводим первый разряд результата сложения на дисплей
 3c8:	80 91 60 00 	lds	r24, 0x0060
 3cc:	90 91 61 00 	lds	r25, 0x0061
 3d0:	20 91 62 00 	lds	r18, 0x0062
 3d4:	30 91 63 00 	lds	r19, 0x0063
 3d8:	82 0f       	add	r24, r18
 3da:	93 1f       	adc	r25, r19
 3dc:	6a e0       	ldi	r22, 0x0A	; 10
 3de:	70 e0       	ldi	r23, 0x00	; 0
 3e0:	27 d1       	rcall	.+590    	; 0x630 <__divmodhi4>
 3e2:	86 2f       	mov	r24, r22
 3e4:	80 5d       	subi	r24, 0xD0	; 208
 3e6:	2e de       	rcall	.-932    	; 0x44 <LCDsendChar>
	     LCDGotoXY(7, 0);
 3e8:	87 e0       	ldi	r24, 0x07	; 7
 3ea:	60 e0       	ldi	r22, 0x00	; 0
 3ec:	b3 de       	rcall	.-666    	; 0x154 <LCDGotoXY>
	     LCDsendChar((a+b)%10+48); // выводим второй разряд результата сложения на дисплей
 3ee:	80 91 60 00 	lds	r24, 0x0060
 3f2:	90 91 61 00 	lds	r25, 0x0061
 3f6:	20 91 62 00 	lds	r18, 0x0062
 3fa:	30 91 63 00 	lds	r19, 0x0063
 3fe:	82 0f       	add	r24, r18
 400:	93 1f       	adc	r25, r19
 402:	6a e0       	ldi	r22, 0x0A	; 10
 404:	70 e0       	ldi	r23, 0x00	; 0
 406:	14 d1       	rcall	.+552    	; 0x630 <__divmodhi4>
 408:	80 5d       	subi	r24, 0xD0	; 208
 40a:	1c de       	rcall	.-968    	; 0x44 <LCDsendChar>
		}
      }
	  if (~PIND&(1<<PD3))// если нажата кнопка D3
 40c:	83 99       	sbic	0x10, 3	; 16
 40e:	51 c0       	rjmp	.+162    	; 0x4b2 <main+0x24e>
      {  LCDGotoXY(2, 0);
 410:	82 e0       	ldi	r24, 0x02	; 2
 412:	60 e0       	ldi	r22, 0x00	; 0
 414:	9f de       	rcall	.-706    	; 0x154 <LCDGotoXY>
	     LCDsendChar(45);
 416:	8d e2       	ldi	r24, 0x2D	; 45
 418:	15 de       	rcall	.-982    	; 0x44 <LCDsendChar>
		 LCDGotoXY(5, 0);
 41a:	85 e0       	ldi	r24, 0x05	; 5
 41c:	60 e0       	ldi	r22, 0x00	; 0
 41e:	9a de       	rcall	.-716    	; 0x154 <LCDGotoXY>
	     LCDsendChar(61);
 420:	8d e3       	ldi	r24, 0x3D	; 61
 422:	10 de       	rcall	.-992    	; 0x44 <LCDsendChar>
		if(a+b<10)
 424:	80 91 60 00 	lds	r24, 0x0060
 428:	90 91 61 00 	lds	r25, 0x0061
 42c:	20 91 62 00 	lds	r18, 0x0062
 430:	30 91 63 00 	lds	r19, 0x0063
 434:	82 0f       	add	r24, r18
 436:	93 1f       	adc	r25, r19
 438:	0a 97       	sbiw	r24, 0x0a	; 10
 43a:	54 f4       	brge	.+20     	; 0x450 <main+0x1ec>
        {LCDGotoXY(6, 0);
 43c:	86 e0       	ldi	r24, 0x06	; 6
 43e:	60 e0       	ldi	r22, 0x00	; 0
 440:	89 de       	rcall	.-750    	; 0x154 <LCDGotoXY>
	     LCDsendChar(a-b+48);
 442:	80 91 62 00 	lds	r24, 0x0062
 446:	80 5d       	subi	r24, 0xD0	; 208
 448:	90 91 60 00 	lds	r25, 0x0060
 44c:	89 1b       	sub	r24, r25
 44e:	fa dd       	rcall	.-1036   	; 0x44 <LCDsendChar>
	    }
	    if(a+b>=10)
 450:	80 91 60 00 	lds	r24, 0x0060
 454:	90 91 61 00 	lds	r25, 0x0061
 458:	20 91 62 00 	lds	r18, 0x0062
 45c:	30 91 63 00 	lds	r19, 0x0063
 460:	82 0f       	add	r24, r18
 462:	93 1f       	adc	r25, r19
 464:	0a 97       	sbiw	r24, 0x0a	; 10
 466:	2c f1       	brlt	.+74     	; 0x4b2 <main+0x24e>
	    {LCDGotoXY(6, 0);
 468:	86 e0       	ldi	r24, 0x06	; 6
 46a:	60 e0       	ldi	r22, 0x00	; 0
 46c:	73 de       	rcall	.-794    	; 0x154 <LCDGotoXY>
	     LCDsendChar((a-b)/10+48);
 46e:	80 91 62 00 	lds	r24, 0x0062
 472:	90 91 63 00 	lds	r25, 0x0063
 476:	20 91 60 00 	lds	r18, 0x0060
 47a:	30 91 61 00 	lds	r19, 0x0061
 47e:	82 1b       	sub	r24, r18
 480:	93 0b       	sbc	r25, r19
 482:	6a e0       	ldi	r22, 0x0A	; 10
 484:	70 e0       	ldi	r23, 0x00	; 0
 486:	d4 d0       	rcall	.+424    	; 0x630 <__divmodhi4>
 488:	86 2f       	mov	r24, r22
 48a:	80 5d       	subi	r24, 0xD0	; 208
 48c:	db dd       	rcall	.-1098   	; 0x44 <LCDsendChar>
	     LCDGotoXY(7, 0);
 48e:	87 e0       	ldi	r24, 0x07	; 7
 490:	60 e0       	ldi	r22, 0x00	; 0
 492:	60 de       	rcall	.-832    	; 0x154 <LCDGotoXY>
	     LCDsendChar((a-b)%10+48); 
 494:	80 91 62 00 	lds	r24, 0x0062
 498:	90 91 63 00 	lds	r25, 0x0063
 49c:	20 91 60 00 	lds	r18, 0x0060
 4a0:	30 91 61 00 	lds	r19, 0x0061
 4a4:	82 1b       	sub	r24, r18
 4a6:	93 0b       	sbc	r25, r19
 4a8:	6a e0       	ldi	r22, 0x0A	; 10
 4aa:	70 e0       	ldi	r23, 0x00	; 0
 4ac:	c1 d0       	rcall	.+386    	; 0x630 <__divmodhi4>
 4ae:	80 5d       	subi	r24, 0xD0	; 208
 4b0:	c9 dd       	rcall	.-1134   	; 0x44 <LCDsendChar>
		}
      }
	  if (~PIND&(1<<PD4))// если нажата кнопка D4
 4b2:	84 99       	sbic	0x10, 4	; 16
 4b4:	51 c0       	rjmp	.+162    	; 0x558 <main+0x2f4>
      {  LCDGotoXY(2, 0);
 4b6:	82 e0       	ldi	r24, 0x02	; 2
 4b8:	60 e0       	ldi	r22, 0x00	; 0
 4ba:	4c de       	rcall	.-872    	; 0x154 <LCDGotoXY>
	     LCDsendChar(42);
 4bc:	8a e2       	ldi	r24, 0x2A	; 42
 4be:	c2 dd       	rcall	.-1148   	; 0x44 <LCDsendChar>
		 LCDGotoXY(5, 0);
 4c0:	85 e0       	ldi	r24, 0x05	; 5
 4c2:	60 e0       	ldi	r22, 0x00	; 0
 4c4:	47 de       	rcall	.-882    	; 0x154 <LCDGotoXY>
	     LCDsendChar(61);
 4c6:	8d e3       	ldi	r24, 0x3D	; 61
 4c8:	bd dd       	rcall	.-1158   	; 0x44 <LCDsendChar>
		if(a*b<10)
 4ca:	60 91 62 00 	lds	r22, 0x0062
 4ce:	70 91 63 00 	lds	r23, 0x0063
 4d2:	80 91 60 00 	lds	r24, 0x0060
 4d6:	90 91 61 00 	lds	r25, 0x0061
 4da:	98 d0       	rcall	.+304    	; 0x60c <__mulhi3>
 4dc:	0a 97       	sbiw	r24, 0x0a	; 10
 4de:	74 f4       	brge	.+28     	; 0x4fc <main+0x298>
        {LCDGotoXY(6, 0);
 4e0:	86 e0       	ldi	r24, 0x06	; 6
 4e2:	60 e0       	ldi	r22, 0x00	; 0
 4e4:	37 de       	rcall	.-914    	; 0x154 <LCDGotoXY>
	     LCDsendChar(a*b+48);
 4e6:	60 91 62 00 	lds	r22, 0x0062
 4ea:	70 91 63 00 	lds	r23, 0x0063
 4ee:	80 91 60 00 	lds	r24, 0x0060
 4f2:	90 91 61 00 	lds	r25, 0x0061
 4f6:	8a d0       	rcall	.+276    	; 0x60c <__mulhi3>
 4f8:	80 5d       	subi	r24, 0xD0	; 208
 4fa:	a4 dd       	rcall	.-1208   	; 0x44 <LCDsendChar>
	    }
	    if(a*b>=10)
 4fc:	60 91 62 00 	lds	r22, 0x0062
 500:	70 91 63 00 	lds	r23, 0x0063
 504:	80 91 60 00 	lds	r24, 0x0060
 508:	90 91 61 00 	lds	r25, 0x0061
 50c:	7f d0       	rcall	.+254    	; 0x60c <__mulhi3>
 50e:	0a 97       	sbiw	r24, 0x0a	; 10
 510:	1c f1       	brlt	.+70     	; 0x558 <main+0x2f4>
	    {LCDGotoXY(6, 0);
 512:	86 e0       	ldi	r24, 0x06	; 6
 514:	60 e0       	ldi	r22, 0x00	; 0
 516:	1e de       	rcall	.-964    	; 0x154 <LCDGotoXY>
	     LCDsendChar((a*b)/10+48);
 518:	60 91 62 00 	lds	r22, 0x0062
 51c:	70 91 63 00 	lds	r23, 0x0063
 520:	80 91 60 00 	lds	r24, 0x0060
 524:	90 91 61 00 	lds	r25, 0x0061
 528:	71 d0       	rcall	.+226    	; 0x60c <__mulhi3>
 52a:	6a e0       	ldi	r22, 0x0A	; 10
 52c:	70 e0       	ldi	r23, 0x00	; 0
 52e:	80 d0       	rcall	.+256    	; 0x630 <__divmodhi4>
 530:	86 2f       	mov	r24, r22
 532:	80 5d       	subi	r24, 0xD0	; 208
 534:	87 dd       	rcall	.-1266   	; 0x44 <LCDsendChar>
	     LCDGotoXY(7, 0);
 536:	87 e0       	ldi	r24, 0x07	; 7
 538:	60 e0       	ldi	r22, 0x00	; 0
 53a:	0c de       	rcall	.-1000   	; 0x154 <LCDGotoXY>
	     LCDsendChar((a*b)%10+48); 
 53c:	60 91 62 00 	lds	r22, 0x0062
 540:	70 91 63 00 	lds	r23, 0x0063
 544:	80 91 60 00 	lds	r24, 0x0060
 548:	90 91 61 00 	lds	r25, 0x0061
 54c:	5f d0       	rcall	.+190    	; 0x60c <__mulhi3>
 54e:	6a e0       	ldi	r22, 0x0A	; 10
 550:	70 e0       	ldi	r23, 0x00	; 0
 552:	6e d0       	rcall	.+220    	; 0x630 <__divmodhi4>
 554:	80 5d       	subi	r24, 0xD0	; 208
 556:	76 dd       	rcall	.-1300   	; 0x44 <LCDsendChar>
		}
      }
	  if (~PIND&(1<<PD5))// если нажата кнопка D5
 558:	85 99       	sbic	0x10, 5	; 16
 55a:	c8 ce       	rjmp	.-624    	; 0x2ec <main+0x88>
      {  LCDGotoXY(2, 0);
 55c:	82 e0       	ldi	r24, 0x02	; 2
 55e:	60 e0       	ldi	r22, 0x00	; 0
 560:	f9 dd       	rcall	.-1038   	; 0x154 <LCDGotoXY>
	     LCDsendChar(47);
 562:	8f e2       	ldi	r24, 0x2F	; 47
 564:	6f dd       	rcall	.-1314   	; 0x44 <LCDsendChar>
		 LCDGotoXY(5, 0);
 566:	85 e0       	ldi	r24, 0x05	; 5
 568:	60 e0       	ldi	r22, 0x00	; 0
 56a:	f4 dd       	rcall	.-1048   	; 0x154 <LCDGotoXY>
	     LCDsendChar(61);
 56c:	8d e3       	ldi	r24, 0x3D	; 61
 56e:	6a dd       	rcall	.-1324   	; 0x44 <LCDsendChar>
		if(a+b<10)
 570:	80 91 60 00 	lds	r24, 0x0060
 574:	90 91 61 00 	lds	r25, 0x0061
 578:	20 91 62 00 	lds	r18, 0x0062
 57c:	30 91 63 00 	lds	r19, 0x0063
 580:	82 0f       	add	r24, r18
 582:	93 1f       	adc	r25, r19
 584:	0a 97       	sbiw	r24, 0x0a	; 10
 586:	7c f4       	brge	.+30     	; 0x5a6 <main+0x342>
        {LCDGotoXY(6, 0);
 588:	86 e0       	ldi	r24, 0x06	; 6
 58a:	60 e0       	ldi	r22, 0x00	; 0
 58c:	e3 dd       	rcall	.-1082   	; 0x154 <LCDGotoXY>
	     LCDsendChar(a/b+48);
 58e:	60 91 60 00 	lds	r22, 0x0060
 592:	70 91 61 00 	lds	r23, 0x0061
 596:	80 91 62 00 	lds	r24, 0x0062
 59a:	90 91 63 00 	lds	r25, 0x0063
 59e:	48 d0       	rcall	.+144    	; 0x630 <__divmodhi4>
 5a0:	86 2f       	mov	r24, r22
 5a2:	80 5d       	subi	r24, 0xD0	; 208
 5a4:	4f dd       	rcall	.-1378   	; 0x44 <LCDsendChar>
	    }
	    if(a+b>=10)
 5a6:	80 91 60 00 	lds	r24, 0x0060
 5aa:	90 91 61 00 	lds	r25, 0x0061
 5ae:	20 91 62 00 	lds	r18, 0x0062
 5b2:	30 91 63 00 	lds	r19, 0x0063
 5b6:	82 0f       	add	r24, r18
 5b8:	93 1f       	adc	r25, r19
 5ba:	0a 97       	sbiw	r24, 0x0a	; 10
 5bc:	0c f4       	brge	.+2      	; 0x5c0 <main+0x35c>
 5be:	96 ce       	rjmp	.-724    	; 0x2ec <main+0x88>
	    {LCDGotoXY(6, 0);
 5c0:	86 e0       	ldi	r24, 0x06	; 6
 5c2:	60 e0       	ldi	r22, 0x00	; 0
 5c4:	c7 dd       	rcall	.-1138   	; 0x154 <LCDGotoXY>
	     LCDsendChar((a/b)/10+48);
 5c6:	60 91 60 00 	lds	r22, 0x0060
 5ca:	70 91 61 00 	lds	r23, 0x0061
 5ce:	80 91 62 00 	lds	r24, 0x0062
 5d2:	90 91 63 00 	lds	r25, 0x0063
 5d6:	2c d0       	rcall	.+88     	; 0x630 <__divmodhi4>
 5d8:	cb 01       	movw	r24, r22
 5da:	6a e0       	ldi	r22, 0x0A	; 10
 5dc:	70 e0       	ldi	r23, 0x00	; 0
 5de:	28 d0       	rcall	.+80     	; 0x630 <__divmodhi4>
 5e0:	86 2f       	mov	r24, r22
 5e2:	80 5d       	subi	r24, 0xD0	; 208
 5e4:	2f dd       	rcall	.-1442   	; 0x44 <LCDsendChar>
	     LCDGotoXY(7, 0);
 5e6:	87 e0       	ldi	r24, 0x07	; 7
 5e8:	60 e0       	ldi	r22, 0x00	; 0
 5ea:	b4 dd       	rcall	.-1176   	; 0x154 <LCDGotoXY>
	     LCDsendChar((a/b)%10+48); 
 5ec:	60 91 60 00 	lds	r22, 0x0060
 5f0:	70 91 61 00 	lds	r23, 0x0061
 5f4:	80 91 62 00 	lds	r24, 0x0062
 5f8:	90 91 63 00 	lds	r25, 0x0063
 5fc:	19 d0       	rcall	.+50     	; 0x630 <__divmodhi4>
 5fe:	cb 01       	movw	r24, r22
 600:	6a e0       	ldi	r22, 0x0A	; 10
 602:	70 e0       	ldi	r23, 0x00	; 0
 604:	15 d0       	rcall	.+42     	; 0x630 <__divmodhi4>
 606:	80 5d       	subi	r24, 0xD0	; 208
 608:	1d dd       	rcall	.-1478   	; 0x44 <LCDsendChar>
 60a:	70 ce       	rjmp	.-800    	; 0x2ec <main+0x88>

0000060c <__mulhi3>:
 60c:	55 27       	eor	r21, r21
 60e:	00 24       	eor	r0, r0

00000610 <__mulhi3_loop>:
 610:	80 ff       	sbrs	r24, 0
 612:	02 c0       	rjmp	.+4      	; 0x618 <__mulhi3_skip1>
 614:	06 0e       	add	r0, r22
 616:	57 1f       	adc	r21, r23

00000618 <__mulhi3_skip1>:
 618:	66 0f       	add	r22, r22
 61a:	77 1f       	adc	r23, r23
 61c:	61 15       	cp	r22, r1
 61e:	71 05       	cpc	r23, r1
 620:	21 f0       	breq	.+8      	; 0x62a <__mulhi3_exit>
 622:	96 95       	lsr	r25
 624:	87 95       	ror	r24
 626:	00 97       	sbiw	r24, 0x00	; 0
 628:	99 f7       	brne	.-26     	; 0x610 <__mulhi3_loop>

0000062a <__mulhi3_exit>:
 62a:	95 2f       	mov	r25, r21
 62c:	80 2d       	mov	r24, r0
 62e:	08 95       	ret

00000630 <__divmodhi4>:
 630:	97 fb       	bst	r25, 7
 632:	09 2e       	mov	r0, r25
 634:	07 26       	eor	r0, r23
 636:	0a d0       	rcall	.+20     	; 0x64c <__divmodhi4_neg1>
 638:	77 fd       	sbrc	r23, 7
 63a:	04 d0       	rcall	.+8      	; 0x644 <__divmodhi4_neg2>
 63c:	0c d0       	rcall	.+24     	; 0x656 <__udivmodhi4>
 63e:	06 d0       	rcall	.+12     	; 0x64c <__divmodhi4_neg1>
 640:	00 20       	and	r0, r0
 642:	1a f4       	brpl	.+6      	; 0x64a <__divmodhi4_exit>

00000644 <__divmodhi4_neg2>:
 644:	70 95       	com	r23
 646:	61 95       	neg	r22
 648:	7f 4f       	sbci	r23, 0xFF	; 255

0000064a <__divmodhi4_exit>:
 64a:	08 95       	ret

0000064c <__divmodhi4_neg1>:
 64c:	f6 f7       	brtc	.-4      	; 0x64a <__divmodhi4_exit>
 64e:	90 95       	com	r25
 650:	81 95       	neg	r24
 652:	9f 4f       	sbci	r25, 0xFF	; 255
 654:	08 95       	ret

00000656 <__udivmodhi4>:
 656:	aa 1b       	sub	r26, r26
 658:	bb 1b       	sub	r27, r27
 65a:	51 e1       	ldi	r21, 0x11	; 17
 65c:	07 c0       	rjmp	.+14     	; 0x66c <__udivmodhi4_ep>

0000065e <__udivmodhi4_loop>:
 65e:	aa 1f       	adc	r26, r26
 660:	bb 1f       	adc	r27, r27
 662:	a6 17       	cp	r26, r22
 664:	b7 07       	cpc	r27, r23
 666:	10 f0       	brcs	.+4      	; 0x66c <__udivmodhi4_ep>
 668:	a6 1b       	sub	r26, r22
 66a:	b7 0b       	sbc	r27, r23

0000066c <__udivmodhi4_ep>:
 66c:	88 1f       	adc	r24, r24
 66e:	99 1f       	adc	r25, r25
 670:	5a 95       	dec	r21
 672:	a9 f7       	brne	.-22     	; 0x65e <__udivmodhi4_loop>
 674:	80 95       	com	r24
 676:	90 95       	com	r25
 678:	bc 01       	movw	r22, r24
 67a:	cd 01       	movw	r24, r26
 67c:	08 95       	ret

0000067e <_exit>:
 67e:	f8 94       	cli

00000680 <__stop_program>:
 680:	ff cf       	rjmp	.-2      	; 0x680 <__stop_program>
