LCD_zkouska.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000232  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000000a  00800060  00000232  000002a6  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .debug_aranges 00000020  00000000  00000000  000002b0  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_pubnames 000000d2  00000000  00000000  000002d0  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_info   00000577  00000000  00000000  000003a2  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_abbrev 000001da  00000000  00000000  00000919  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_line   00000413  00000000  00000000  00000af3  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_frame  000000c0  00000000  00000000  00000f08  2**2
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_str    00000192  00000000  00000000  00000fc8  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_loc    0000017f  00000000  00000000  0000115a  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_ranges 000000a8  00000000  00000000  000012d9  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:   14 c0           rjmp    .+40            ; 0x2a <__ctors_end>
   2:   26 c0           rjmp    .+76            ; 0x50 <__bad_interrupt>
   4:   25 c0           rjmp    .+74            ; 0x50 <__bad_interrupt>
   6:   24 c0           rjmp    .+72            ; 0x50 <__bad_interrupt>
   8:   23 c0           rjmp    .+70            ; 0x50 <__bad_interrupt>
   a:   22 c0           rjmp    .+68            ; 0x50 <__bad_interrupt>
   c:   21 c0           rjmp    .+66            ; 0x50 <__bad_interrupt>
   e:   20 c0           rjmp    .+64            ; 0x50 <__bad_interrupt>
  10:   1f c0           rjmp    .+62            ; 0x50 <__bad_interrupt>
  12:   1e c0           rjmp    .+60            ; 0x50 <__bad_interrupt>
  14:   1d c0           rjmp    .+58            ; 0x50 <__bad_interrupt>
  16:   1c c0           rjmp    .+56            ; 0x50 <__bad_interrupt>
  18:   1b c0           rjmp    .+54            ; 0x50 <__bad_interrupt>
  1a:   1a c0           rjmp    .+52            ; 0x50 <__bad_interrupt>
  1c:   19 c0           rjmp    .+50            ; 0x50 <__bad_interrupt>
  1e:   18 c0           rjmp    .+48            ; 0x50 <__bad_interrupt>
  20:   17 c0           rjmp    .+46            ; 0x50 <__bad_interrupt>
  22:   16 c0           rjmp    .+44            ; 0x50 <__bad_interrupt>
  24:   15 c0           rjmp    .+42            ; 0x50 <__bad_interrupt>

00000026 <LCD_INIT_STRING>:
  26:   28 0c 01 06                                         (...

0000002a <__ctors_end>:
  2a:   11 24           eor     r1, r1
  2c:   1f be           out     0x3f, r1        ; 63
  2e:   cf e5           ldi     r28, 0x5F       ; 95
  30:   d4 e0           ldi     r29, 0x04       ; 4
  32:   de bf           out     0x3e, r29       ; 62
  34:   cd bf           out     0x3d, r28       ; 61

00000036 <__do_copy_data>:
  36:   10 e0           ldi     r17, 0x00       ; 0
  38:   a0 e6           ldi     r26, 0x60       ; 96
  3a:   b0 e0           ldi     r27, 0x00       ; 0
  3c:   e2 e3           ldi     r30, 0x32       ; 50
  3e:   f2 e0           ldi     r31, 0x02       ; 2
  40:   02 c0           rjmp    .+4             ; 0x46 <.do_copy_data_start>

00000042 <.do_copy_data_loop>:
  42:   05 90           lpm     r0, Z+
  44:   0d 92           st      X+, r0

00000046 <.do_copy_data_start>:
  46:   aa 36           cpi     r26, 0x6A       ; 106
  48:   b1 07           cpc     r27, r17
  4a:   d9 f7           brne    .-10            ; 0x42 <.do_copy_data_loop>
  4c:   ba d0           rcall   .+372           ; 0x1c2 <main>
  4e:   ef c0           rjmp    .+478           ; 0x22e <_exit>

00000050 <__bad_interrupt>:
  50:   d7 cf           rjmp    .-82            ; 0x0 <__vectors>

00000052 <LCD_init_IO_PIN>:
   0x06                          // inkrement pozice kurzoru (posun kurzoru doprava)
};

void LCD_init_IO_PIN(void)
{
        DDR_D0 |= _BV(PIN_D0);
  52:   a3 9a           sbi     0x14, 3 ; 20
        DDR_D1 |= _BV(PIN_D1);
  54:   bc 9a           sbi     0x17, 4 ; 23
        DDR_D2 |= _BV(PIN_D2);
  56:   bd 9a           sbi     0x17, 5 ; 23
        DDR_D3 |= _BV(PIN_D3);
  58:   bb 9a           sbi     0x17, 3 ; 23
        DDR_E  |= _BV(PIN_E);
  5a:   b9 9a           sbi     0x17, 1 ; 23
        DDR_RS |= _BV(PIN_RS);
  5c:   ba 9a           sbi     0x17, 2 ; 23
}
  5e:   08 95           ret

00000060 <LCD_send_nibble>:
        _delay_us(40);
}

void LCD_send_nibble(uint8_t data)
{
        L_D0;L_D1;L_D2;L_D3;
  60:   ab 98           cbi     0x15, 3 ; 21
  62:   c4 98           cbi     0x18, 4 ; 24
  64:   c5 98           cbi     0x18, 5 ; 24
  66:   c3 98           cbi     0x18, 3 ; 24
        if (data & 0x1) H_D0;
  68:   80 fd           sbrc    r24, 0
  6a:   ab 9a           sbi     0x15, 3 ; 21
        if (data & 0x2) H_D1;
  6c:   81 fd           sbrc    r24, 1
  6e:   c4 9a           sbi     0x18, 4 ; 24
        if (data & 0x4) H_D2;
  70:   82 fd           sbrc    r24, 2
  72:   c5 9a           sbi     0x18, 5 ; 24
        if (data & 0x8) H_D3;
  74:   83 fd           sbrc    r24, 3
  76:   c3 9a           sbi     0x18, 3 ; 24
        H_E;
  78:   c1 9a           sbi     0x18, 1 ; 24
    can be achieved.
*/
void
_delay_loop_1(uint8_t __count)
{
        __asm__ volatile (
  7a:   81 e0           ldi     r24, 0x01       ; 1
  7c:   8a 95           dec     r24
  7e:   f1 f7           brne    .-4             ; 0x7c <LCD_send_nibble+0x1c>
        _delay_us(1);
        L_E;
  80:   c1 98           cbi     0x18, 1 ; 24
}
  82:   08 95           ret

00000084 <LCD_send>:
        H_RS;
        LCD_send(data);
}

void LCD_send(uint8_t data)
{
  84:   1f 93           push    r17
  86:   18 2f           mov     r17, r24
        LCD_send_nibble(data >> 4);
  88:   82 95           swap    r24
  8a:   8f 70           andi    r24, 0x0F       ; 15
  8c:   e9 df           rcall   .-46            ; 0x60 <LCD_send_nibble>
        LCD_send_nibble(data);
  8e:   81 2f           mov     r24, r17
  90:   e7 df           rcall   .-50            ; 0x60 <LCD_send_nibble>
  92:   8d e0           ldi     r24, 0x0D       ; 13
  94:   8a 95           dec     r24
  96:   f1 f7           brne    .-4             ; 0x94 <LCD_send+0x10>
        _delay_us(40);
}
  98:   1f 91           pop     r17
  9a:   08 95           ret

0000009c <LCD_send_data>:
        H_RS;   
}

void LCD_send_data(uint8_t data)
{
        H_RS;
  9c:   c2 9a           sbi     0x18, 2 ; 24
        LCD_send(data);
  9e:   f2 df           rcall   .-28            ; 0x84 <LCD_send>
}
  a0:   08 95           ret

000000a2 <LCD_putc>:
   }
}

void LCD_putc(uint8_t data)
{
        LCD_send_data(data);
  a2:   fc df           rcall   .-8             ; 0x9c <LCD_send_data>
}
  a4:   08 95           ret

000000a6 <LCD_send_command>:

void LCD_send_command(uint8_t data)
{
        L_RS;
  a6:   c2 98           cbi     0x18, 2 ; 24
        LCD_send(data);
  a8:   ed df           rcall   .-38            ; 0x84 <LCD_send>
        H_RS;   
  aa:   c2 9a           sbi     0x18, 2 ; 24
}
  ac:   08 95           ret

000000ae <LCD_init>:
        DDR_E  |= _BV(PIN_E);
        DDR_RS |= _BV(PIN_RS);
}

void LCD_init(void)
{
  ae:   0f 93           push    r16
  b0:   1f 93           push    r17
  b2:   cf 93           push    r28
  b4:   df 93           push    r29
        uint8_t a;

        LCD_init_IO_PIN();
  b6:   cd df           rcall   .-102           ; 0x52 <LCD_init_IO_PIN>
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
        __asm__ volatile (
  b8:   88 e8           ldi     r24, 0x88       ; 136
  ba:   93 e1           ldi     r25, 0x13       ; 19
  bc:   01 97           sbiw    r24, 0x01       ; 1
  be:   f1 f7           brne    .-4             ; 0xbc <LCD_init+0xe>
        _delay_ms(20);
        L_E;
  c0:   c1 98           cbi     0x18, 1 ; 24
        L_RS;
  c2:   c2 98           cbi     0x18, 2 ; 24
  c4:   04 ef           ldi     r16, 0xF4       ; 244
  c6:   11 e0           ldi     r17, 0x01       ; 1
  c8:   c8 01           movw    r24, r16
  ca:   01 97           sbiw    r24, 0x01       ; 1
  cc:   f1 f7           brne    .-4             ; 0xca <LCD_init+0x1c>
        for (a=0;a<3;a++)
        {
                _delay_ms(2);
                LCD_send_nibble(0x3);
  ce:   83 e0           ldi     r24, 0x03       ; 3
  d0:   c7 df           rcall   .-114           ; 0x60 <LCD_send_nibble>
  d2:   c8 01           movw    r24, r16
  d4:   01 97           sbiw    r24, 0x01       ; 1
  d6:   f1 f7           brne    .-4             ; 0xd4 <LCD_init+0x26>
  d8:   83 e0           ldi     r24, 0x03       ; 3
  da:   c2 df           rcall   .-124           ; 0x60 <LCD_send_nibble>
  dc:   c8 01           movw    r24, r16
  de:   01 97           sbiw    r24, 0x01       ; 1
  e0:   f1 f7           brne    .-4             ; 0xde <LCD_init+0x30>
  e2:   83 e0           ldi     r24, 0x03       ; 3
  e4:   bd df           rcall   .-134           ; 0x60 <LCD_send_nibble>
    can be achieved.
*/
void
_delay_loop_1(uint8_t __count)
{
        __asm__ volatile (
  e6:   1d e0           ldi     r17, 0x0D       ; 13
  e8:   81 2f           mov     r24, r17
  ea:   8a 95           dec     r24
  ec:   f1 f7           brne    .-4             ; 0xea <LCD_init+0x3c>
                
        }
        _delay_us(40);
        LCD_send_nibble(0x2);
  ee:   82 e0           ldi     r24, 0x02       ; 2
  f0:   b7 df           rcall   .-146           ; 0x60 <LCD_send_nibble>
  f2:   1a 95           dec     r17
  f4:   f1 f7           brne    .-4             ; 0xf2 <LCD_init+0x44>
  f6:   06 e2           ldi     r16, 0x26       ; 38
  f8:   10 e0           ldi     r17, 0x00       ; 0
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
        __asm__ volatile (
  fa:   c4 ef           ldi     r28, 0xF4       ; 244
  fc:   d1 e0           ldi     r29, 0x01       ; 1
        _delay_us(40);
        for (a=0;a<3;a++)                   
   {
      LCD_send_command(pgm_read_byte(&(LCD_INIT_STRING[a])));
  fe:   f8 01           movw    r30, r16
 100:   84 91           lpm     r24, Z+
 102:   d1 df           rcall   .-94            ; 0xa6 <LCD_send_command>
 104:   ce 01           movw    r24, r28
 106:   01 97           sbiw    r24, 0x01       ; 1
 108:   f1 f7           brne    .-4             ; 0x106 <LCD_init+0x58>
 10a:   0f 5f           subi    r16, 0xFF       ; 255
 10c:   1f 4f           sbci    r17, 0xFF       ; 255
                
        }
        _delay_us(40);
        LCD_send_nibble(0x2);
        _delay_us(40);
        for (a=0;a<3;a++)                   
 10e:   f0 e0           ldi     r31, 0x00       ; 0
 110:   09 32           cpi     r16, 0x29       ; 41
 112:   1f 07           cpc     r17, r31
 114:   a1 f7           brne    .-24            ; 0xfe <LCD_init+0x50>
   {
      LCD_send_command(pgm_read_byte(&(LCD_INIT_STRING[a])));
      _delay_ms(2);
   }
}
 116:   df 91           pop     r29
 118:   cf 91           pop     r28
 11a:   1f 91           pop     r17
 11c:   0f 91           pop     r16
 11e:   08 95           ret

00000120 <LCD_clear>:
}


void LCD_clear(void)
{
        LCD_send_command(1);
 120:   81 e0           ldi     r24, 0x01       ; 1
 122:   c1 df           rcall   .-126           ; 0xa6 <LCD_send_command>
 124:   84 ef           ldi     r24, 0xF4       ; 244
 126:   91 e0           ldi     r25, 0x01       ; 1
 128:   01 97           sbiw    r24, 0x01       ; 1
 12a:   f1 f7           brne    .-4             ; 0x128 <LCD_clear+0x8>
        _delay_ms(2);
}
 12c:   08 95           ret

0000012e <LCD_gotoxy>:

void LCD_gotoxy( uint8_t x, uint8_t y)
{
   uint8_t Adr;

   Adr=x-1;
 12e:   81 50           subi    r24, 0x01       ; 1
   if(y==2)
 130:   62 30           cpi     r22, 0x02       ; 2
 132:   09 f4           brne    .+2             ; 0x136 <LCD_gotoxy+0x8>
     Adr+=LCD_LINE_2;
 134:   80 5c           subi    r24, 0xC0       ; 192

   LCD_send_command(0x80|Adr);
 136:   80 68           ori     r24, 0x80       ; 128
 138:   b6 df           rcall   .-148           ; 0xa6 <LCD_send_command>
}
 13a:   08 95           ret

0000013c <ProcesDispl>:

}


void ProcesDispl(char *data) //zajišuje tisk øetìzce na lcd
{
 13c:   ef 92           push    r14
 13e:   ff 92           push    r15
 140:   1f 93           push    r17
 142:   cf 93           push    r28
 144:   df 93           push    r29
 146:   7c 01           movw    r14, r24
 148:   c0 e0           ldi     r28, 0x00       ; 0
 14a:   d0 e0           ldi     r29, 0x00       ; 0
        uint8_t a,b;

        for (a=0;a<MAXDISPLBUFFER;a++)
        {
                switch (*(data+a))
 14c:   f7 01           movw    r30, r14
 14e:   ec 0f           add     r30, r28
 150:   fd 1f           adc     r31, r29
 152:   80 81           ld      r24, Z
 154:   8a 30           cpi     r24, 0x0A       ; 10
 156:   61 f0           breq    .+24            ; 0x170 <ProcesDispl+0x34>
 158:   8b 30           cpi     r24, 0x0B       ; 11
 15a:   28 f4           brcc    .+10            ; 0x166 <ProcesDispl+0x2a>
 15c:   88 23           and     r24, r24
 15e:   49 f1           breq    .+82            ; 0x1b2 <ProcesDispl+0x76>
 160:   87 30           cpi     r24, 0x07       ; 7
 162:   11 f5           brne    .+68            ; 0x1a8 <ProcesDispl+0x6c>
 164:   0b c0           rjmp    .+22            ; 0x17c <ProcesDispl+0x40>
 166:   8c 30           cpi     r24, 0x0C       ; 12
 168:   61 f0           breq    .+24            ; 0x182 <ProcesDispl+0x46>
 16a:   8d 30           cpi     r24, 0x0D       ; 13
 16c:   e9 f4           brne    .+58            ; 0x1a8 <ProcesDispl+0x6c>
 16e:   02 c0           rjmp    .+4             ; 0x174 <ProcesDispl+0x38>
                {
                case 0: *data = 0;return;
                case '\n':      LCD_gotoxy(1,2);break;  //posun na druhej øádek
 170:   81 e0           ldi     r24, 0x01       ; 1
 172:   05 c0           rjmp    .+10            ; 0x17e <ProcesDispl+0x42>
        case '\r':      LCD_gotoxy(1,1);break;
 174:   81 e0           ldi     r24, 0x01       ; 1
 176:   61 e0           ldi     r22, 0x01       ; 1
 178:   da df           rcall   .-76            ; 0x12e <LCD_gotoxy>
 17a:   17 c0           rjmp    .+46            ; 0x1aa <ProcesDispl+0x6e>
                case '\a':      LCD_gotoxy(6,2);break;  //posun na 2.øádek 6.políèko
 17c:   86 e0           ldi     r24, 0x06       ; 6
 17e:   62 e0           ldi     r22, 0x02       ; 2
 180:   fb cf           rjmp    .-10            ; 0x178 <ProcesDispl+0x3c>
                case '\f':      LCD_gotoxy(1,1);
 182:   81 e0           ldi     r24, 0x01       ; 1
 184:   61 e0           ldi     r22, 0x01       ; 1
 186:   d3 df           rcall   .-90            ; 0x12e <LCD_gotoxy>
 188:   10 e0           ldi     r17, 0x00       ; 0
   }
}

void LCD_putc(uint8_t data)
{
        LCD_send_data(data);
 18a:   80 e2           ldi     r24, 0x20       ; 32
 18c:   87 df           rcall   .-242           ; 0x9c <LCD_send_data>
                                        for (b=0;b<8;b++) LCD_putc(0x20);
 18e:   1f 5f           subi    r17, 0xFF       ; 255
 190:   18 30           cpi     r17, 0x08       ; 8
 192:   d9 f7           brne    .-10            ; 0x18a <ProcesDispl+0x4e>
                                        LCD_gotoxy(1,2);
 194:   81 e0           ldi     r24, 0x01       ; 1
 196:   62 e0           ldi     r22, 0x02       ; 2
 198:   ca df           rcall   .-108           ; 0x12e <LCD_gotoxy>
 19a:   10 e0           ldi     r17, 0x00       ; 0
 19c:   80 e2           ldi     r24, 0x20       ; 32
 19e:   7e df           rcall   .-260           ; 0x9c <LCD_send_data>
                                        for (b=0;b<8;b++) LCD_putc(0x20);
 1a0:   1f 5f           subi    r17, 0xFF       ; 255
 1a2:   18 30           cpi     r17, 0x08       ; 8
 1a4:   d9 f7           brne    .-10            ; 0x19c <ProcesDispl+0x60>
 1a6:   e6 cf           rjmp    .-52            ; 0x174 <ProcesDispl+0x38>
 1a8:   79 df           rcall   .-270           ; 0x9c <LCD_send_data>
 1aa:   21 96           adiw    r28, 0x01       ; 1

void ProcesDispl(char *data) //zajišuje tisk øetìzce na lcd
{
        uint8_t a,b;

        for (a=0;a<MAXDISPLBUFFER;a++)
 1ac:   c4 31           cpi     r28, 0x14       ; 20
 1ae:   d1 05           cpc     r29, r1
 1b0:   69 f6           brne    .-102           ; 0x14c <ProcesDispl+0x10>
                                        LCD_gotoxy(1,1);
                                        break;
                default :       LCD_putc(*(data+a));
        }
        }
        *data = 0;
 1b2:   f7 01           movw    r30, r14
 1b4:   10 82           st      Z, r1
}
 1b6:   df 91           pop     r29
 1b8:   cf 91           pop     r28
 1ba:   1f 91           pop     r17
 1bc:   ff 90           pop     r15
 1be:   ef 90           pop     r14
 1c0:   08 95           ret

000001c2 <main>:


//----------------------------------------------------------------------------- 

int main(void) 
{ 
 1c2:   0f 93           push    r16
 1c4:   1f 93           push    r17
 1c6:   df 93           push    r29
 1c8:   cf 93           push    r28
 1ca:   cd b7           in      r28, 0x3d       ; 61
 1cc:   de b7           in      r29, 0x3e       ; 62
 1ce:   63 97           sbiw    r28, 0x13       ; 19
 1d0:   0f b6           in      r0, 0x3f        ; 63
 1d2:   f8 94           cli
 1d4:   de bf           out     0x3e, r29       ; 62
 1d6:   0f be           out     0x3f, r0        ; 63
 1d8:   cd bf           out     0x3d, r28       ; 61
    
LCD_init();  //Inicializace LCD 
 1da:   69 df           rcall   .-302           ; 0xae <LCD_init>

        



                        sprintf(zasobnik,"LCD je OK");
 1dc:   8e 01           movw    r16, r28
 1de:   0f 5f           subi    r16, 0xFF       ; 255
 1e0:   1f 4f           sbci    r17, 0xFF       ; 255
 1e2:   c8 01           movw    r24, r16
 1e4:   60 e6           ldi     r22, 0x60       ; 96
 1e6:   70 e0           ldi     r23, 0x00       ; 0
 1e8:   1b d0           rcall   .+54            ; 0x220 <strcpy>
                        LCD_gotoxy(0,0);
 1ea:   80 e0           ldi     r24, 0x00       ; 0
 1ec:   60 e0           ldi     r22, 0x00       ; 0
 1ee:   9f df           rcall   .-194           ; 0x12e <LCD_gotoxy>
                        ProcesDispl(zasobnik);
 1f0:   c8 01           movw    r24, r16
 1f2:   a4 df           rcall   .-184           ; 0x13c <ProcesDispl>
                        LCD_gotoxy(0,2);
 1f4:   80 e0           ldi     r24, 0x00       ; 0
 1f6:   62 e0           ldi     r22, 0x02       ; 2
 1f8:   9a df           rcall   .-204           ; 0x12e <LCD_gotoxy>
                        ProcesDispl(zasobnik);
 1fa:   c8 01           movw    r24, r16
 1fc:   9f df           rcall   .-194           ; 0x13c <ProcesDispl>
 1fe:   8a ef           ldi     r24, 0xFA       ; 250
 200:   90 e0           ldi     r25, 0x00       ; 0
 202:   01 97           sbiw    r24, 0x01       ; 1
 204:   f1 f7           brne    .-4             ; 0x202 <main+0x40>

        return 0;



}
 206:   80 e0           ldi     r24, 0x00       ; 0
 208:   90 e0           ldi     r25, 0x00       ; 0
 20a:   63 96           adiw    r28, 0x13       ; 19
 20c:   0f b6           in      r0, 0x3f        ; 63
 20e:   f8 94           cli
 210:   de bf           out     0x3e, r29       ; 62
 212:   0f be           out     0x3f, r0        ; 63
 214:   cd bf           out     0x3d, r28       ; 61
 216:   cf 91           pop     r28
 218:   df 91           pop     r29
 21a:   1f 91           pop     r17
 21c:   0f 91           pop     r16
 21e:   08 95           ret

00000220 <strcpy>:
 220:   fb 01           movw    r30, r22
 222:   dc 01           movw    r26, r24
 224:   01 90           ld      r0, Z+
 226:   0d 92           st      X+, r0
 228:   00 20           and     r0, r0
 22a:   e1 f7           brne    .-8             ; 0x224 <strcpy+0x4>
 22c:   08 95           ret

0000022e <_exit>:
 22e:   f8 94           cli

00000230 <__stop_program>:
 230:   ff cf           rjmp    .-2             ; 0x230 <__stop_program>