LCD4.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 000003f2 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .stab 00001158 00000000 00000000 00000448 2**2 CONTENTS, READONLY, DEBUGGING 2 .stabstr 000007ee 00000000 00000000 000015a0 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: e2 ef ldi r30, 0xF2 ; 242 36: f3 e0 ldi r31, 0x03 ; 3 38: 02 c0 rjmp .+4 ; 0x3e <__SP_H__> 0000003a <.do_copy_data_loop>: 3a: 05 90 lpm r0, Z+ 3c: 0d 92 st X+, r0 0000003e <.do_copy_data_start>: 3e: a0 36 cpi r26, 0x60 ; 96 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 e6 ldi r26, 0x60 ; 96 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: a0 36 cpi r26, 0x60 ; 96 50: b1 07 cpc r27, r17 52: e1 f7 brne .-8 ; 0x4c <.do_clear_bss_loop> 54: 98 d1 rcall .+816 ; 0x386
56: cb c1 rjmp .+918 ; 0x3ee <_exit> 00000058 <__bad_interrupt>: 58: d3 cf rjmp .-90 ; 0x0 <__heap_end> 0000005a : #define lcd_mask_Write_Adress(position) ((position & 0x7F)| lcd_SET_DD_RAM) void lcd_init(void){ 5a: df 93 push r29 5c: cf 93 push r28 5e: cd b7 in r28, 0x3d ; 61 60: de b7 in r29, 0x3e ; 62 /* setting up ports first */ lcd_dataport_DDR=0xff; 62: e7 e3 ldi r30, 0x37 ; 55 64: f0 e0 ldi r31, 0x00 ; 0 66: 8f ef ldi r24, 0xFF ; 255 68: 80 83 st Z, r24 set_lcd_RS_DDR; 6a: a1 e3 ldi r26, 0x31 ; 49 6c: b0 e0 ldi r27, 0x00 ; 0 6e: e1 e3 ldi r30, 0x31 ; 49 70: f0 e0 ldi r31, 0x00 ; 0 72: 80 81 ld r24, Z 74: 88 60 ori r24, 0x08 ; 8 76: 8c 93 st X, r24 set_lcd_E_DDR; 78: a1 e3 ldi r26, 0x31 ; 49 7a: b0 e0 ldi r27, 0x00 ; 0 7c: e1 e3 ldi r30, 0x31 ; 49 7e: f0 e0 ldi r31, 0x00 ; 0 80: 80 81 ld r24, Z 82: 84 60 ori r24, 0x04 ; 4 84: 8c 93 st X, r24 /* end setting up ports */ lcd_dataport=0xff; 86: e8 e3 ldi r30, 0x38 ; 56 88: f0 e0 ldi r31, 0x00 ; 0 8a: 8f ef ldi r24, 0xFF ; 255 8c: 80 83 st Z, r24 set_lcd_RS; 8e: a2 e3 ldi r26, 0x32 ; 50 90: b0 e0 ldi r27, 0x00 ; 0 92: e2 e3 ldi r30, 0x32 ; 50 94: f0 e0 ldi r31, 0x00 ; 0 96: 80 81 ld r24, Z 98: 88 60 ori r24, 0x08 ; 8 9a: 8c 93 st X, r24 set_lcd_E; 9c: a2 e3 ldi r26, 0x32 ; 50 9e: b0 e0 ldi r27, 0x00 ; 0 a0: e2 e3 ldi r30, 0x32 ; 50 a2: f0 e0 ldi r31, 0x00 ; 0 a4: 80 81 ld r24, Z a6: 84 60 ori r24, 0x04 ; 4 a8: 8c 93 st X, r24 lcd_5ms(); aa: 1d d0 rcall .+58 ; 0xe6 lcd_5ms(); ac: 1c d0 rcall .+56 ; 0xe6 lcd_5ms(); ae: 1b d0 rcall .+54 ; 0xe6 lcd_instruct(lcd_SET_FUNCTION_8BIT); b0: 80 e3 ldi r24, 0x30 ; 48 b2: 3f d0 rcall .+126 ; 0x132 lcd_5ms(); b4: 18 d0 rcall .+48 ; 0xe6 lcd_instruct(lcd_SET_FUNCTION_8BIT); b6: 80 e3 ldi r24, 0x30 ; 48 b8: 3c d0 rcall .+120 ; 0x132 wait_100us(); ba: 42 d1 rcall .+644 ; 0x340 lcd_instruct(lcd_SET_FUNCTION_8BIT); bc: 80 e3 ldi r24, 0x30 ; 48 be: 39 d0 rcall .+114 ; 0x132 if (lcd_dataport_mask==0xf0){ lcd_instruct(lcd_SET_FUNCTION_4BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); c0: 88 e2 ldi r24, 0x28 ; 40 c2: 37 d0 rcall .+110 ; 0x132 }else{ lcd_instruct(lcd_SET_FUNCTION_8BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); } lcd_dataport_DDR&=lcd_dataport_mask; c4: a7 e3 ldi r26, 0x37 ; 55 c6: b0 e0 ldi r27, 0x00 ; 0 c8: e7 e3 ldi r30, 0x37 ; 55 ca: f0 e0 ldi r31, 0x00 ; 0 cc: 80 81 ld r24, Z ce: 80 7f andi r24, 0xF0 ; 240 d0: 8c 93 st X, r24 lcd_instruct(lcd_DISPLAY_OO_ON|lcd_DISPLAY_OO_CURSOR_OFF); d2: 8c e0 ldi r24, 0x0C ; 12 d4: 2e d0 rcall .+92 ; 0x132 lcd_instruct(lcd_ENTRY_MODE_SET|lcd_ENTRY_MODE_SET_INCREASE | lcd_ENTRY_MS_DISPLAY_NOT_S); d6: 86 e0 ldi r24, 0x06 ; 6 d8: 2c d0 rcall .+88 ; 0x132 lcd_instruct(lcd_RETURN_HOME); da: 82 e0 ldi r24, 0x02 ; 2 dc: 2a d0 rcall .+84 ; 0x132 lcd_5ms(); de: 03 d0 rcall .+6 ; 0xe6 } e0: cf 91 pop r28 e2: df 91 pop r29 e4: 08 95 ret 000000e6 : void lcd_5ms(void){ e6: df 93 push r29 e8: cf 93 push r28 ea: 0f 92 push r0 ec: cd b7 in r28, 0x3d ; 61 ee: de b7 in r29, 0x3e ; 62 for(uint8_t i=50;i>0;i--){ f0: 82 e3 ldi r24, 0x32 ; 50 f2: 89 83 std Y+1, r24 ; 0x01 f4: 04 c0 rjmp .+8 ; 0xfe wait_100us(); f6: 24 d1 rcall .+584 ; 0x340 lcd_instruct(lcd_RETURN_HOME); lcd_5ms(); } void lcd_5ms(void){ for(uint8_t i=50;i>0;i--){ f8: 89 81 ldd r24, Y+1 ; 0x01 fa: 81 50 subi r24, 0x01 ; 1 fc: 89 83 std Y+1, r24 ; 0x01 fe: 89 81 ldd r24, Y+1 ; 0x01 100: 88 23 and r24, r24 102: c9 f7 brne .-14 ; 0xf6 wait_100us(); } } 104: 0f 90 pop r0 106: cf 91 pop r28 108: df 91 pop r29 10a: 08 95 ret 0000010c : void lcd_1s(void){ 10c: df 93 push r29 10e: cf 93 push r28 110: 0f 92 push r0 112: cd b7 in r28, 0x3d ; 61 114: de b7 in r29, 0x3e ; 62 for(uint8_t i=200;i>0;i--){ 116: 88 ec ldi r24, 0xC8 ; 200 118: 89 83 std Y+1, r24 ; 0x01 11a: 04 c0 rjmp .+8 ; 0x124 lcd_5ms(); 11c: e4 df rcall .-56 ; 0xe6 wait_100us(); } } void lcd_1s(void){ for(uint8_t i=200;i>0;i--){ 11e: 89 81 ldd r24, Y+1 ; 0x01 120: 81 50 subi r24, 0x01 ; 1 122: 89 83 std Y+1, r24 ; 0x01 124: 89 81 ldd r24, Y+1 ; 0x01 126: 88 23 and r24, r24 128: c9 f7 brne .-14 ; 0x11c lcd_5ms(); } } 12a: 0f 90 pop r0 12c: cf 91 pop r28 12e: df 91 pop r29 130: 08 95 ret 00000132 : void lcd_instruct(uint8_t zeichen){ 132: df 93 push r29 134: cf 93 push r28 136: 0f 92 push r0 138: cd b7 in r28, 0x3d ; 61 13a: de b7 in r29, 0x3e ; 62 13c: 89 83 std Y+1, r24 ; 0x01 lcd_write(instruct,zeichen,0); 13e: 84 e0 ldi r24, 0x04 ; 4 140: 69 81 ldd r22, Y+1 ; 0x01 142: 40 e0 ldi r20, 0x00 ; 0 144: 04 d0 rcall .+8 ; 0x14e } 146: 0f 90 pop r0 148: cf 91 pop r28 14a: df 91 pop r29 14c: 08 95 ret 0000014e : void lcd_write(uint8_t lcd_whichwrite, uint8_t zeichen, uint8_t position){ 14e: df 93 push r29 150: cf 93 push r28 152: 00 d0 rcall .+0 ; 0x154 154: 00 d0 rcall .+0 ; 0x156 156: 0f 92 push r0 158: cd b7 in r28, 0x3d ; 61 15a: de b7 in r29, 0x3e ; 62 15c: 89 83 std Y+1, r24 ; 0x01 15e: 6a 83 std Y+2, r22 ; 0x02 160: 4b 83 std Y+3, r20 ; 0x03 switch (lcd_whichwrite){ 162: 89 81 ldd r24, Y+1 ; 0x01 164: 28 2f mov r18, r24 166: 30 e0 ldi r19, 0x00 ; 0 168: 3d 83 std Y+5, r19 ; 0x05 16a: 2c 83 std Y+4, r18 ; 0x04 16c: 8c 81 ldd r24, Y+4 ; 0x04 16e: 9d 81 ldd r25, Y+5 ; 0x05 170: 84 30 cpi r24, 0x04 ; 4 172: 91 05 cpc r25, r1 174: 7c f4 brge .+30 ; 0x194 176: 2c 81 ldd r18, Y+4 ; 0x04 178: 3d 81 ldd r19, Y+5 ; 0x05 17a: 22 30 cpi r18, 0x02 ; 2 17c: 31 05 cpc r19, r1 17e: bc f4 brge .+46 ; 0x1ae 180: 8c 81 ldd r24, Y+4 ; 0x04 182: 9d 81 ldd r25, Y+5 ; 0x05 184: 00 97 sbiw r24, 0x00 ; 0 186: f9 f0 breq .+62 ; 0x1c6 188: 2c 81 ldd r18, Y+4 ; 0x04 18a: 3d 81 ldd r19, Y+5 ; 0x05 18c: 21 30 cpi r18, 0x01 ; 1 18e: 31 05 cpc r19, r1 190: b9 f0 breq .+46 ; 0x1c0 192: 20 c0 rjmp .+64 ; 0x1d4 194: 8c 81 ldd r24, Y+4 ; 0x04 196: 9d 81 ldd r25, Y+5 ; 0x05 198: 84 30 cpi r24, 0x04 ; 4 19a: 91 05 cpc r25, r1 19c: d9 f4 brne .+54 ; 0x1d4 case instruct : unset_lcd_RS; 19e: a2 e3 ldi r26, 0x32 ; 50 1a0: b0 e0 ldi r27, 0x00 ; 0 1a2: e2 e3 ldi r30, 0x32 ; 50 1a4: f0 e0 ldi r31, 0x00 ; 0 1a6: 80 81 ld r24, Z 1a8: 87 7f andi r24, 0xF7 ; 247 1aa: 8c 93 st X, r24 1ac: 13 c0 rjmp .+38 ; 0x1d4 break; case line2: case line1: position = position & 0x3f; 1ae: 8b 81 ldd r24, Y+3 ; 0x03 1b0: 8f 73 andi r24, 0x3F ; 63 1b2: 8b 83 std Y+3, r24 ; 0x03 if (lcd_whichwrite == line2){ position=position + 0x40; }; 1b4: 89 81 ldd r24, Y+1 ; 0x01 1b6: 83 30 cpi r24, 0x03 ; 3 1b8: 19 f4 brne .+6 ; 0x1c0 1ba: 8b 81 ldd r24, Y+3 ; 0x03 1bc: 80 5c subi r24, 0xC0 ; 192 1be: 8b 83 std Y+3, r24 ; 0x03 case therepos: lcd_instruct(lcd_mask_Write_Adress(position)); 1c0: 8b 81 ldd r24, Y+3 ; 0x03 1c2: 80 68 ori r24, 0x80 ; 128 1c4: b6 df rcall .-148 ; 0x132 case here: set_lcd_RS; 1c6: a2 e3 ldi r26, 0x32 ; 50 1c8: b0 e0 ldi r27, 0x00 ; 0 1ca: e2 e3 ldi r30, 0x32 ; 50 1cc: f0 e0 ldi r31, 0x00 ; 0 1ce: 80 81 ld r24, Z 1d0: 88 60 ori r24, 0x08 ; 8 1d2: 8c 93 st X, r24 break; } set_lcd_E; 1d4: a2 e3 ldi r26, 0x32 ; 50 1d6: b0 e0 ldi r27, 0x00 ; 0 1d8: e2 e3 ldi r30, 0x32 ; 50 1da: f0 e0 ldi r31, 0x00 ; 0 1dc: 80 81 ld r24, Z 1de: 84 60 ori r24, 0x04 ; 4 1e0: 8c 93 st X, r24 set_lcd_E; 1e2: a2 e3 ldi r26, 0x32 ; 50 1e4: b0 e0 ldi r27, 0x00 ; 0 1e6: e2 e3 ldi r30, 0x32 ; 50 1e8: f0 e0 ldi r31, 0x00 ; 0 1ea: 80 81 ld r24, Z 1ec: 84 60 ori r24, 0x04 ; 4 1ee: 8c 93 st X, r24 lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; 1f0: a8 e3 ldi r26, 0x38 ; 56 1f2: b0 e0 ldi r27, 0x00 ; 0 1f4: e8 e3 ldi r30, 0x38 ; 56 1f6: f0 e0 ldi r31, 0x00 ; 0 1f8: 80 81 ld r24, Z 1fa: 98 2f mov r25, r24 1fc: 9f 70 andi r25, 0x0F ; 15 1fe: 8a 81 ldd r24, Y+2 ; 0x02 200: 80 7f andi r24, 0xF0 ; 240 202: 89 2b or r24, r25 204: 8c 93 st X, r24 lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; 206: a8 e3 ldi r26, 0x38 ; 56 208: b0 e0 ldi r27, 0x00 ; 0 20a: e8 e3 ldi r30, 0x38 ; 56 20c: f0 e0 ldi r31, 0x00 ; 0 20e: 80 81 ld r24, Z 210: 98 2f mov r25, r24 212: 9f 70 andi r25, 0x0F ; 15 214: 8a 81 ldd r24, Y+2 ; 0x02 216: 80 7f andi r24, 0xF0 ; 240 218: 89 2b or r24, r25 21a: 8c 93 st X, r24 unset_lcd_E; 21c: a2 e3 ldi r26, 0x32 ; 50 21e: b0 e0 ldi r27, 0x00 ; 0 220: e2 e3 ldi r30, 0x32 ; 50 222: f0 e0 ldi r31, 0x00 ; 0 224: 80 81 ld r24, Z 226: 8b 7f andi r24, 0xFB ; 251 228: 8c 93 st X, r24 unset_lcd_E; 22a: a2 e3 ldi r26, 0x32 ; 50 22c: b0 e0 ldi r27, 0x00 ; 0 22e: e2 e3 ldi r30, 0x32 ; 50 230: f0 e0 ldi r31, 0x00 ; 0 232: 80 81 ld r24, Z 234: 8b 7f andi r24, 0xFB ; 251 236: 8c 93 st X, r24 wait_100us(); 238: 83 d0 rcall .+262 ; 0x340 if (lcd_dataport_DDR==0xf0){ 23a: e7 e3 ldi r30, 0x37 ; 55 23c: f0 e0 ldi r31, 0x00 ; 0 23e: 80 81 ld r24, Z 240: 80 3f cpi r24, 0xF0 ; 240 242: b9 f5 brne .+110 ; 0x2b2 zeichen=zeichen << 4; 244: 8a 81 ldd r24, Y+2 ; 0x02 246: 82 95 swap r24 248: 80 7f andi r24, 0xF0 ; 240 24a: 8a 83 std Y+2, r24 ; 0x02 set_lcd_E; 24c: a2 e3 ldi r26, 0x32 ; 50 24e: b0 e0 ldi r27, 0x00 ; 0 250: e2 e3 ldi r30, 0x32 ; 50 252: f0 e0 ldi r31, 0x00 ; 0 254: 80 81 ld r24, Z 256: 84 60 ori r24, 0x04 ; 4 258: 8c 93 st X, r24 set_lcd_E; 25a: a2 e3 ldi r26, 0x32 ; 50 25c: b0 e0 ldi r27, 0x00 ; 0 25e: e2 e3 ldi r30, 0x32 ; 50 260: f0 e0 ldi r31, 0x00 ; 0 262: 80 81 ld r24, Z 264: 84 60 ori r24, 0x04 ; 4 266: 8c 93 st X, r24 lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; 268: a8 e3 ldi r26, 0x38 ; 56 26a: b0 e0 ldi r27, 0x00 ; 0 26c: e8 e3 ldi r30, 0x38 ; 56 26e: f0 e0 ldi r31, 0x00 ; 0 270: 80 81 ld r24, Z 272: 98 2f mov r25, r24 274: 9f 70 andi r25, 0x0F ; 15 276: 8a 81 ldd r24, Y+2 ; 0x02 278: 80 7f andi r24, 0xF0 ; 240 27a: 89 2b or r24, r25 27c: 8c 93 st X, r24 lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; 27e: a8 e3 ldi r26, 0x38 ; 56 280: b0 e0 ldi r27, 0x00 ; 0 282: e8 e3 ldi r30, 0x38 ; 56 284: f0 e0 ldi r31, 0x00 ; 0 286: 80 81 ld r24, Z 288: 98 2f mov r25, r24 28a: 9f 70 andi r25, 0x0F ; 15 28c: 8a 81 ldd r24, Y+2 ; 0x02 28e: 80 7f andi r24, 0xF0 ; 240 290: 89 2b or r24, r25 292: 8c 93 st X, r24 unset_lcd_E; 294: a2 e3 ldi r26, 0x32 ; 50 296: b0 e0 ldi r27, 0x00 ; 0 298: e2 e3 ldi r30, 0x32 ; 50 29a: f0 e0 ldi r31, 0x00 ; 0 29c: 80 81 ld r24, Z 29e: 8b 7f andi r24, 0xFB ; 251 2a0: 8c 93 st X, r24 unset_lcd_E; 2a2: a2 e3 ldi r26, 0x32 ; 50 2a4: b0 e0 ldi r27, 0x00 ; 0 2a6: e2 e3 ldi r30, 0x32 ; 50 2a8: f0 e0 ldi r31, 0x00 ; 0 2aa: 80 81 ld r24, Z 2ac: 8b 7f andi r24, 0xFB ; 251 2ae: 8c 93 st X, r24 wait_100us(); 2b0: 47 d0 rcall .+142 ; 0x340 } } 2b2: 0f 90 pop r0 2b4: 0f 90 pop r0 2b6: 0f 90 pop r0 2b8: 0f 90 pop r0 2ba: 0f 90 pop r0 2bc: cf 91 pop r28 2be: df 91 pop r29 2c0: 08 95 ret 000002c2 : void lcd_blank_line(uint8_t lcd_whichwrite) { 2c2: df 93 push r29 2c4: cf 93 push r28 2c6: 00 d0 rcall .+0 ; 0x2c8 2c8: 00 d0 rcall .+0 ; 0x2ca 2ca: 0f 92 push r0 2cc: cd b7 in r28, 0x3d ; 61 2ce: de b7 in r29, 0x3e ; 62 2d0: 8b 83 std Y+3, r24 ; 0x03 uint8_t count; uint8_t countin; switch (lcd_whichwrite){ 2d2: 8b 81 ldd r24, Y+3 ; 0x03 2d4: 28 2f mov r18, r24 2d6: 30 e0 ldi r19, 0x00 ; 0 2d8: 3d 83 std Y+5, r19 ; 0x05 2da: 2c 83 std Y+4, r18 ; 0x04 2dc: 8c 81 ldd r24, Y+4 ; 0x04 2de: 9d 81 ldd r25, Y+5 ; 0x05 2e0: 83 30 cpi r24, 0x03 ; 3 2e2: 91 05 cpc r25, r1 2e4: 69 f0 breq .+26 ; 0x300 2e6: 2c 81 ldd r18, Y+4 ; 0x04 2e8: 3d 81 ldd r19, Y+5 ; 0x05 2ea: 24 30 cpi r18, 0x04 ; 4 2ec: 31 05 cpc r19, r1 2ee: 31 f0 breq .+12 ; 0x2fc 2f0: 8c 81 ldd r24, Y+4 ; 0x04 2f2: 9d 81 ldd r25, Y+5 ; 0x05 2f4: 82 30 cpi r24, 0x02 ; 2 2f6: 91 05 cpc r25, r1 2f8: 31 f0 breq .+12 ; 0x306 2fa: 06 c0 rjmp .+12 ; 0x308 case instruct: lcd_blank_line(line1); 2fc: 82 e0 ldi r24, 0x02 ; 2 2fe: e1 df rcall .-62 ; 0x2c2 case line2: count=0x40; 300: 80 e4 ldi r24, 0x40 ; 64 302: 8a 83 std Y+2, r24 ; 0x02 304: 01 c0 rjmp .+2 ; 0x308 break; case line1: count=0; 306: 1a 82 std Y+2, r1 ; 0x02 } for (countin=count; countin < count+15; countin++){ 308: 8a 81 ldd r24, Y+2 ; 0x02 30a: 89 83 std Y+1, r24 ; 0x01 30c: 07 c0 rjmp .+14 ; 0x31c lcd_write(therepos, 32, countin); 30e: 81 e0 ldi r24, 0x01 ; 1 310: 60 e2 ldi r22, 0x20 ; 32 312: 49 81 ldd r20, Y+1 ; 0x01 314: 1c df rcall .-456 ; 0x14e break; case line1: count=0; } for (countin=count; countin < count+15; countin++){ 316: 89 81 ldd r24, Y+1 ; 0x01 318: 8f 5f subi r24, 0xFF ; 255 31a: 89 83 std Y+1, r24 ; 0x01 31c: 89 81 ldd r24, Y+1 ; 0x01 31e: 28 2f mov r18, r24 320: 30 e0 ldi r19, 0x00 ; 0 322: 8a 81 ldd r24, Y+2 ; 0x02 324: 88 2f mov r24, r24 326: 90 e0 ldi r25, 0x00 ; 0 328: 0f 96 adiw r24, 0x0f ; 15 32a: 28 17 cp r18, r24 32c: 39 07 cpc r19, r25 32e: 7c f3 brlt .-34 ; 0x30e lcd_write(therepos, 32, countin); } } 330: 0f 90 pop r0 332: 0f 90 pop r0 334: 0f 90 pop r0 336: 0f 90 pop r0 338: 0f 90 pop r0 33a: cf 91 pop r28 33c: df 91 pop r29 33e: 08 95 ret 00000340 : #include #include #include "lcd4.h" void wait_100us(void){ 340: df 93 push r29 342: cf 93 push r28 344: 00 d0 rcall .+0 ; 0x346 346: 00 d0 rcall .+0 ; 0x348 348: 0f 92 push r0 34a: cd b7 in r28, 0x3d ; 61 34c: de b7 in r29, 0x3e ; 62 for (volatile uint8_t i=68;i--;i>0){ 34e: 84 e4 ldi r24, 0x44 ; 68 350: 89 83 std Y+1, r24 ; 0x01 352: 02 c0 rjmp .+4 ; 0x358 i; 354: 89 81 ldd r24, Y+1 ; 0x01 #include #include #include "lcd4.h" void wait_100us(void){ for (volatile uint8_t i=68;i--;i>0){ 356: 89 81 ldd r24, Y+1 ; 0x01 358: 89 81 ldd r24, Y+1 ; 0x01 35a: 8a 83 std Y+2, r24 ; 0x02 35c: 8a 81 ldd r24, Y+2 ; 0x02 35e: 8d 83 std Y+5, r24 ; 0x05 360: 8d 81 ldd r24, Y+5 ; 0x05 362: 88 23 and r24, r24 364: 11 f0 breq .+4 ; 0x36a 366: 81 e0 ldi r24, 0x01 ; 1 368: 8d 83 std Y+5, r24 ; 0x05 36a: 9d 81 ldd r25, Y+5 ; 0x05 36c: 8a 81 ldd r24, Y+2 ; 0x02 36e: 81 50 subi r24, 0x01 ; 1 370: 89 83 std Y+1, r24 ; 0x01 372: 99 23 and r25, r25 374: 79 f7 brne .-34 ; 0x354 i; } } 376: 0f 90 pop r0 378: 0f 90 pop r0 37a: 0f 90 pop r0 37c: 0f 90 pop r0 37e: 0f 90 pop r0 380: cf 91 pop r28 382: df 91 pop r29 384: 08 95 ret 00000386
: #include #include #define lcd_bus8 #include "lcd4.h" int main(void){ 386: df 93 push r29 388: cf 93 push r28 38a: cd b7 in r28, 0x3d ; 61 38c: de b7 in r29, 0x3e ; 62 lcd_1s(); 38e: be de rcall .-644 ; 0x10c lcd_init(); 390: 64 de rcall .-824 ; 0x5a lcd_1s(); 392: bc de rcall .-648 ; 0x10c lcd_1s(); 394: bb de rcall .-650 ; 0x10c lcd_write(therepos,0x41,0x08); 396: 81 e0 ldi r24, 0x01 ; 1 398: 61 e4 ldi r22, 0x41 ; 65 39a: 48 e0 ldi r20, 0x08 ; 8 39c: d8 de rcall .-592 ; 0x14e lcd_1s(); 39e: b6 de rcall .-660 ; 0x10c lcd_1s(); 3a0: b5 de rcall .-662 ; 0x10c lcd_write(here,0x42,0); 3a2: 80 e0 ldi r24, 0x00 ; 0 3a4: 62 e4 ldi r22, 0x42 ; 66 3a6: 40 e0 ldi r20, 0x00 ; 0 3a8: d2 de rcall .-604 ; 0x14e lcd_1s(); 3aa: b0 de rcall .-672 ; 0x10c lcd_1s(); 3ac: af de rcall .-674 ; 0x10c lcd_write(here,0x43,0); 3ae: 80 e0 ldi r24, 0x00 ; 0 3b0: 63 e4 ldi r22, 0x43 ; 67 3b2: 40 e0 ldi r20, 0x00 ; 0 3b4: cc de rcall .-616 ; 0x14e lcd_1s(); 3b6: aa de rcall .-684 ; 0x10c lcd_1s(); 3b8: a9 de rcall .-686 ; 0x10c lcd_write(here,0x44,0); 3ba: 80 e0 ldi r24, 0x00 ; 0 3bc: 64 e4 ldi r22, 0x44 ; 68 3be: 40 e0 ldi r20, 0x00 ; 0 3c0: c6 de rcall .-628 ; 0x14e lcd_1s(); 3c2: a4 de rcall .-696 ; 0x10c lcd_1s(); 3c4: a3 de rcall .-698 ; 0x10c DDRB = 0x0f; 3c6: e7 e3 ldi r30, 0x37 ; 55 3c8: f0 e0 ldi r31, 0x00 ; 0 3ca: 8f e0 ldi r24, 0x0F ; 15 3cc: 80 83 st Z, r24 while(1==1){ PORTB = 0x0f; 3ce: e8 e3 ldi r30, 0x38 ; 56 3d0: f0 e0 ldi r31, 0x00 ; 0 3d2: 8f e0 ldi r24, 0x0F ; 15 3d4: 80 83 st Z, r24 lcd_1s(); 3d6: 9a de rcall .-716 ; 0x10c PORTB = 0x05; 3d8: e8 e3 ldi r30, 0x38 ; 56 3da: f0 e0 ldi r31, 0x00 ; 0 3dc: 85 e0 ldi r24, 0x05 ; 5 3de: 80 83 st Z, r24 lcd_1s(); 3e0: 95 de rcall .-726 ; 0x10c PORTB = 0x0A; 3e2: e8 e3 ldi r30, 0x38 ; 56 3e4: f0 e0 ldi r31, 0x00 ; 0 3e6: 8a e0 ldi r24, 0x0A ; 10 3e8: 80 83 st Z, r24 lcd_1s(); 3ea: 90 de rcall .-736 ; 0x10c 3ec: f0 cf rjmp .-32 ; 0x3ce 000003ee <_exit>: 3ee: f8 94 cli 000003f0 <__stop_program>: 3f0: ff cf rjmp .-2 ; 0x3f0 <__stop_program>