
main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000354  00000000  00000000  00000054  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .debug_aranges 00000020  00000000  00000000  000003a8  2**0
                  CONTENTS, READONLY, DEBUGGING
  2 .debug_pubnames 0000013d  00000000  00000000  000003c8  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_info   00000a72  00000000  00000000  00000505  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_abbrev 0000015e  00000000  00000000  00000f77  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_line   000006c3  00000000  00000000  000010d5  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_frame  00000140  00000000  00000000  00001798  2**2
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_str    000001f3  00000000  00000000  000018d8  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_loc    00000605  00000000  00000000  00001acb  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26 <__ctors_end>
   2:	17 c0       	rjmp	.+46     	; 0x32 <__bad_interrupt>
   4:	16 c0       	rjmp	.+44     	; 0x32 <__bad_interrupt>
   6:	15 c0       	rjmp	.+42     	; 0x32 <__bad_interrupt>
   8:	14 c0       	rjmp	.+40     	; 0x32 <__bad_interrupt>
   a:	13 c0       	rjmp	.+38     	; 0x32 <__bad_interrupt>
   c:	12 c0       	rjmp	.+36     	; 0x32 <__bad_interrupt>
   e:	11 c0       	rjmp	.+34     	; 0x32 <__bad_interrupt>
  10:	10 c0       	rjmp	.+32     	; 0x32 <__bad_interrupt>
  12:	0f c0       	rjmp	.+30     	; 0x32 <__bad_interrupt>
  14:	0e c0       	rjmp	.+28     	; 0x32 <__bad_interrupt>
  16:	0d c0       	rjmp	.+26     	; 0x32 <__bad_interrupt>
  18:	0c c0       	rjmp	.+24     	; 0x32 <__bad_interrupt>
  1a:	0b c0       	rjmp	.+22     	; 0x32 <__bad_interrupt>
  1c:	0a c0       	rjmp	.+20     	; 0x32 <__bad_interrupt>
  1e:	09 c0       	rjmp	.+18     	; 0x32 <__bad_interrupt>
  20:	08 c0       	rjmp	.+16     	; 0x32 <__bad_interrupt>
  22:	07 c0       	rjmp	.+14     	; 0x32 <__bad_interrupt>
  24:	06 c0       	rjmp	.+12     	; 0x32 <__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
  2e:	12 d1       	rcall	.+548    	; 0x254 <main>
  30:	8f c1       	rjmp	.+798    	; 0x350 <_exit>

00000032 <__bad_interrupt>:
  32:	e6 cf       	rjmp	.-52     	; 0x0 <__vectors>

00000034 <LCDsendChar>:
#include <avr/pgmspace.h>
#include <util/delay.h>

void LCDsendChar(uint8_t ch)		//Sends Char to LCD
{
	LDP=(ch&0b11110000);
  34:	28 2f       	mov	r18, r24
  36:	20 7f       	andi	r18, 0xF0	; 240
  38:	28 bb       	out	0x18, r18	; 24
	LCP|=1<<LCD_RS;
  3a:	c0 9a       	sbi	0x18, 0	; 24
	LCP|=1<<LCD_E;		
  3c:	c2 9a       	sbi	0x18, 2	; 24
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  3e:	20 ed       	ldi	r18, 0xD0	; 208
  40:	37 e0       	ldi	r19, 0x07	; 7
  42:	f9 01       	movw	r30, r18
  44:	31 97       	sbiw	r30, 0x01	; 1
  46:	f1 f7       	brne	.-4      	; 0x44 <__SREG__+0x5>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);	
  48:	c2 98       	cbi	0x18, 2	; 24
	LCP&=~(1<<LCD_RS);
  4a:	c0 98       	cbi	0x18, 0	; 24
  4c:	f9 01       	movw	r30, r18
  4e:	31 97       	sbiw	r30, 0x01	; 1
  50:	f1 f7       	brne	.-4      	; 0x4e <__SREG__+0xf>
	_delay_ms(1);
	LDP=((ch&0b00001111)<<4);
  52:	90 e0       	ldi	r25, 0x00	; 0
  54:	44 e0       	ldi	r20, 0x04	; 4
  56:	88 0f       	add	r24, r24
  58:	99 1f       	adc	r25, r25
  5a:	4a 95       	dec	r20
  5c:	e1 f7       	brne	.-8      	; 0x56 <__SREG__+0x17>
  5e:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_RS;
  60:	c0 9a       	sbi	0x18, 0	; 24
	LCP|=1<<LCD_E;		
  62:	c2 9a       	sbi	0x18, 2	; 24
  64:	c9 01       	movw	r24, r18
  66:	01 97       	sbiw	r24, 0x01	; 1
  68:	f1 f7       	brne	.-4      	; 0x66 <__SREG__+0x27>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);	
  6a:	c2 98       	cbi	0x18, 2	; 24
	LCP&=~(1<<LCD_RS);
  6c:	c0 98       	cbi	0x18, 0	; 24
  6e:	c9 01       	movw	r24, r18
  70:	01 97       	sbiw	r24, 0x01	; 1
  72:	f1 f7       	brne	.-4      	; 0x70 <__SREG__+0x31>
	_delay_ms(1);
}
  74:	08 95       	ret

00000076 <LCDsendCommand>:
void LCDsendCommand(uint8_t cmd)	//Sends Command to LCD
{
	LDP=(cmd&0b11110000);
  76:	28 2f       	mov	r18, r24
  78:	20 7f       	andi	r18, 0xF0	; 240
  7a:	28 bb       	out	0x18, r18	; 24
	LCP|=1<<LCD_E;		
  7c:	c2 9a       	sbi	0x18, 2	; 24
  7e:	20 ed       	ldi	r18, 0xD0	; 208
  80:	37 e0       	ldi	r19, 0x07	; 7
  82:	f9 01       	movw	r30, r18
  84:	31 97       	sbiw	r30, 0x01	; 1
  86:	f1 f7       	brne	.-4      	; 0x84 <LCDsendCommand+0xe>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  88:	c2 98       	cbi	0x18, 2	; 24
  8a:	f9 01       	movw	r30, r18
  8c:	31 97       	sbiw	r30, 0x01	; 1
  8e:	f1 f7       	brne	.-4      	; 0x8c <LCDsendCommand+0x16>
	_delay_ms(1);
	LDP=((cmd&0b00001111)<<4);	
  90:	90 e0       	ldi	r25, 0x00	; 0
  92:	54 e0       	ldi	r21, 0x04	; 4
  94:	88 0f       	add	r24, r24
  96:	99 1f       	adc	r25, r25
  98:	5a 95       	dec	r21
  9a:	e1 f7       	brne	.-8      	; 0x94 <LCDsendCommand+0x1e>
  9c:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E;		
  9e:	c2 9a       	sbi	0x18, 2	; 24
  a0:	c9 01       	movw	r24, r18
  a2:	01 97       	sbiw	r24, 0x01	; 1
  a4:	f1 f7       	brne	.-4      	; 0xa2 <LCDsendCommand+0x2c>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  a6:	c2 98       	cbi	0x18, 2	; 24
  a8:	c9 01       	movw	r24, r18
  aa:	01 97       	sbiw	r24, 0x01	; 1
  ac:	f1 f7       	brne	.-4      	; 0xaa <LCDsendCommand+0x34>
	_delay_ms(1);
}
  ae:	08 95       	ret

000000b0 <LCDinit>:
  b0:	80 e3       	ldi	r24, 0x30	; 48
  b2:	95 e7       	ldi	r25, 0x75	; 117
  b4:	01 97       	sbiw	r24, 0x01	; 1
  b6:	f1 f7       	brne	.-4      	; 0xb4 <LCDinit+0x4>
void LCDinit(void)//Initializes LCD
{
	_delay_ms(15);
	LDP=0x00;
  b8:	18 ba       	out	0x18, r1	; 24
	LCP=0x00;
  ba:	18 ba       	out	0x18, r1	; 24
	LDDR|=1<<LCD_D7|1<<LCD_D6|1<<LCD_D5|1<<LCD_D4;
  bc:	87 b3       	in	r24, 0x17	; 23
  be:	80 6f       	ori	r24, 0xF0	; 240
  c0:	87 bb       	out	0x17, r24	; 23
	LCDR|=1<<LCD_E|1<<LCD_RW|1<<LCD_RS;
  c2:	87 b3       	in	r24, 0x17	; 23
  c4:	87 60       	ori	r24, 0x07	; 7
  c6:	87 bb       	out	0x17, r24	; 23
   //---------one------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
  c8:	80 e3       	ldi	r24, 0x30	; 48
  ca:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
  cc:	c2 9a       	sbi	0x18, 2	; 24
  ce:	20 ed       	ldi	r18, 0xD0	; 208
  d0:	37 e0       	ldi	r19, 0x07	; 7
  d2:	f9 01       	movw	r30, r18
  d4:	31 97       	sbiw	r30, 0x01	; 1
  d6:	f1 f7       	brne	.-4      	; 0xd4 <LCDinit+0x24>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  d8:	c2 98       	cbi	0x18, 2	; 24
  da:	f9 01       	movw	r30, r18
  dc:	31 97       	sbiw	r30, 0x01	; 1
  de:	f1 f7       	brne	.-4      	; 0xdc <LCDinit+0x2c>
	_delay_ms(1);
	//-----------two-----------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
  e0:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
  e2:	c2 9a       	sbi	0x18, 2	; 24
  e4:	c9 01       	movw	r24, r18
  e6:	01 97       	sbiw	r24, 0x01	; 1
  e8:	f1 f7       	brne	.-4      	; 0xe6 <__stack+0x7>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  ea:	c2 98       	cbi	0x18, 2	; 24
  ec:	c9 01       	movw	r24, r18
  ee:	01 97       	sbiw	r24, 0x01	; 1
  f0:	f1 f7       	brne	.-4      	; 0xee <__stack+0xf>
	_delay_ms(1);
	//-------three-------------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|0<<LCD_D4; //4 bit mode
  f2:	80 e2       	ldi	r24, 0x20	; 32
  f4:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
  f6:	c2 9a       	sbi	0x18, 2	; 24
  f8:	c9 01       	movw	r24, r18
  fa:	01 97       	sbiw	r24, 0x01	; 1
  fc:	f1 f7       	brne	.-4      	; 0xfa <__stack+0x1b>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  fe:	c2 98       	cbi	0x18, 2	; 24
 100:	c9 01       	movw	r24, r18
 102:	01 97       	sbiw	r24, 0x01	; 1
 104:	f1 f7       	brne	.-4      	; 0x102 <__stack+0x23>
	_delay_ms(1);
	//--------4 bit--dual line---------------
	LCDsendCommand(0b00101000);
 106:	88 e2       	ldi	r24, 0x28	; 40
 108:	b6 df       	rcall	.-148    	; 0x76 <LCDsendCommand>
   //-----increment address, cursor shift------
	LCDsendCommand(0b00001110);
 10a:	8e e0       	ldi	r24, 0x0E	; 14
 10c:	b4 df       	rcall	.-152    	; 0x76 <LCDsendCommand>


}			
 10e:	08 95       	ret

00000110 <LCDclr>:
void LCDclr(void)				//Clears LCD
{
	LCDsendCommand(1<<LCD_CLR);
 110:	81 e0       	ldi	r24, 0x01	; 1
 112:	b1 df       	rcall	.-158    	; 0x76 <LCDsendCommand>
}
 114:	08 95       	ret

00000116 <LCDhome>:
void LCDhome(void)			//LCD cursor home
{
	LCDsendCommand(1<<LCD_HOME);
 116:	82 e0       	ldi	r24, 0x02	; 2
 118:	ae df       	rcall	.-164    	; 0x76 <LCDsendCommand>
}
 11a:	08 95       	ret

0000011c <LCDstring>:
void LCDstring(uint8_t* data, uint8_t nBytes)	//Outputs string to LCD
{
 11c:	0f 93       	push	r16
 11e:	1f 93       	push	r17
 120:	cf 93       	push	r28
 122:	df 93       	push	r29
 124:	06 2f       	mov	r16, r22
register uint8_t i;

	// check to make sure we have a good pointer
	if (!data) return;
 126:	00 97       	sbiw	r24, 0x00	; 0
 128:	41 f0       	breq	.+16     	; 0x13a <LCDstring+0x1e>
 12a:	ec 01       	movw	r28, r24
 12c:	10 e0       	ldi	r17, 0x00	; 0
 12e:	03 c0       	rjmp	.+6      	; 0x136 <LCDstring+0x1a>

	// print data
	for(i=0; i<nBytes; i++)
	{
		LCDsendChar(data[i]);
 130:	89 91       	ld	r24, Y+
 132:	80 df       	rcall	.-256    	; 0x34 <LCDsendChar>

	// check to make sure we have a good pointer
	if (!data) return;

	// print data
	for(i=0; i<nBytes; i++)
 134:	1f 5f       	subi	r17, 0xFF	; 255
 136:	10 17       	cp	r17, r16
 138:	d8 f3       	brcs	.-10     	; 0x130 <LCDstring+0x14>
	{
		LCDsendChar(data[i]);
	}
}
 13a:	df 91       	pop	r29
 13c:	cf 91       	pop	r28
 13e:	1f 91       	pop	r17
 140:	0f 91       	pop	r16
 142:	08 95       	ret

00000144 <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)
 144:	62 30       	cpi	r22, 0x02	; 2
 146:	31 f0       	breq	.+12     	; 0x154 <LCDGotoXY+0x10>
 148:	63 30       	cpi	r22, 0x03	; 3
 14a:	31 f0       	breq	.+12     	; 0x158 <LCDGotoXY+0x14>
 14c:	61 30       	cpi	r22, 0x01	; 1
 14e:	29 f4       	brne	.+10     	; 0x15a <LCDGotoXY+0x16>
	{
	case 0: DDRAMAddr = LCD_LINE0_DDRAMADDR+x; break;
	case 1: DDRAMAddr = LCD_LINE1_DDRAMADDR+x; break;
 150:	80 5c       	subi	r24, 0xC0	; 192
 152:	03 c0       	rjmp	.+6      	; 0x15a <LCDGotoXY+0x16>
	case 2: DDRAMAddr = LCD_LINE2_DDRAMADDR+x; break;
 154:	8c 5e       	subi	r24, 0xEC	; 236
 156:	01 c0       	rjmp	.+2      	; 0x15a <LCDGotoXY+0x16>
	case 3: DDRAMAddr = LCD_LINE3_DDRAMADDR+x; break;
 158:	8c 5a       	subi	r24, 0xAC	; 172
	default: DDRAMAddr = LCD_LINE0_DDRAMADDR+x;
	}
	// set data address
	LCDsendCommand(1<<LCD_DDRAM | DDRAMAddr);
 15a:	80 68       	ori	r24, 0x80	; 128
 15c:	8c df       	rcall	.-232    	; 0x76 <LCDsendCommand>
	
}
 15e:	08 95       	ret

00000160 <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)
{
 160:	1f 93       	push	r17
 162:	cf 93       	push	r28
 164:	df 93       	push	r29
 166:	ec 01       	movw	r28, r24
 168:	86 2f       	mov	r24, r22
	uint8_t i;
	LCDGotoXY(x,y);
 16a:	64 2f       	mov	r22, r20
 16c:	eb df       	rcall	.-42     	; 0x144 <LCDGotoXY>
 16e:	10 e0       	ldi	r17, 0x00	; 0
 170:	02 c0       	rjmp	.+4      	; 0x176 <CopyStringtoLCD+0x16>
	for(i=0;(uint8_t)pgm_read_byte(&FlashLoc[i]);i++)
	{
		LCDsendChar((uint8_t)pgm_read_byte(&FlashLoc[i]));
 172:	60 df       	rcall	.-320    	; 0x34 <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++)
 174:	1f 5f       	subi	r17, 0xFF	; 255
 176:	fe 01       	movw	r30, r28
 178:	e1 0f       	add	r30, r17
 17a:	f1 1d       	adc	r31, r1
 17c:	84 91       	lpm	r24, Z+
 17e:	88 23       	and	r24, r24
 180:	c1 f7       	brne	.-16     	; 0x172 <CopyStringtoLCD+0x12>
	{
		LCDsendChar((uint8_t)pgm_read_byte(&FlashLoc[i]));
	}
}
 182:	df 91       	pop	r29
 184:	cf 91       	pop	r28
 186:	1f 91       	pop	r17
 188:	08 95       	ret

0000018a <LCDdefinechar>:
0b00000000,
0b00000000
};
LCDdefinechar(backslash,0);
*/
void LCDdefinechar(const uint8_t *pc,uint8_t char_code){
 18a:	ef 92       	push	r14
 18c:	ff 92       	push	r15
 18e:	0f 93       	push	r16
 190:	1f 93       	push	r17
 192:	cf 93       	push	r28
 194:	df 93       	push	r29
 196:	7c 01       	movw	r14, r24
 198:	16 2f       	mov	r17, r22
	uint8_t a, pcc;
	uint16_t i;
	a=(char_code<<3)|0x40;
 19a:	11 0f       	add	r17, r17
 19c:	11 0f       	add	r17, r17
 19e:	11 0f       	add	r17, r17
 1a0:	10 64       	ori	r17, 0x40	; 64
 1a2:	c0 e0       	ldi	r28, 0x00	; 0
 1a4:	d0 e0       	ldi	r29, 0x00	; 0
	for (i=0; i<8; i++){
		pcc=pgm_read_byte(&pc[i]);
 1a6:	f7 01       	movw	r30, r14
 1a8:	ec 0f       	add	r30, r28
 1aa:	fd 1f       	adc	r31, r29
 1ac:	04 91       	lpm	r16, Z+
		LCDsendCommand(a++);
 1ae:	81 2f       	mov	r24, r17
 1b0:	8c 0f       	add	r24, r28
 1b2:	61 df       	rcall	.-318    	; 0x76 <LCDsendCommand>
		LCDsendChar(pcc);
 1b4:	80 2f       	mov	r24, r16
 1b6:	3e df       	rcall	.-388    	; 0x34 <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++){
 1b8:	21 96       	adiw	r28, 0x01	; 1
 1ba:	c8 30       	cpi	r28, 0x08	; 8
 1bc:	d1 05       	cpc	r29, r1
 1be:	99 f7       	brne	.-26     	; 0x1a6 <LCDdefinechar+0x1c>
		pcc=pgm_read_byte(&pc[i]);
		LCDsendCommand(a++);
		LCDsendChar(pcc);
		}
}
 1c0:	df 91       	pop	r29
 1c2:	cf 91       	pop	r28
 1c4:	1f 91       	pop	r17
 1c6:	0f 91       	pop	r16
 1c8:	ff 90       	pop	r15
 1ca:	ef 90       	pop	r14
 1cc:	08 95       	ret

000001ce <LCDshiftLeft>:

void LCDshiftLeft(uint8_t n)	//Scrol n of characters Right
{
 1ce:	0f 93       	push	r16
 1d0:	1f 93       	push	r17
 1d2:	08 2f       	mov	r16, r24
 1d4:	10 e0       	ldi	r17, 0x00	; 0
 1d6:	03 c0       	rjmp	.+6      	; 0x1de <LCDshiftLeft+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x1E);
 1d8:	8e e1       	ldi	r24, 0x1E	; 30
 1da:	4d df       	rcall	.-358    	; 0x76 <LCDsendCommand>
		}
}

void LCDshiftLeft(uint8_t n)	//Scrol n of characters Right
{
	for (uint8_t i=0;i<n;i++)
 1dc:	1f 5f       	subi	r17, 0xFF	; 255
 1de:	10 17       	cp	r17, r16
 1e0:	d8 f3       	brcs	.-10     	; 0x1d8 <LCDshiftLeft+0xa>
	{
		LCDsendCommand(0x1E);
	}
}
 1e2:	1f 91       	pop	r17
 1e4:	0f 91       	pop	r16
 1e6:	08 95       	ret

000001e8 <LCDshiftRight>:
void LCDshiftRight(uint8_t n)	//Scrol n of characters Left
{
 1e8:	0f 93       	push	r16
 1ea:	1f 93       	push	r17
 1ec:	08 2f       	mov	r16, r24
 1ee:	10 e0       	ldi	r17, 0x00	; 0
 1f0:	03 c0       	rjmp	.+6      	; 0x1f8 <LCDshiftRight+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x18);
 1f2:	88 e1       	ldi	r24, 0x18	; 24
 1f4:	40 df       	rcall	.-384    	; 0x76 <LCDsendCommand>
		LCDsendCommand(0x1E);
	}
}
void LCDshiftRight(uint8_t n)	//Scrol n of characters Left
{
	for (uint8_t i=0;i<n;i++)
 1f6:	1f 5f       	subi	r17, 0xFF	; 255
 1f8:	10 17       	cp	r17, r16
 1fa:	d8 f3       	brcs	.-10     	; 0x1f2 <LCDshiftRight+0xa>
	{
		LCDsendCommand(0x18);
	}
}
 1fc:	1f 91       	pop	r17
 1fe:	0f 91       	pop	r16
 200:	08 95       	ret

00000202 <LCDcursorOn>:
void LCDcursorOn(void) //displays LCD cursor
{
	LCDsendCommand(0x0E);
 202:	8e e0       	ldi	r24, 0x0E	; 14
 204:	38 df       	rcall	.-400    	; 0x76 <LCDsendCommand>
}
 206:	08 95       	ret

00000208 <LCDcursorOnBlink>:
void LCDcursorOnBlink(void)	//displays LCD blinking cursor
{
	LCDsendCommand(0x0F);
 208:	8f e0       	ldi	r24, 0x0F	; 15
 20a:	35 df       	rcall	.-406    	; 0x76 <LCDsendCommand>
}
 20c:	08 95       	ret

0000020e <LCDcursorOFF>:
void LCDcursorOFF(void)	//turns OFF cursor
{
	LCDsendCommand(0x0C);
 20e:	8c e0       	ldi	r24, 0x0C	; 12
 210:	32 df       	rcall	.-412    	; 0x76 <LCDsendCommand>
}
 212:	08 95       	ret

00000214 <LCDblank>:
void LCDblank(void)		//blanks LCD
{
	LCDsendCommand(0x08);
 214:	88 e0       	ldi	r24, 0x08	; 8
 216:	2f df       	rcall	.-418    	; 0x76 <LCDsendCommand>
}
 218:	08 95       	ret

0000021a <LCDvisible>:
void LCDvisible(void)		//Shows LCD
{
	LCDsendCommand(0x0C);
 21a:	8c e0       	ldi	r24, 0x0C	; 12
 21c:	2c df       	rcall	.-424    	; 0x76 <LCDsendCommand>
}
 21e:	08 95       	ret

00000220 <LCDcursorLeft>:
void LCDcursorLeft(uint8_t n)	//Moves cursor by n poisitions left
{
 220:	0f 93       	push	r16
 222:	1f 93       	push	r17
 224:	08 2f       	mov	r16, r24
 226:	10 e0       	ldi	r17, 0x00	; 0
 228:	03 c0       	rjmp	.+6      	; 0x230 <LCDcursorLeft+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x10);
 22a:	80 e1       	ldi	r24, 0x10	; 16
 22c:	24 df       	rcall	.-440    	; 0x76 <LCDsendCommand>
{
	LCDsendCommand(0x0C);
}
void LCDcursorLeft(uint8_t n)	//Moves cursor by n poisitions left
{
	for (uint8_t i=0;i<n;i++)
 22e:	1f 5f       	subi	r17, 0xFF	; 255
 230:	10 17       	cp	r17, r16
 232:	d8 f3       	brcs	.-10     	; 0x22a <LCDcursorLeft+0xa>
	{
		LCDsendCommand(0x10);
	}
}
 234:	1f 91       	pop	r17
 236:	0f 91       	pop	r16
 238:	08 95       	ret

0000023a <LCDcursorRight>:
void LCDcursorRight(uint8_t n)	//Moves cursor by n poisitions left
{
 23a:	0f 93       	push	r16
 23c:	1f 93       	push	r17
 23e:	08 2f       	mov	r16, r24
 240:	10 e0       	ldi	r17, 0x00	; 0
 242:	03 c0       	rjmp	.+6      	; 0x24a <LCDcursorRight+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x14);
 244:	84 e1       	ldi	r24, 0x14	; 20
 246:	17 df       	rcall	.-466    	; 0x76 <LCDsendCommand>
		LCDsendCommand(0x10);
	}
}
void LCDcursorRight(uint8_t n)	//Moves cursor by n poisitions left
{
	for (uint8_t i=0;i<n;i++)
 248:	1f 5f       	subi	r17, 0xFF	; 255
 24a:	10 17       	cp	r17, r16
 24c:	d8 f3       	brcs	.-10     	; 0x244 <LCDcursorRight+0xa>
	{
		LCDsendCommand(0x14);
	}
}
 24e:	1f 91       	pop	r17
 250:	0f 91       	pop	r16
 252:	08 95       	ret

00000254 <main>:
#include <avr/io.h>//Подключаем библиотеку для микроконтроллера ATtiny2313
#include <util/delay.h>// Подключаем библиотеку функции задержки
#include <lcd_lib.h>//Подключаем библиотеку для LCD
#include <lcd_lib.c>//Подключаем библиотеку для LCD
int main(void)
{ DDRB=0xff;
 254:	8f ef       	ldi	r24, 0xFF	; 255
 256:	87 bb       	out	0x17, r24	; 23
  PORTB=0x00;
 258:	18 ba       	out	0x18, r1	; 24
  LCDinit();
 25a:	2a df       	rcall	.-428    	; 0xb0 <LCDinit>
  LCDclr();
 25c:	59 df       	rcall	.-334    	; 0x110 <LCDclr>
  LCDGotoXY(0, 0);
 25e:	80 e0       	ldi	r24, 0x00	; 0
 260:	60 e0       	ldi	r22, 0x00	; 0
 262:	70 df       	rcall	.-288    	; 0x144 <LCDGotoXY>
  LCDsendChar('K');
 264:	8b e4       	ldi	r24, 0x4B	; 75
 266:	e6 de       	rcall	.-564    	; 0x34 <LCDsendChar>
 268:	88 e8       	ldi	r24, 0x88	; 136
 26a:	93 e1       	ldi	r25, 0x13	; 19
 26c:	28 ec       	ldi	r18, 0xC8	; 200
 26e:	30 e0       	ldi	r19, 0x00	; 0
 270:	f9 01       	movw	r30, r18
 272:	31 97       	sbiw	r30, 0x01	; 1
 274:	f1 f7       	brne	.-4      	; 0x272 <main+0x1e>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 276:	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)
 278:	d9 f7       	brne	.-10     	; 0x270 <main+0x1c>
  _delay_ms(500); 
  LCDGotoXY(1, 0);
 27a:	81 e0       	ldi	r24, 0x01	; 1
 27c:	60 e0       	ldi	r22, 0x00	; 0
 27e:	62 df       	rcall	.-316    	; 0x144 <LCDGotoXY>
 280:	88 e8       	ldi	r24, 0x88	; 136
 282:	93 e1       	ldi	r25, 0x13	; 19
 284:	28 ec       	ldi	r18, 0xC8	; 200
 286:	30 e0       	ldi	r19, 0x00	; 0
 288:	f9 01       	movw	r30, r18
 28a:	31 97       	sbiw	r30, 0x01	; 1
 28c:	f1 f7       	brne	.-4      	; 0x28a <main+0x36>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 28e:	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)
 290:	d9 f7       	brne	.-10     	; 0x288 <main+0x34>
  _delay_ms(500);
  LCDsendChar('u');
 292:	85 e7       	ldi	r24, 0x75	; 117
 294:	cf de       	rcall	.-610    	; 0x34 <LCDsendChar>
 296:	88 e8       	ldi	r24, 0x88	; 136
 298:	93 e1       	ldi	r25, 0x13	; 19
 29a:	28 ec       	ldi	r18, 0xC8	; 200
 29c:	30 e0       	ldi	r19, 0x00	; 0
 29e:	f9 01       	movw	r30, r18
 2a0:	31 97       	sbiw	r30, 0x01	; 1
 2a2:	f1 f7       	brne	.-4      	; 0x2a0 <main+0x4c>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 2a4:	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)
 2a6:	d9 f7       	brne	.-10     	; 0x29e <main+0x4a>
  _delay_ms(500); 
  LCDGotoXY(2, 0);
 2a8:	82 e0       	ldi	r24, 0x02	; 2
 2aa:	60 e0       	ldi	r22, 0x00	; 0
 2ac:	4b df       	rcall	.-362    	; 0x144 <LCDGotoXY>
 2ae:	88 e8       	ldi	r24, 0x88	; 136
 2b0:	93 e1       	ldi	r25, 0x13	; 19
 2b2:	28 ec       	ldi	r18, 0xC8	; 200
 2b4:	30 e0       	ldi	r19, 0x00	; 0
 2b6:	f9 01       	movw	r30, r18
 2b8:	31 97       	sbiw	r30, 0x01	; 1
 2ba:	f1 f7       	brne	.-4      	; 0x2b8 <main+0x64>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 2bc:	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)
 2be:	d9 f7       	brne	.-10     	; 0x2b6 <main+0x62>
  _delay_ms(500);
  LCDsendChar('b');
 2c0:	82 e6       	ldi	r24, 0x62	; 98
 2c2:	b8 de       	rcall	.-656    	; 0x34 <LCDsendChar>
 2c4:	88 e8       	ldi	r24, 0x88	; 136
 2c6:	93 e1       	ldi	r25, 0x13	; 19
 2c8:	28 ec       	ldi	r18, 0xC8	; 200
 2ca:	30 e0       	ldi	r19, 0x00	; 0
 2cc:	f9 01       	movw	r30, r18
 2ce:	31 97       	sbiw	r30, 0x01	; 1
 2d0:	f1 f7       	brne	.-4      	; 0x2ce <main+0x7a>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 2d2:	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)
 2d4:	d9 f7       	brne	.-10     	; 0x2cc <main+0x78>
  _delay_ms(500); 
  LCDGotoXY(3, 0);
 2d6:	83 e0       	ldi	r24, 0x03	; 3
 2d8:	60 e0       	ldi	r22, 0x00	; 0
 2da:	34 df       	rcall	.-408    	; 0x144 <LCDGotoXY>
 2dc:	88 e8       	ldi	r24, 0x88	; 136
 2de:	93 e1       	ldi	r25, 0x13	; 19
 2e0:	28 ec       	ldi	r18, 0xC8	; 200
 2e2:	30 e0       	ldi	r19, 0x00	; 0
 2e4:	f9 01       	movw	r30, r18
 2e6:	31 97       	sbiw	r30, 0x01	; 1
 2e8:	f1 f7       	brne	.-4      	; 0x2e6 <main+0x92>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 2ea:	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)
 2ec:	d9 f7       	brne	.-10     	; 0x2e4 <main+0x90>
  _delay_ms(500);
  LCDsendChar('S');
 2ee:	83 e5       	ldi	r24, 0x53	; 83
 2f0:	a1 de       	rcall	.-702    	; 0x34 <LCDsendChar>
 2f2:	88 e8       	ldi	r24, 0x88	; 136
 2f4:	93 e1       	ldi	r25, 0x13	; 19
 2f6:	28 ec       	ldi	r18, 0xC8	; 200
 2f8:	30 e0       	ldi	r19, 0x00	; 0
 2fa:	f9 01       	movw	r30, r18
 2fc:	31 97       	sbiw	r30, 0x01	; 1
 2fe:	f1 f7       	brne	.-4      	; 0x2fc <main+0xa8>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 300:	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)
 302:	d9 f7       	brne	.-10     	; 0x2fa <main+0xa6>
  _delay_ms(500); 
  LCDGotoXY(4, 0);
 304:	84 e0       	ldi	r24, 0x04	; 4
 306:	60 e0       	ldi	r22, 0x00	; 0
 308:	1d df       	rcall	.-454    	; 0x144 <LCDGotoXY>
 30a:	88 e8       	ldi	r24, 0x88	; 136
 30c:	93 e1       	ldi	r25, 0x13	; 19
 30e:	28 ec       	ldi	r18, 0xC8	; 200
 310:	30 e0       	ldi	r19, 0x00	; 0
 312:	f9 01       	movw	r30, r18
 314:	31 97       	sbiw	r30, 0x01	; 1
 316:	f1 f7       	brne	.-4      	; 0x314 <main+0xc0>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 318:	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)
 31a:	d9 f7       	brne	.-10     	; 0x312 <main+0xbe>
  _delay_ms(500);
  LCDsendChar('U');
 31c:	85 e5       	ldi	r24, 0x55	; 85
 31e:	8a de       	rcall	.-748    	; 0x34 <LCDsendChar>
 320:	88 e8       	ldi	r24, 0x88	; 136
 322:	93 e1       	ldi	r25, 0x13	; 19
 324:	28 ec       	ldi	r18, 0xC8	; 200
 326:	30 e0       	ldi	r19, 0x00	; 0
 328:	f9 01       	movw	r30, r18
 32a:	31 97       	sbiw	r30, 0x01	; 1
 32c:	f1 f7       	brne	.-4      	; 0x32a <main+0xd6>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 32e:	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)
 330:	d9 f7       	brne	.-10     	; 0x328 <main+0xd4>
  _delay_ms(500); 
  LCDGotoXY(5, 0);
 332:	85 e0       	ldi	r24, 0x05	; 5
 334:	60 e0       	ldi	r22, 0x00	; 0
 336:	06 df       	rcall	.-500    	; 0x144 <LCDGotoXY>
 338:	88 e8       	ldi	r24, 0x88	; 136
 33a:	93 e1       	ldi	r25, 0x13	; 19
 33c:	28 ec       	ldi	r18, 0xC8	; 200
 33e:	30 e0       	ldi	r19, 0x00	; 0
 340:	f9 01       	movw	r30, r18
 342:	31 97       	sbiw	r30, 0x01	; 1
 344:	f1 f7       	brne	.-4      	; 0x342 <main+0xee>
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 346:	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)
 348:	d9 f7       	brne	.-10     	; 0x340 <main+0xec>
  _delay_ms(500);
	
	
}
 34a:	80 e0       	ldi	r24, 0x00	; 0
 34c:	90 e0       	ldi	r25, 0x00	; 0
 34e:	08 95       	ret

00000350 <_exit>:
 350:	f8 94       	cli

00000352 <__stop_program>:
 352:	ff cf       	rjmp	.-2      	; 0x352 <__stop_program>
