LCD4.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000040a 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .stab 0000111c 00000000 00000000 00000460 2**2 CONTENTS, READONLY, DEBUGGING 2 .stabstr 000007cb 00000000 00000000 0000157c 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end> 4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 00000054 <__ctors_end>: 54: 11 24 eor r1, r1 56: 1f be out 0x3f, r1 ; 63 58: cf e5 ldi r28, 0x5F ; 95 5a: d4 e0 ldi r29, 0x04 ; 4 5c: de bf out 0x3e, r29 ; 62 5e: cd bf out 0x3d, r28 ; 61 00000060 <__do_copy_data>: 60: 10 e0 ldi r17, 0x00 ; 0 62: a0 e6 ldi r26, 0x60 ; 96 64: b0 e0 ldi r27, 0x00 ; 0 66: ea e0 ldi r30, 0x0A ; 10 68: f4 e0 ldi r31, 0x04 ; 4 6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start> 0000006c <.do_copy_data_loop>: 6c: 05 90 lpm r0, Z+ 6e: 0d 92 st X+, r0 00000070 <.do_copy_data_start>: 70: a0 36 cpi r26, 0x60 ; 96 72: b1 07 cpc r27, r17 74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop> 00000076 <__do_clear_bss>: 76: 10 e0 ldi r17, 0x00 ; 0 78: a0 e6 ldi r26, 0x60 ; 96 7a: b0 e0 ldi r27, 0x00 ; 0 7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start> 0000007e <.do_clear_bss_loop>: 7e: 1d 92 st X+, r1 00000080 <.do_clear_bss_start>: 80: a0 36 cpi r26, 0x60 ; 96 82: b1 07 cpc r27, r17 84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop> 86: 0e 94 cc 01 call 0x398 ; 0x398
8a: 0c 94 03 02 jmp 0x406 ; 0x406 <_exit> 0000008e <__bad_interrupt>: 8e: 0c 94 00 00 jmp 0 ; 0x0 <__heap_end> 00000092 : /* end Prototypes */ #define lcd_mask_Write_Adress(position) ((position & 0x7F)| lcd_SET_DD_RAM) // 4-Bit to be added, no indent // enum whichtype{instruct, data}; void lcd_init(void){ 92: df 93 push r29 94: cf 93 push r28 96: cd b7 in r28, 0x3d ; 61 98: de b7 in r29, 0x3e ; 62 /* setting up ports first */ lcd_dataport_DDR|=lcd_dataport_mask; 9a: a7 e3 ldi r26, 0x37 ; 55 9c: b0 e0 ldi r27, 0x00 ; 0 9e: e7 e3 ldi r30, 0x37 ; 55 a0: f0 e0 ldi r31, 0x00 ; 0 a2: 80 81 ld r24, Z a4: 80 6f ori r24, 0xF0 ; 240 a6: 8c 93 st X, r24 set_lcd_RS_DDR; a8: a1 e3 ldi r26, 0x31 ; 49 aa: b0 e0 ldi r27, 0x00 ; 0 ac: e1 e3 ldi r30, 0x31 ; 49 ae: f0 e0 ldi r31, 0x00 ; 0 b0: 80 81 ld r24, Z b2: 88 60 ori r24, 0x08 ; 8 b4: 8c 93 st X, r24 set_lcd_E_DDR; b6: a1 e3 ldi r26, 0x31 ; 49 b8: b0 e0 ldi r27, 0x00 ; 0 ba: e1 e3 ldi r30, 0x31 ; 49 bc: f0 e0 ldi r31, 0x00 ; 0 be: 80 81 ld r24, Z c0: 84 60 ori r24, 0x04 ; 4 c2: 8c 93 st X, r24 /* end setting up ports */ //lcd_dataport=0xff; set_lcd_RS; c4: a2 e3 ldi r26, 0x32 ; 50 c6: b0 e0 ldi r27, 0x00 ; 0 c8: e2 e3 ldi r30, 0x32 ; 50 ca: f0 e0 ldi r31, 0x00 ; 0 cc: 80 81 ld r24, Z ce: 88 60 ori r24, 0x08 ; 8 d0: 8c 93 st X, r24 set_lcd_E; d2: a2 e3 ldi r26, 0x32 ; 50 d4: b0 e0 ldi r27, 0x00 ; 0 d6: e2 e3 ldi r30, 0x32 ; 50 d8: f0 e0 ldi r31, 0x00 ; 0 da: 80 81 ld r24, Z dc: 84 60 ori r24, 0x04 ; 4 de: 8c 93 st X, r24 lcd_5ms(); e0: 0e 94 ab 00 call 0x156 ; 0x156 lcd_5ms(); e4: 0e 94 ab 00 call 0x156 ; 0x156 lcd_5ms(); e8: 0e 94 ab 00 call 0x156 ; 0x156 lcd_instruct(lcd_SET_FUNCTION_8BIT); lcd_instruct(lcd_SET_FUNCTION_8BIT); lcd_instruct(lcd_SET_FUNCTION_8BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); #endif #ifdef lcd_bus4 lcd_instruct(lcd_SET_FUNCTION_8BIT); ec: 80 e3 ldi r24, 0x30 ; 48 ee: 0e 94 d3 00 call 0x1a6 ; 0x1a6 lcd_5ms(); f2: 0e 94 ab 00 call 0x156 ; 0x156 lcd_instruct(lcd_SET_FUNCTION_8BIT); f6: 80 e3 ldi r24, 0x30 ; 48 f8: 0e 94 d3 00 call 0x1a6 ; 0x1a6 wait_100us(); fc: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_SET_FUNCTION_8BIT); 100: 80 e3 ldi r24, 0x30 ; 48 102: 0e 94 d3 00 call 0x1a6 ; 0x1a6 wait_100us(); 106: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_SET_FUNCTION_4BIT); 10a: 80 e2 ldi r24, 0x20 ; 32 10c: 0e 94 d3 00 call 0x1a6 ; 0x1a6 wait_100us(); 110: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); 114: 88 e2 ldi r24, 0x28 ; 40 116: 0e 94 d3 00 call 0x1a6 ; 0x1a6 #endif wait_100us(); 11a: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_DISPLAY_OO_OFF); 11e: 88 e0 ldi r24, 0x08 ; 8 120: 0e 94 d3 00 call 0x1a6 ; 0x1a6 wait_100us(); 124: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_DISPLAY_CLEAR); 128: 81 e0 ldi r24, 0x01 ; 1 12a: 0e 94 d3 00 call 0x1a6 ; 0x1a6 lcd_5ms(); 12e: 0e 94 ab 00 call 0x156 ; 0x156 lcd_instruct(lcd_DISPLAY_OO_ON|lcd_DISPLAY_OO_CURSOR_OFF); 132: 8c e0 ldi r24, 0x0C ; 12 134: 0e 94 d3 00 call 0x1a6 ; 0x1a6 wait_100us(); 138: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_ENTRY_MODE_SET|lcd_ENTRY_MODE_SET_INCREASE | lcd_ENTRY_MS_DISPLAY_NOT_S); 13c: 86 e0 ldi r24, 0x06 ; 6 13e: 0e 94 d3 00 call 0x1a6 ; 0x1a6 wait_100us(); 142: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_RETURN_HOME); 146: 82 e0 ldi r24, 0x02 ; 2 148: 0e 94 d3 00 call 0x1a6 ; 0x1a6 lcd_5ms(); 14c: 0e 94 ab 00 call 0x156 ; 0x156 } 150: cf 91 pop r28 152: df 91 pop r29 154: 08 95 ret 00000156 : void lcd_5ms(void){ 156: df 93 push r29 158: cf 93 push r28 15a: 0f 92 push r0 15c: cd b7 in r28, 0x3d ; 61 15e: de b7 in r29, 0x3e ; 62 for(uint8_t i=50;i>0;i--){ 160: 82 e3 ldi r24, 0x32 ; 50 162: 89 83 std Y+1, r24 ; 0x01 164: 05 c0 rjmp .+10 ; 0x170 wait_100us(); 166: 0e 94 a9 01 call 0x352 ; 0x352 lcd_instruct(lcd_RETURN_HOME); lcd_5ms(); } void lcd_5ms(void){ for(uint8_t i=50;i>0;i--){ 16a: 89 81 ldd r24, Y+1 ; 0x01 16c: 81 50 subi r24, 0x01 ; 1 16e: 89 83 std Y+1, r24 ; 0x01 170: 89 81 ldd r24, Y+1 ; 0x01 172: 88 23 and r24, r24 174: c1 f7 brne .-16 ; 0x166 wait_100us(); } } 176: 0f 90 pop r0 178: cf 91 pop r28 17a: df 91 pop r29 17c: 08 95 ret 0000017e : void lcd_1s(void){ 17e: df 93 push r29 180: cf 93 push r28 182: 0f 92 push r0 184: cd b7 in r28, 0x3d ; 61 186: de b7 in r29, 0x3e ; 62 for(uint8_t i=200;i>0;i--){ 188: 88 ec ldi r24, 0xC8 ; 200 18a: 89 83 std Y+1, r24 ; 0x01 18c: 05 c0 rjmp .+10 ; 0x198 lcd_5ms(); 18e: 0e 94 ab 00 call 0x156 ; 0x156 wait_100us(); } } void lcd_1s(void){ for(uint8_t i=200;i>0;i--){ 192: 89 81 ldd r24, Y+1 ; 0x01 194: 81 50 subi r24, 0x01 ; 1 196: 89 83 std Y+1, r24 ; 0x01 198: 89 81 ldd r24, Y+1 ; 0x01 19a: 88 23 and r24, r24 19c: c1 f7 brne .-16 ; 0x18e lcd_5ms(); } } 19e: 0f 90 pop r0 1a0: cf 91 pop r28 1a2: df 91 pop r29 1a4: 08 95 ret 000001a6 : void lcd_instruct(uint8_t zeichen){ 1a6: df 93 push r29 1a8: cf 93 push r28 1aa: 0f 92 push r0 1ac: cd b7 in r28, 0x3d ; 61 1ae: de b7 in r29, 0x3e ; 62 1b0: 89 83 std Y+1, r24 ; 0x01 lcd_write(instruct,zeichen,0); 1b2: 84 e0 ldi r24, 0x04 ; 4 1b4: 69 81 ldd r22, Y+1 ; 0x01 1b6: 40 e0 ldi r20, 0x00 ; 0 1b8: 0e 94 e2 00 call 0x1c4 ; 0x1c4 } 1bc: 0f 90 pop r0 1be: cf 91 pop r28 1c0: df 91 pop r29 1c2: 08 95 ret 000001c4 : void lcd_write(uint8_t lcd_whichwrite, uint8_t zeichen, uint8_t position){ 1c4: df 93 push r29 1c6: cf 93 push r28 1c8: 00 d0 rcall .+0 ; 0x1ca 1ca: 00 d0 rcall .+0 ; 0x1cc 1cc: 0f 92 push r0 1ce: cd b7 in r28, 0x3d ; 61 1d0: de b7 in r29, 0x3e ; 62 1d2: 89 83 std Y+1, r24 ; 0x01 1d4: 6a 83 std Y+2, r22 ; 0x02 1d6: 4b 83 std Y+3, r20 ; 0x03 switch (lcd_whichwrite){ 1d8: 89 81 ldd r24, Y+1 ; 0x01 1da: 28 2f mov r18, r24 1dc: 30 e0 ldi r19, 0x00 ; 0 1de: 3d 83 std Y+5, r19 ; 0x05 1e0: 2c 83 std Y+4, r18 ; 0x04 1e2: 8c 81 ldd r24, Y+4 ; 0x04 1e4: 9d 81 ldd r25, Y+5 ; 0x05 1e6: 84 30 cpi r24, 0x04 ; 4 1e8: 91 05 cpc r25, r1 1ea: 7c f4 brge .+30 ; 0x20a 1ec: 2c 81 ldd r18, Y+4 ; 0x04 1ee: 3d 81 ldd r19, Y+5 ; 0x05 1f0: 22 30 cpi r18, 0x02 ; 2 1f2: 31 05 cpc r19, r1 1f4: bc f4 brge .+46 ; 0x224 1f6: 8c 81 ldd r24, Y+4 ; 0x04 1f8: 9d 81 ldd r25, Y+5 ; 0x05 1fa: 00 97 sbiw r24, 0x00 ; 0 1fc: 01 f1 breq .+64 ; 0x23e 1fe: 2c 81 ldd r18, Y+4 ; 0x04 200: 3d 81 ldd r19, Y+5 ; 0x05 202: 21 30 cpi r18, 0x01 ; 1 204: 31 05 cpc r19, r1 206: b9 f0 breq .+46 ; 0x236 208: 21 c0 rjmp .+66 ; 0x24c 20a: 8c 81 ldd r24, Y+4 ; 0x04 20c: 9d 81 ldd r25, Y+5 ; 0x05 20e: 84 30 cpi r24, 0x04 ; 4 210: 91 05 cpc r25, r1 212: e1 f4 brne .+56 ; 0x24c case instruct : unset_lcd_RS; 214: a2 e3 ldi r26, 0x32 ; 50 216: b0 e0 ldi r27, 0x00 ; 0 218: e2 e3 ldi r30, 0x32 ; 50 21a: f0 e0 ldi r31, 0x00 ; 0 21c: 80 81 ld r24, Z 21e: 87 7f andi r24, 0xF7 ; 247 220: 8c 93 st X, r24 222: 14 c0 rjmp .+40 ; 0x24c break; case line2: case line1: position = position & 0x3f; 224: 8b 81 ldd r24, Y+3 ; 0x03 226: 8f 73 andi r24, 0x3F ; 63 228: 8b 83 std Y+3, r24 ; 0x03 if (lcd_whichwrite == line2){ position=position + 0x40; }; 22a: 89 81 ldd r24, Y+1 ; 0x01 22c: 83 30 cpi r24, 0x03 ; 3 22e: 19 f4 brne .+6 ; 0x236 230: 8b 81 ldd r24, Y+3 ; 0x03 232: 80 5c subi r24, 0xC0 ; 192 234: 8b 83 std Y+3, r24 ; 0x03 case therepos: lcd_instruct(lcd_mask_Write_Adress(position)); 236: 8b 81 ldd r24, Y+3 ; 0x03 238: 80 68 ori r24, 0x80 ; 128 23a: 0e 94 d3 00 call 0x1a6 ; 0x1a6 case here: set_lcd_RS; 23e: a2 e3 ldi r26, 0x32 ; 50 240: b0 e0 ldi r27, 0x00 ; 0 242: e2 e3 ldi r30, 0x32 ; 50 244: f0 e0 ldi r31, 0x00 ; 0 246: 80 81 ld r24, Z 248: 88 60 ori r24, 0x08 ; 8 24a: 8c 93 st X, r24 lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); #endif #ifdef lcd_bus4 zeichen = zeichen << 4; 24c: 8a 81 ldd r24, Y+2 ; 0x02 24e: 82 95 swap r24 250: 80 7f andi r24, 0xF0 ; 240 252: 8a 83 std Y+2, r24 ; 0x02 unset_lcd_E; 254: a2 e3 ldi r26, 0x32 ; 50 256: b0 e0 ldi r27, 0x00 ; 0 258: e2 e3 ldi r30, 0x32 ; 50 25a: f0 e0 ldi r31, 0x00 ; 0 25c: 80 81 ld r24, Z 25e: 8b 7f andi r24, 0xFB ; 251 260: 8c 93 st X, r24 wait_100us(); 262: 0e 94 a9 01 call 0x352 ; 0x352 set_lcd_E; 266: a2 e3 ldi r26, 0x32 ; 50 268: b0 e0 ldi r27, 0x00 ; 0 26a: e2 e3 ldi r30, 0x32 ; 50 26c: f0 e0 ldi r31, 0x00 ; 0 26e: 80 81 ld r24, Z 270: 84 60 ori r24, 0x04 ; 4 272: 8c 93 st X, r24 set_lcd_E; 274: a2 e3 ldi r26, 0x32 ; 50 276: b0 e0 ldi r27, 0x00 ; 0 278: e2 e3 ldi r30, 0x32 ; 50 27a: f0 e0 ldi r31, 0x00 ; 0 27c: 80 81 ld r24, Z 27e: 84 60 ori r24, 0x04 ; 4 280: 8c 93 st X, r24 lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); 282: a8 e3 ldi r26, 0x38 ; 56 284: b0 e0 ldi r27, 0x00 ; 0 286: e8 e3 ldi r30, 0x38 ; 56 288: f0 e0 ldi r31, 0x00 ; 0 28a: 80 81 ld r24, Z 28c: 98 2f mov r25, r24 28e: 9f 70 andi r25, 0x0F ; 15 290: 8a 81 ldd r24, Y+2 ; 0x02 292: 80 7f andi r24, 0xF0 ; 240 294: 89 2b or r24, r25 296: 8c 93 st X, r24 lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); 298: a8 e3 ldi r26, 0x38 ; 56 29a: b0 e0 ldi r27, 0x00 ; 0 29c: e8 e3 ldi r30, 0x38 ; 56 29e: f0 e0 ldi r31, 0x00 ; 0 2a0: 80 81 ld r24, Z 2a2: 98 2f mov r25, r24 2a4: 9f 70 andi r25, 0x0F ; 15 2a6: 8a 81 ldd r24, Y+2 ; 0x02 2a8: 80 7f andi r24, 0xF0 ; 240 2aa: 89 2b or r24, r25 2ac: 8c 93 st X, r24 #endif unset_lcd_E; 2ae: a2 e3 ldi r26, 0x32 ; 50 2b0: b0 e0 ldi r27, 0x00 ; 0 2b2: e2 e3 ldi r30, 0x32 ; 50 2b4: f0 e0 ldi r31, 0x00 ; 0 2b6: 80 81 ld r24, Z 2b8: 8b 7f andi r24, 0xFB ; 251 2ba: 8c 93 st X, r24 wait_100us(); 2bc: 0e 94 a9 01 call 0x352 ; 0x352 } 2c0: 0f 90 pop r0 2c2: 0f 90 pop r0 2c4: 0f 90 pop r0 2c6: 0f 90 pop r0 2c8: 0f 90 pop r0 2ca: cf 91 pop r28 2cc: df 91 pop r29 2ce: 08 95 ret 000002d0 : void lcd_blank_line(uint8_t lcd_whichwrite) { 2d0: df 93 push r29 2d2: cf 93 push r28 2d4: 00 d0 rcall .+0 ; 0x2d6 2d6: 00 d0 rcall .+0 ; 0x2d8 2d8: 0f 92 push r0 2da: cd b7 in r28, 0x3d ; 61 2dc: de b7 in r29, 0x3e ; 62 2de: 8b 83 std Y+3, r24 ; 0x03 uint8_t count; uint8_t countin; switch (lcd_whichwrite){ 2e0: 8b 81 ldd r24, Y+3 ; 0x03 2e2: 28 2f mov r18, r24 2e4: 30 e0 ldi r19, 0x00 ; 0 2e6: 3d 83 std Y+5, r19 ; 0x05 2e8: 2c 83 std Y+4, r18 ; 0x04 2ea: 8c 81 ldd r24, Y+4 ; 0x04 2ec: 9d 81 ldd r25, Y+5 ; 0x05 2ee: 83 30 cpi r24, 0x03 ; 3 2f0: 91 05 cpc r25, r1 2f2: 71 f0 breq .+28 ; 0x310 2f4: 2c 81 ldd r18, Y+4 ; 0x04 2f6: 3d 81 ldd r19, Y+5 ; 0x05 2f8: 24 30 cpi r18, 0x04 ; 4 2fa: 31 05 cpc r19, r1 2fc: 31 f0 breq .+12 ; 0x30a 2fe: 8c 81 ldd r24, Y+4 ; 0x04 300: 9d 81 ldd r25, Y+5 ; 0x05 302: 82 30 cpi r24, 0x02 ; 2 304: 91 05 cpc r25, r1 306: 39 f0 breq .+14 ; 0x316 308: 07 c0 rjmp .+14 ; 0x318 case instruct: lcd_blank_line(line1); 30a: 82 e0 ldi r24, 0x02 ; 2 30c: 0e 94 68 01 call 0x2d0 ; 0x2d0 case line2: count=0x40; 310: 80 e4 ldi r24, 0x40 ; 64 312: 8a 83 std Y+2, r24 ; 0x02 314: 01 c0 rjmp .+2 ; 0x318 break; case line1: count=0; 316: 1a 82 std Y+2, r1 ; 0x02 break; } for (countin=count; countin < count+15; countin++){ 318: 8a 81 ldd r24, Y+2 ; 0x02 31a: 89 83 std Y+1, r24 ; 0x01 31c: 08 c0 rjmp .+16 ; 0x32e lcd_write(therepos, 32, countin); 31e: 81 e0 ldi r24, 0x01 ; 1 320: 60 e2 ldi r22, 0x20 ; 32 322: 49 81 ldd r20, Y+1 ; 0x01 324: 0e 94 e2 00 call 0x1c4 ; 0x1c4 case line1: count=0; break; } for (countin=count; countin < count+15; countin++){ 328: 89 81 ldd r24, Y+1 ; 0x01 32a: 8f 5f subi r24, 0xFF ; 255 32c: 89 83 std Y+1, r24 ; 0x01 32e: 89 81 ldd r24, Y+1 ; 0x01 330: 28 2f mov r18, r24 332: 30 e0 ldi r19, 0x00 ; 0 334: 8a 81 ldd r24, Y+2 ; 0x02 336: 88 2f mov r24, r24 338: 90 e0 ldi r25, 0x00 ; 0 33a: 0f 96 adiw r24, 0x0f ; 15 33c: 28 17 cp r18, r24 33e: 39 07 cpc r19, r25 340: 74 f3 brlt .-36 ; 0x31e lcd_write(therepos, 32, countin); } } 342: 0f 90 pop r0 344: 0f 90 pop r0 346: 0f 90 pop r0 348: 0f 90 pop r0 34a: 0f 90 pop r0 34c: cf 91 pop r28 34e: df 91 pop r29 350: 08 95 ret 00000352 : #include #include #include "lcd4.h" void wait_100us(void){ 352: df 93 push r29 354: cf 93 push r28 356: 00 d0 rcall .+0 ; 0x358 358: 00 d0 rcall .+0 ; 0x35a 35a: 0f 92 push r0 35c: cd b7 in r28, 0x3d ; 61 35e: de b7 in r29, 0x3e ; 62 for (volatile uint8_t i=68;i--;i>0){ 360: 84 e4 ldi r24, 0x44 ; 68 362: 89 83 std Y+1, r24 ; 0x01 364: 02 c0 rjmp .+4 ; 0x36a i; 366: 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){ 368: 89 81 ldd r24, Y+1 ; 0x01 36a: 89 81 ldd r24, Y+1 ; 0x01 36c: 8a 83 std Y+2, r24 ; 0x02 36e: 8a 81 ldd r24, Y+2 ; 0x02 370: 8d 83 std Y+5, r24 ; 0x05 372: 8d 81 ldd r24, Y+5 ; 0x05 374: 88 23 and r24, r24 376: 11 f0 breq .+4 ; 0x37c 378: 81 e0 ldi r24, 0x01 ; 1 37a: 8d 83 std Y+5, r24 ; 0x05 37c: 9d 81 ldd r25, Y+5 ; 0x05 37e: 8a 81 ldd r24, Y+2 ; 0x02 380: 81 50 subi r24, 0x01 ; 1 382: 89 83 std Y+1, r24 ; 0x01 384: 99 23 and r25, r25 386: 79 f7 brne .-34 ; 0x366 i; } } 388: 0f 90 pop r0 38a: 0f 90 pop r0 38c: 0f 90 pop r0 38e: 0f 90 pop r0 390: 0f 90 pop r0 392: cf 91 pop r28 394: df 91 pop r29 396: 08 95 ret 00000398
: #include #include #include "lcd4.h" int main(void){ 398: df 93 push r29 39a: cf 93 push r28 39c: cd b7 in r28, 0x3d ; 61 39e: de b7 in r29, 0x3e ; 62 lcd_1s(); 3a0: 0e 94 bf 00 call 0x17e ; 0x17e lcd_init(); 3a4: 0e 94 49 00 call 0x92 ; 0x92 lcd_write(therepos,0x41,0x08); 3a8: 81 e0 ldi r24, 0x01 ; 1 3aa: 61 e4 ldi r22, 0x41 ; 65 3ac: 48 e0 ldi r20, 0x08 ; 8 3ae: 0e 94 e2 00 call 0x1c4 ; 0x1c4 lcd_write(here,0x42,0); 3b2: 80 e0 ldi r24, 0x00 ; 0 3b4: 62 e4 ldi r22, 0x42 ; 66 3b6: 40 e0 ldi r20, 0x00 ; 0 3b8: 0e 94 e2 00 call 0x1c4 ; 0x1c4 lcd_write(here,0x43,0); 3bc: 80 e0 ldi r24, 0x00 ; 0 3be: 63 e4 ldi r22, 0x43 ; 67 3c0: 40 e0 ldi r20, 0x00 ; 0 3c2: 0e 94 e2 00 call 0x1c4 ; 0x1c4 lcd_write(here,0x44,0); 3c6: 80 e0 ldi r24, 0x00 ; 0 3c8: 64 e4 ldi r22, 0x44 ; 68 3ca: 40 e0 ldi r20, 0x00 ; 0 3cc: 0e 94 e2 00 call 0x1c4 ; 0x1c4 lcd_1s(); 3d0: 0e 94 bf 00 call 0x17e ; 0x17e lcd_1s(); 3d4: 0e 94 bf 00 call 0x17e ; 0x17e DDRB = 0x0f; 3d8: e7 e3 ldi r30, 0x37 ; 55 3da: f0 e0 ldi r31, 0x00 ; 0 3dc: 8f e0 ldi r24, 0x0F ; 15 3de: 80 83 st Z, r24 while(1==1){ PORTB = 0x0f; 3e0: e8 e3 ldi r30, 0x38 ; 56 3e2: f0 e0 ldi r31, 0x00 ; 0 3e4: 8f e0 ldi r24, 0x0F ; 15 3e6: 80 83 st Z, r24 lcd_1s(); 3e8: 0e 94 bf 00 call 0x17e ; 0x17e PORTB = 0x05; 3ec: e8 e3 ldi r30, 0x38 ; 56 3ee: f0 e0 ldi r31, 0x00 ; 0 3f0: 85 e0 ldi r24, 0x05 ; 5 3f2: 80 83 st Z, r24 lcd_1s(); 3f4: 0e 94 bf 00 call 0x17e ; 0x17e PORTB = 0x0A; 3f8: e8 e3 ldi r30, 0x38 ; 56 3fa: f0 e0 ldi r31, 0x00 ; 0 3fc: 8a e0 ldi r24, 0x0A ; 10 3fe: 80 83 st Z, r24 lcd_1s(); 400: 0e 94 bf 00 call 0x17e ; 0x17e 404: ed cf rjmp .-38 ; 0x3e0 00000406 <_exit>: 406: f8 94 cli 00000408 <__stop_program>: 408: ff cf rjmp .-2 ; 0x408 <__stop_program>