
main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000300  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000010  00800060  00000300  00000394  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000004  00800070  00800070  000003a4  2**0
                  ALLOC
  3 .debug_aranges 00000020  00000000  00000000  000003a4  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_pubnames 00000159  00000000  00000000  000003c4  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   0000082c  00000000  00000000  0000051d  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 000001a8  00000000  00000000  00000d49  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   00000581  00000000  00000000  00000ef1  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00000140  00000000  00000000  00001474  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    00000209  00000000  00000000  000015b4  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_loc    0000047d  00000000  00000000  000017bd  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_ranges 00000048  00000000  00000000  00001c3a  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26 <__ctors_end>
   2:	2a c0       	rjmp	.+84     	; 0x58 <__bad_interrupt>
   4:	29 c0       	rjmp	.+82     	; 0x58 <__bad_interrupt>
   6:	28 c0       	rjmp	.+80     	; 0x58 <__bad_interrupt>
   8:	27 c0       	rjmp	.+78     	; 0x58 <__bad_interrupt>
   a:	26 c0       	rjmp	.+76     	; 0x58 <__bad_interrupt>
   c:	25 c0       	rjmp	.+74     	; 0x58 <__bad_interrupt>
   e:	24 c0       	rjmp	.+72     	; 0x58 <__bad_interrupt>
  10:	23 c0       	rjmp	.+70     	; 0x58 <__bad_interrupt>
  12:	22 c0       	rjmp	.+68     	; 0x58 <__bad_interrupt>
  14:	21 c0       	rjmp	.+66     	; 0x58 <__bad_interrupt>
  16:	20 c0       	rjmp	.+64     	; 0x58 <__bad_interrupt>
  18:	1f c0       	rjmp	.+62     	; 0x58 <__bad_interrupt>
  1a:	1e c0       	rjmp	.+60     	; 0x58 <__bad_interrupt>
  1c:	1d c0       	rjmp	.+58     	; 0x58 <__bad_interrupt>
  1e:	1c c0       	rjmp	.+56     	; 0x58 <__bad_interrupt>
  20:	1b c0       	rjmp	.+54     	; 0x58 <__bad_interrupt>
  22:	1a c0       	rjmp	.+52     	; 0x58 <__bad_interrupt>
  24:	19 c0       	rjmp	.+50     	; 0x58 <__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_copy_data>:
  2e:	10 e0       	ldi	r17, 0x00	; 0
  30:	a0 e6       	ldi	r26, 0x60	; 96
  32:	b0 e0       	ldi	r27, 0x00	; 0
  34:	e0 e0       	ldi	r30, 0x00	; 0
  36:	f3 e0       	ldi	r31, 0x03	; 3
  38:	02 c0       	rjmp	.+4      	; 0x3e <.do_copy_data_start>

0000003a <.do_copy_data_loop>:
  3a:	05 90       	lpm	r0, Z+
  3c:	0d 92       	st	X+, r0

0000003e <.do_copy_data_start>:
  3e:	a0 37       	cpi	r26, 0x70	; 112
  40:	b1 07       	cpc	r27, r17
  42:	d9 f7       	brne	.-10     	; 0x3a <.do_copy_data_loop>

00000044 <__do_clear_bss>:
  44:	10 e0       	ldi	r17, 0x00	; 0
  46:	a0 e7       	ldi	r26, 0x70	; 112
  48:	b0 e0       	ldi	r27, 0x00	; 0
  4a:	01 c0       	rjmp	.+2      	; 0x4e <.do_clear_bss_start>

0000004c <.do_clear_bss_loop>:
  4c:	1d 92       	st	X+, r1

0000004e <.do_clear_bss_start>:
  4e:	a4 37       	cpi	r26, 0x74	; 116
  50:	b1 07       	cpc	r27, r17
  52:	e1 f7       	brne	.-8      	; 0x4c <.do_clear_bss_loop>
  54:	12 d1       	rcall	.+548    	; 0x27a <main>
  56:	52 c1       	rjmp	.+676    	; 0x2fc <_exit>

00000058 <__bad_interrupt>:
  58:	d3 cf       	rjmp	.-90     	; 0x0 <__vectors>

0000005a <LCDsendChar>:
#include <avr/pgmspace.h>
#include <util/delay.h>

void LCDsendChar(uint8_t ch)		//Sends Char to LCD
{
	LDP=(ch&0b11110000);
  5a:	28 2f       	mov	r18, r24
  5c:	20 7f       	andi	r18, 0xF0	; 240
  5e:	28 bb       	out	0x18, r18	; 24
	LCP|=1<<LCD_RS;
  60:	c0 9a       	sbi	0x18, 0	; 24
	LCP|=1<<LCD_E;		
  62:	c2 9a       	sbi	0x18, 2	; 24
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  64:	20 ed       	ldi	r18, 0xD0	; 208
  66:	37 e0       	ldi	r19, 0x07	; 7
  68:	f9 01       	movw	r30, r18
  6a:	31 97       	sbiw	r30, 0x01	; 1
  6c:	f1 f7       	brne	.-4      	; 0x6a <LCDsendChar+0x10>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);	
  6e:	c2 98       	cbi	0x18, 2	; 24
	LCP&=~(1<<LCD_RS);
  70:	c0 98       	cbi	0x18, 0	; 24
  72:	f9 01       	movw	r30, r18
  74:	31 97       	sbiw	r30, 0x01	; 1
  76:	f1 f7       	brne	.-4      	; 0x74 <LCDsendChar+0x1a>
	_delay_ms(1);
	LDP=((ch&0b00001111)<<4);
  78:	90 e0       	ldi	r25, 0x00	; 0
  7a:	44 e0       	ldi	r20, 0x04	; 4
  7c:	88 0f       	add	r24, r24
  7e:	99 1f       	adc	r25, r25
  80:	4a 95       	dec	r20
  82:	e1 f7       	brne	.-8      	; 0x7c <LCDsendChar+0x22>
  84:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_RS;
  86:	c0 9a       	sbi	0x18, 0	; 24
	LCP|=1<<LCD_E;		
  88:	c2 9a       	sbi	0x18, 2	; 24
  8a:	c9 01       	movw	r24, r18
  8c:	01 97       	sbiw	r24, 0x01	; 1
  8e:	f1 f7       	brne	.-4      	; 0x8c <LCDsendChar+0x32>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);	
  90:	c2 98       	cbi	0x18, 2	; 24
	LCP&=~(1<<LCD_RS);
  92:	c0 98       	cbi	0x18, 0	; 24
  94:	c9 01       	movw	r24, r18
  96:	01 97       	sbiw	r24, 0x01	; 1
  98:	f1 f7       	brne	.-4      	; 0x96 <LCDsendChar+0x3c>
	_delay_ms(1);
}
  9a:	08 95       	ret

0000009c <LCDsendCommand>:
void LCDsendCommand(uint8_t cmd)	//Sends Command to LCD
{
	LDP=(cmd&0b11110000);
  9c:	28 2f       	mov	r18, r24
  9e:	20 7f       	andi	r18, 0xF0	; 240
  a0:	28 bb       	out	0x18, r18	; 24
	LCP|=1<<LCD_E;		
  a2:	c2 9a       	sbi	0x18, 2	; 24
  a4:	20 ed       	ldi	r18, 0xD0	; 208
  a6:	37 e0       	ldi	r19, 0x07	; 7
  a8:	f9 01       	movw	r30, r18
  aa:	31 97       	sbiw	r30, 0x01	; 1
  ac:	f1 f7       	brne	.-4      	; 0xaa <LCDsendCommand+0xe>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  ae:	c2 98       	cbi	0x18, 2	; 24
  b0:	f9 01       	movw	r30, r18
  b2:	31 97       	sbiw	r30, 0x01	; 1
  b4:	f1 f7       	brne	.-4      	; 0xb2 <LCDsendCommand+0x16>
	_delay_ms(1);
	LDP=((cmd&0b00001111)<<4);	
  b6:	90 e0       	ldi	r25, 0x00	; 0
  b8:	54 e0       	ldi	r21, 0x04	; 4
  ba:	88 0f       	add	r24, r24
  bc:	99 1f       	adc	r25, r25
  be:	5a 95       	dec	r21
  c0:	e1 f7       	brne	.-8      	; 0xba <LCDsendCommand+0x1e>
  c2:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E;		
  c4:	c2 9a       	sbi	0x18, 2	; 24
  c6:	c9 01       	movw	r24, r18
  c8:	01 97       	sbiw	r24, 0x01	; 1
  ca:	f1 f7       	brne	.-4      	; 0xc8 <LCDsendCommand+0x2c>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
  cc:	c2 98       	cbi	0x18, 2	; 24
  ce:	c9 01       	movw	r24, r18
  d0:	01 97       	sbiw	r24, 0x01	; 1
  d2:	f1 f7       	brne	.-4      	; 0xd0 <LCDsendCommand+0x34>
	_delay_ms(1);
}
  d4:	08 95       	ret

000000d6 <LCDinit>:
  d6:	80 e3       	ldi	r24, 0x30	; 48
  d8:	95 e7       	ldi	r25, 0x75	; 117
  da:	01 97       	sbiw	r24, 0x01	; 1
  dc:	f1 f7       	brne	.-4      	; 0xda <LCDinit+0x4>
void LCDinit(void)//Initializes LCD
{
	_delay_ms(15);
	LDP=0x00;
  de:	18 ba       	out	0x18, r1	; 24
	LCP=0x00;
  e0:	18 ba       	out	0x18, r1	; 24
	LDDR|=1<<LCD_D7|1<<LCD_D6|1<<LCD_D5|1<<LCD_D4;
  e2:	87 b3       	in	r24, 0x17	; 23
  e4:	80 6f       	ori	r24, 0xF0	; 240
  e6:	87 bb       	out	0x17, r24	; 23
	LCDR|=1<<LCD_E|1<<LCD_RW|1<<LCD_RS;
  e8:	87 b3       	in	r24, 0x17	; 23
  ea:	87 60       	ori	r24, 0x07	; 7
  ec:	87 bb       	out	0x17, r24	; 23
   //---------one------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
  ee:	80 e3       	ldi	r24, 0x30	; 48
  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:	20 ed       	ldi	r18, 0xD0	; 208
  f6:	37 e0       	ldi	r19, 0x07	; 7
  f8:	f9 01       	movw	r30, r18
  fa:	31 97       	sbiw	r30, 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:	f9 01       	movw	r30, r18
 102:	31 97       	sbiw	r30, 0x01	; 1
 104:	f1 f7       	brne	.-4      	; 0x102 <__stack+0x23>
	_delay_ms(1);
	//-----------two-----------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
 106:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
 108:	c2 9a       	sbi	0x18, 2	; 24
 10a:	c9 01       	movw	r24, r18
 10c:	01 97       	sbiw	r24, 0x01	; 1
 10e:	f1 f7       	brne	.-4      	; 0x10c <__stack+0x2d>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
 110:	c2 98       	cbi	0x18, 2	; 24
 112:	c9 01       	movw	r24, r18
 114:	01 97       	sbiw	r24, 0x01	; 1
 116:	f1 f7       	brne	.-4      	; 0x114 <__stack+0x35>
	_delay_ms(1);
	//-------three-------------
	LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|0<<LCD_D4; //4 bit mode
 118:	80 e2       	ldi	r24, 0x20	; 32
 11a:	88 bb       	out	0x18, r24	; 24
	LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;		
 11c:	c2 9a       	sbi	0x18, 2	; 24
 11e:	c9 01       	movw	r24, r18
 120:	01 97       	sbiw	r24, 0x01	; 1
 122:	f1 f7       	brne	.-4      	; 0x120 <__stack+0x41>
	_delay_ms(1);
	LCP&=~(1<<LCD_E);
 124:	c2 98       	cbi	0x18, 2	; 24
 126:	c9 01       	movw	r24, r18
 128:	01 97       	sbiw	r24, 0x01	; 1
 12a:	f1 f7       	brne	.-4      	; 0x128 <__stack+0x49>
	_delay_ms(1);
	//--------4 bit--dual line---------------
	LCDsendCommand(0b00101000);
 12c:	88 e2       	ldi	r24, 0x28	; 40
 12e:	b6 df       	rcall	.-148    	; 0x9c <LCDsendCommand>
   //-----increment address, cursor shift------
	LCDsendCommand(0b00001110);
 130:	8e e0       	ldi	r24, 0x0E	; 14
 132:	b4 df       	rcall	.-152    	; 0x9c <LCDsendCommand>


}			
 134:	08 95       	ret

00000136 <LCDclr>:
void LCDclr(void)				//Clears LCD
{
	LCDsendCommand(1<<LCD_CLR);
 136:	81 e0       	ldi	r24, 0x01	; 1
 138:	b1 df       	rcall	.-158    	; 0x9c <LCDsendCommand>
}
 13a:	08 95       	ret

0000013c <LCDhome>:
void LCDhome(void)			//LCD cursor home
{
	LCDsendCommand(1<<LCD_HOME);
 13c:	82 e0       	ldi	r24, 0x02	; 2
 13e:	ae df       	rcall	.-164    	; 0x9c <LCDsendCommand>
}
 140:	08 95       	ret

00000142 <LCDstring>:
void LCDstring(uint8_t* data, uint8_t nBytes)	//Outputs string to LCD
{
 142:	0f 93       	push	r16
 144:	1f 93       	push	r17
 146:	cf 93       	push	r28
 148:	df 93       	push	r29
 14a:	06 2f       	mov	r16, r22
register uint8_t i;

	// check to make sure we have a good pointer
	if (!data) return;
 14c:	00 97       	sbiw	r24, 0x00	; 0
 14e:	41 f0       	breq	.+16     	; 0x160 <LCDstring+0x1e>
 150:	ec 01       	movw	r28, r24
 152:	10 e0       	ldi	r17, 0x00	; 0
 154:	03 c0       	rjmp	.+6      	; 0x15c <LCDstring+0x1a>

	// print data
	for(i=0; i<nBytes; i++)
	{
		LCDsendChar(data[i]);
 156:	89 91       	ld	r24, Y+
 158:	80 df       	rcall	.-256    	; 0x5a <LCDsendChar>

	// check to make sure we have a good pointer
	if (!data) return;

	// print data
	for(i=0; i<nBytes; i++)
 15a:	1f 5f       	subi	r17, 0xFF	; 255
 15c:	10 17       	cp	r17, r16
 15e:	d8 f3       	brcs	.-10     	; 0x156 <LCDstring+0x14>
	{
		LCDsendChar(data[i]);
	}
}
 160:	df 91       	pop	r29
 162:	cf 91       	pop	r28
 164:	1f 91       	pop	r17
 166:	0f 91       	pop	r16
 168:	08 95       	ret

0000016a <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)
 16a:	62 30       	cpi	r22, 0x02	; 2
 16c:	31 f0       	breq	.+12     	; 0x17a <LCDGotoXY+0x10>
 16e:	63 30       	cpi	r22, 0x03	; 3
 170:	31 f0       	breq	.+12     	; 0x17e <LCDGotoXY+0x14>
 172:	61 30       	cpi	r22, 0x01	; 1
 174:	29 f4       	brne	.+10     	; 0x180 <LCDGotoXY+0x16>
	{
	case 0: DDRAMAddr = LCD_LINE0_DDRAMADDR+x; break;
	case 1: DDRAMAddr = LCD_LINE1_DDRAMADDR+x; break;
 176:	80 5c       	subi	r24, 0xC0	; 192
 178:	03 c0       	rjmp	.+6      	; 0x180 <LCDGotoXY+0x16>
	case 2: DDRAMAddr = LCD_LINE2_DDRAMADDR+x; break;
 17a:	8c 5e       	subi	r24, 0xEC	; 236
 17c:	01 c0       	rjmp	.+2      	; 0x180 <LCDGotoXY+0x16>
	case 3: DDRAMAddr = LCD_LINE3_DDRAMADDR+x; break;
 17e:	8c 5a       	subi	r24, 0xAC	; 172
	default: DDRAMAddr = LCD_LINE0_DDRAMADDR+x;
	}
	// set data address
	LCDsendCommand(1<<LCD_DDRAM | DDRAMAddr);
 180:	80 68       	ori	r24, 0x80	; 128
 182:	8c df       	rcall	.-232    	; 0x9c <LCDsendCommand>
	
}
 184:	08 95       	ret

00000186 <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)
{
 186:	1f 93       	push	r17
 188:	cf 93       	push	r28
 18a:	df 93       	push	r29
 18c:	ec 01       	movw	r28, r24
 18e:	86 2f       	mov	r24, r22
	uint8_t i;
	LCDGotoXY(x,y);
 190:	64 2f       	mov	r22, r20
 192:	eb df       	rcall	.-42     	; 0x16a <LCDGotoXY>
 194:	10 e0       	ldi	r17, 0x00	; 0
 196:	02 c0       	rjmp	.+4      	; 0x19c <CopyStringtoLCD+0x16>
	for(i=0;(uint8_t)pgm_read_byte(&FlashLoc[i]);i++)
	{
		LCDsendChar((uint8_t)pgm_read_byte(&FlashLoc[i]));
 198:	60 df       	rcall	.-320    	; 0x5a <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++)
 19a:	1f 5f       	subi	r17, 0xFF	; 255
 19c:	fe 01       	movw	r30, r28
 19e:	e1 0f       	add	r30, r17
 1a0:	f1 1d       	adc	r31, r1
 1a2:	84 91       	lpm	r24, Z+
 1a4:	88 23       	and	r24, r24
 1a6:	c1 f7       	brne	.-16     	; 0x198 <CopyStringtoLCD+0x12>
	{
		LCDsendChar((uint8_t)pgm_read_byte(&FlashLoc[i]));
	}
}
 1a8:	df 91       	pop	r29
 1aa:	cf 91       	pop	r28
 1ac:	1f 91       	pop	r17
 1ae:	08 95       	ret

000001b0 <LCDdefinechar>:
0b00000000,
0b00000000
};
LCDdefinechar(backslash,0);
*/
void LCDdefinechar(const uint8_t *pc,uint8_t char_code){
 1b0:	ef 92       	push	r14
 1b2:	ff 92       	push	r15
 1b4:	0f 93       	push	r16
 1b6:	1f 93       	push	r17
 1b8:	cf 93       	push	r28
 1ba:	df 93       	push	r29
 1bc:	7c 01       	movw	r14, r24
 1be:	16 2f       	mov	r17, r22
	uint8_t a, pcc;
	uint16_t i;
	a=(char_code<<3)|0x40;
 1c0:	11 0f       	add	r17, r17
 1c2:	11 0f       	add	r17, r17
 1c4:	11 0f       	add	r17, r17
 1c6:	10 64       	ori	r17, 0x40	; 64
 1c8:	c0 e0       	ldi	r28, 0x00	; 0
 1ca:	d0 e0       	ldi	r29, 0x00	; 0
	for (i=0; i<8; i++){
		pcc=pgm_read_byte(&pc[i]);
 1cc:	f7 01       	movw	r30, r14
 1ce:	ec 0f       	add	r30, r28
 1d0:	fd 1f       	adc	r31, r29
 1d2:	04 91       	lpm	r16, Z+
		LCDsendCommand(a++);
 1d4:	81 2f       	mov	r24, r17
 1d6:	8c 0f       	add	r24, r28
 1d8:	61 df       	rcall	.-318    	; 0x9c <LCDsendCommand>
		LCDsendChar(pcc);
 1da:	80 2f       	mov	r24, r16
 1dc:	3e df       	rcall	.-388    	; 0x5a <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++){
 1de:	21 96       	adiw	r28, 0x01	; 1
 1e0:	c8 30       	cpi	r28, 0x08	; 8
 1e2:	d1 05       	cpc	r29, r1
 1e4:	99 f7       	brne	.-26     	; 0x1cc <LCDdefinechar+0x1c>
		pcc=pgm_read_byte(&pc[i]);
		LCDsendCommand(a++);
		LCDsendChar(pcc);
		}
}
 1e6:	df 91       	pop	r29
 1e8:	cf 91       	pop	r28
 1ea:	1f 91       	pop	r17
 1ec:	0f 91       	pop	r16
 1ee:	ff 90       	pop	r15
 1f0:	ef 90       	pop	r14
 1f2:	08 95       	ret

000001f4 <LCDshiftLeft>:

void LCDshiftLeft(uint8_t n)	//Scrol n of characters Right
{
 1f4:	0f 93       	push	r16
 1f6:	1f 93       	push	r17
 1f8:	08 2f       	mov	r16, r24
 1fa:	10 e0       	ldi	r17, 0x00	; 0
 1fc:	03 c0       	rjmp	.+6      	; 0x204 <LCDshiftLeft+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x1E);
 1fe:	8e e1       	ldi	r24, 0x1E	; 30
 200:	4d df       	rcall	.-358    	; 0x9c <LCDsendCommand>
		}
}

void LCDshiftLeft(uint8_t n)	//Scrol n of characters Right
{
	for (uint8_t i=0;i<n;i++)
 202:	1f 5f       	subi	r17, 0xFF	; 255
 204:	10 17       	cp	r17, r16
 206:	d8 f3       	brcs	.-10     	; 0x1fe <LCDshiftLeft+0xa>
	{
		LCDsendCommand(0x1E);
	}
}
 208:	1f 91       	pop	r17
 20a:	0f 91       	pop	r16
 20c:	08 95       	ret

0000020e <LCDshiftRight>:
void LCDshiftRight(uint8_t n)	//Scrol n of characters Left
{
 20e:	0f 93       	push	r16
 210:	1f 93       	push	r17
 212:	08 2f       	mov	r16, r24
 214:	10 e0       	ldi	r17, 0x00	; 0
 216:	03 c0       	rjmp	.+6      	; 0x21e <LCDshiftRight+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x18);
 218:	88 e1       	ldi	r24, 0x18	; 24
 21a:	40 df       	rcall	.-384    	; 0x9c <LCDsendCommand>
		LCDsendCommand(0x1E);
	}
}
void LCDshiftRight(uint8_t n)	//Scrol n of characters Left
{
	for (uint8_t i=0;i<n;i++)
 21c:	1f 5f       	subi	r17, 0xFF	; 255
 21e:	10 17       	cp	r17, r16
 220:	d8 f3       	brcs	.-10     	; 0x218 <LCDshiftRight+0xa>
	{
		LCDsendCommand(0x18);
	}
}
 222:	1f 91       	pop	r17
 224:	0f 91       	pop	r16
 226:	08 95       	ret

00000228 <LCDcursorOn>:
void LCDcursorOn(void) //displays LCD cursor
{
	LCDsendCommand(0x0E);
 228:	8e e0       	ldi	r24, 0x0E	; 14
 22a:	38 df       	rcall	.-400    	; 0x9c <LCDsendCommand>
}
 22c:	08 95       	ret

0000022e <LCDcursorOnBlink>:
void LCDcursorOnBlink(void)	//displays LCD blinking cursor
{
	LCDsendCommand(0x0F);
 22e:	8f e0       	ldi	r24, 0x0F	; 15
 230:	35 df       	rcall	.-406    	; 0x9c <LCDsendCommand>
}
 232:	08 95       	ret

00000234 <LCDcursorOFF>:
void LCDcursorOFF(void)	//turns OFF cursor
{
	LCDsendCommand(0x0C);
 234:	8c e0       	ldi	r24, 0x0C	; 12
 236:	32 df       	rcall	.-412    	; 0x9c <LCDsendCommand>
}
 238:	08 95       	ret

0000023a <LCDblank>:
void LCDblank(void)		//blanks LCD
{
	LCDsendCommand(0x08);
 23a:	88 e0       	ldi	r24, 0x08	; 8
 23c:	2f df       	rcall	.-418    	; 0x9c <LCDsendCommand>
}
 23e:	08 95       	ret

00000240 <LCDvisible>:
void LCDvisible(void)		//Shows LCD
{
	LCDsendCommand(0x0C);
 240:	8c e0       	ldi	r24, 0x0C	; 12
 242:	2c df       	rcall	.-424    	; 0x9c <LCDsendCommand>
}
 244:	08 95       	ret

00000246 <LCDcursorLeft>:
void LCDcursorLeft(uint8_t n)	//Moves cursor by n poisitions left
{
 246:	0f 93       	push	r16
 248:	1f 93       	push	r17
 24a:	08 2f       	mov	r16, r24
 24c:	10 e0       	ldi	r17, 0x00	; 0
 24e:	03 c0       	rjmp	.+6      	; 0x256 <LCDcursorLeft+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x10);
 250:	80 e1       	ldi	r24, 0x10	; 16
 252:	24 df       	rcall	.-440    	; 0x9c <LCDsendCommand>
{
	LCDsendCommand(0x0C);
}
void LCDcursorLeft(uint8_t n)	//Moves cursor by n poisitions left
{
	for (uint8_t i=0;i<n;i++)
 254:	1f 5f       	subi	r17, 0xFF	; 255
 256:	10 17       	cp	r17, r16
 258:	d8 f3       	brcs	.-10     	; 0x250 <LCDcursorLeft+0xa>
	{
		LCDsendCommand(0x10);
	}
}
 25a:	1f 91       	pop	r17
 25c:	0f 91       	pop	r16
 25e:	08 95       	ret

00000260 <LCDcursorRight>:
void LCDcursorRight(uint8_t n)	//Moves cursor by n poisitions left
{
 260:	0f 93       	push	r16
 262:	1f 93       	push	r17
 264:	08 2f       	mov	r16, r24
 266:	10 e0       	ldi	r17, 0x00	; 0
 268:	03 c0       	rjmp	.+6      	; 0x270 <LCDcursorRight+0x10>
	for (uint8_t i=0;i<n;i++)
	{
		LCDsendCommand(0x14);
 26a:	84 e1       	ldi	r24, 0x14	; 20
 26c:	17 df       	rcall	.-466    	; 0x9c <LCDsendCommand>
		LCDsendCommand(0x10);
	}
}
void LCDcursorRight(uint8_t n)	//Moves cursor by n poisitions left
{
	for (uint8_t i=0;i<n;i++)
 26e:	1f 5f       	subi	r17, 0xFF	; 255
 270:	10 17       	cp	r17, r16
 272:	d8 f3       	brcs	.-10     	; 0x26a <LCDcursorRight+0xa>
	{
		LCDsendCommand(0x14);
	}
}
 274:	1f 91       	pop	r17
 276:	0f 91       	pop	r16
 278:	08 95       	ret

0000027a <main>:
#include <lcd_lib.h>//Подключаем библиотеку для LCD
#include <lcd_lib.c>//Подключаем библиотеку для LCD
char moya_stroka[16]="Privet  Student!";//определяем массив символов и присваиваем каждому символу moy_stroka[n] значение
int a,b=0;
int main(void)//главная функция программы
{ DDRB=0xff;//порт В как выход
 27a:	ef 92       	push	r14
 27c:	ff 92       	push	r15
 27e:	0f 93       	push	r16
 280:	1f 93       	push	r17
 282:	cf 93       	push	r28
 284:	df 93       	push	r29
 286:	8f ef       	ldi	r24, 0xFF	; 255
 288:	87 bb       	out	0x17, r24	; 23
  PORTB=0x00;// обнуляем значение регистра порта В
 28a:	18 ba       	out	0x18, r1	; 24
  LCDinit();//инициализируем LCD
 28c:	24 df       	rcall	.-440    	; 0xd6 <LCDinit>
  LCDclr();//очищаем экран LCD
 28e:	53 df       	rcall	.-346    	; 0x136 <LCDclr>
 290:	c0 e6       	ldi	r28, 0x60	; 96
 292:	d0 e0       	ldi	r29, 0x00	; 0
 294:	68 ec       	ldi	r22, 0xC8	; 200
 296:	e6 2e       	mov	r14, r22
 298:	f1 2c       	mov	r15, r1
    
	{ LCDGotoXY(a, b);
	  LCDsendChar(moya_stroka[i]);
	  _delay_ms(1000);
	  a++;
	  if (a>7){a=0;b=1;}
 29a:	01 e0       	ldi	r16, 0x01	; 1
 29c:	10 e0       	ldi	r17, 0x00	; 0
  LCDinit();//инициализируем LCD
  LCDclr();//очищаем экран LCD
 
  for(int i=0;i<=15 ;i++)
    
	{ LCDGotoXY(a, b);
 29e:	80 91 72 00 	lds	r24, 0x0072
 2a2:	60 91 70 00 	lds	r22, 0x0070
 2a6:	61 df       	rcall	.-318    	; 0x16a <LCDGotoXY>
	  LCDsendChar(moya_stroka[i]);
 2a8:	88 81       	ld	r24, Y
 2aa:	d7 de       	rcall	.-594    	; 0x5a <LCDsendChar>
 2ac:	80 e1       	ldi	r24, 0x10	; 16
 2ae:	97 e2       	ldi	r25, 0x27	; 39
 2b0:	f7 01       	movw	r30, r14
 2b2:	31 97       	sbiw	r30, 0x01	; 1
 2b4:	f1 f7       	brne	.-4      	; 0x2b2 <main+0x38>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 2b6:	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)
 2b8:	d9 f7       	brne	.-10     	; 0x2b0 <main+0x36>
	  _delay_ms(1000);
	  a++;
 2ba:	80 91 72 00 	lds	r24, 0x0072
 2be:	90 91 73 00 	lds	r25, 0x0073
 2c2:	01 96       	adiw	r24, 0x01	; 1
 2c4:	90 93 73 00 	sts	0x0073, r25
 2c8:	80 93 72 00 	sts	0x0072, r24
	  if (a>7){a=0;b=1;}
 2cc:	08 97       	sbiw	r24, 0x08	; 8
 2ce:	44 f0       	brlt	.+16     	; 0x2e0 <main+0x66>
 2d0:	10 92 73 00 	sts	0x0073, r1
 2d4:	10 92 72 00 	sts	0x0072, r1
 2d8:	10 93 71 00 	sts	0x0071, r17
 2dc:	00 93 70 00 	sts	0x0070, r16
 2e0:	21 96       	adiw	r28, 0x01	; 1
{ DDRB=0xff;//порт В как выход
  PORTB=0x00;// обнуляем значение регистра порта В
  LCDinit();//инициализируем LCD
  LCDclr();//очищаем экран LCD
 
  for(int i=0;i<=15 ;i++)
 2e2:	80 e0       	ldi	r24, 0x00	; 0
 2e4:	c0 37       	cpi	r28, 0x70	; 112
 2e6:	d8 07       	cpc	r29, r24
 2e8:	d1 f6       	brne	.-76     	; 0x29e <main+0x24>
	  LCDsendChar(moya_stroka[i]);
	  _delay_ms(1000);
	  a++;
	  if (a>7){a=0;b=1;}
	}
}
 2ea:	80 e0       	ldi	r24, 0x00	; 0
 2ec:	90 e0       	ldi	r25, 0x00	; 0
 2ee:	df 91       	pop	r29
 2f0:	cf 91       	pop	r28
 2f2:	1f 91       	pop	r17
 2f4:	0f 91       	pop	r16
 2f6:	ff 90       	pop	r15
 2f8:	ef 90       	pop	r14
 2fa:	08 95       	ret

000002fc <_exit>:
 2fc:	f8 94       	cli

000002fe <__stop_program>:
 2fe:	ff cf       	rjmp	.-2      	; 0x2fe <__stop_program>
