727 lines
24 KiB
Text
727 lines
24 KiB
Text
|
|
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 <main>
|
|
56: cb c1 rjmp .+918 ; 0x3ee <_exit>
|
|
|
|
00000058 <__bad_interrupt>:
|
|
58: d3 cf rjmp .-90 ; 0x0 <__heap_end>
|
|
|
|
0000005a <lcd_init>:
|
|
|
|
#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>
|
|
lcd_5ms();
|
|
ac: 1c d0 rcall .+56 ; 0xe6 <lcd_5ms>
|
|
lcd_5ms();
|
|
ae: 1b d0 rcall .+54 ; 0xe6 <lcd_5ms>
|
|
lcd_instruct(lcd_SET_FUNCTION_8BIT);
|
|
b0: 80 e3 ldi r24, 0x30 ; 48
|
|
b2: 3f d0 rcall .+126 ; 0x132 <lcd_instruct>
|
|
lcd_5ms();
|
|
b4: 18 d0 rcall .+48 ; 0xe6 <lcd_5ms>
|
|
lcd_instruct(lcd_SET_FUNCTION_8BIT);
|
|
b6: 80 e3 ldi r24, 0x30 ; 48
|
|
b8: 3c d0 rcall .+120 ; 0x132 <lcd_instruct>
|
|
wait_100us();
|
|
ba: 42 d1 rcall .+644 ; 0x340 <wait_100us>
|
|
lcd_instruct(lcd_SET_FUNCTION_8BIT);
|
|
bc: 80 e3 ldi r24, 0x30 ; 48
|
|
be: 39 d0 rcall .+114 ; 0x132 <lcd_instruct>
|
|
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 <lcd_instruct>
|
|
}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_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_instruct(lcd_RETURN_HOME);
|
|
da: 82 e0 ldi r24, 0x02 ; 2
|
|
dc: 2a d0 rcall .+84 ; 0x132 <lcd_instruct>
|
|
lcd_5ms();
|
|
de: 03 d0 rcall .+6 ; 0xe6 <lcd_5ms>
|
|
}
|
|
e0: cf 91 pop r28
|
|
e2: df 91 pop r29
|
|
e4: 08 95 ret
|
|
|
|
000000e6 <lcd_5ms>:
|
|
|
|
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 <lcd_5ms+0x18>
|
|
wait_100us();
|
|
f6: 24 d1 rcall .+584 ; 0x340 <wait_100us>
|
|
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 <lcd_5ms+0x10>
|
|
wait_100us();
|
|
}
|
|
}
|
|
104: 0f 90 pop r0
|
|
106: cf 91 pop r28
|
|
108: df 91 pop r29
|
|
10a: 08 95 ret
|
|
|
|
0000010c <lcd_1s>:
|
|
|
|
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_1s+0x18>
|
|
lcd_5ms();
|
|
11c: e4 df rcall .-56 ; 0xe6 <lcd_5ms>
|
|
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_1s+0x10>
|
|
lcd_5ms();
|
|
}
|
|
}
|
|
12a: 0f 90 pop r0
|
|
12c: cf 91 pop r28
|
|
12e: df 91 pop r29
|
|
130: 08 95 ret
|
|
|
|
00000132 <lcd_instruct>:
|
|
|
|
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 <lcd_write>
|
|
}
|
|
146: 0f 90 pop r0
|
|
148: cf 91 pop r28
|
|
14a: df 91 pop r29
|
|
14c: 08 95 ret
|
|
|
|
0000014e <lcd_write>:
|
|
|
|
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 <lcd_write+0x6>
|
|
154: 00 d0 rcall .+0 ; 0x156 <lcd_write+0x8>
|
|
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 <lcd_write+0x46>
|
|
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 <lcd_write+0x60>
|
|
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 <lcd_write+0x78>
|
|
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 <lcd_write+0x72>
|
|
192: 20 c0 rjmp .+64 ; 0x1d4 <lcd_write+0x86>
|
|
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 <lcd_write+0x86>
|
|
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 <lcd_write+0x86>
|
|
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 <lcd_write+0x72>
|
|
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 <lcd_instruct>
|
|
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 <wait_100us>
|
|
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 <lcd_write+0x164>
|
|
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 <wait_100us>
|
|
}
|
|
}
|
|
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 <lcd_blank_line>:
|
|
|
|
void lcd_blank_line(uint8_t lcd_whichwrite)
|
|
{
|
|
2c2: df 93 push r29
|
|
2c4: cf 93 push r28
|
|
2c6: 00 d0 rcall .+0 ; 0x2c8 <lcd_blank_line+0x6>
|
|
2c8: 00 d0 rcall .+0 ; 0x2ca <lcd_blank_line+0x8>
|
|
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 <lcd_blank_line+0x3e>
|
|
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 <lcd_blank_line+0x3a>
|
|
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 <lcd_blank_line+0x44>
|
|
2fa: 06 c0 rjmp .+12 ; 0x308 <lcd_blank_line+0x46>
|
|
case instruct:
|
|
lcd_blank_line(line1);
|
|
2fc: 82 e0 ldi r24, 0x02 ; 2
|
|
2fe: e1 df rcall .-62 ; 0x2c2 <lcd_blank_line>
|
|
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 <lcd_blank_line+0x46>
|
|
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_blank_line+0x5a>
|
|
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 <lcd_write>
|
|
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_blank_line+0x4c>
|
|
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 <wait_100us>:
|
|
#include <inttypes.h>
|
|
#include <avr/io.h>
|
|
#include "lcd4.h"
|
|
|
|
void wait_100us(void){
|
|
340: df 93 push r29
|
|
342: cf 93 push r28
|
|
344: 00 d0 rcall .+0 ; 0x346 <wait_100us+0x6>
|
|
346: 00 d0 rcall .+0 ; 0x348 <wait_100us+0x8>
|
|
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 <wait_100us+0x18>
|
|
i;
|
|
354: 89 81 ldd r24, Y+1 ; 0x01
|
|
#include <inttypes.h>
|
|
#include <avr/io.h>
|
|
#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 <wait_100us+0x2a>
|
|
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 <wait_100us+0x14>
|
|
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 <main>:
|
|
#include <inttypes.h>
|
|
#include <avr/io.h>
|
|
#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_1s>
|
|
lcd_init();
|
|
390: 64 de rcall .-824 ; 0x5a <lcd_init>
|
|
lcd_1s();
|
|
392: bc de rcall .-648 ; 0x10c <lcd_1s>
|
|
lcd_1s();
|
|
394: bb de rcall .-650 ; 0x10c <lcd_1s>
|
|
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_write>
|
|
lcd_1s();
|
|
39e: b6 de rcall .-660 ; 0x10c <lcd_1s>
|
|
lcd_1s();
|
|
3a0: b5 de rcall .-662 ; 0x10c <lcd_1s>
|
|
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_write>
|
|
lcd_1s();
|
|
3aa: b0 de rcall .-672 ; 0x10c <lcd_1s>
|
|
lcd_1s();
|
|
3ac: af de rcall .-674 ; 0x10c <lcd_1s>
|
|
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_write>
|
|
lcd_1s();
|
|
3b6: aa de rcall .-684 ; 0x10c <lcd_1s>
|
|
lcd_1s();
|
|
3b8: a9 de rcall .-686 ; 0x10c <lcd_1s>
|
|
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_write>
|
|
lcd_1s();
|
|
3c2: a4 de rcall .-696 ; 0x10c <lcd_1s>
|
|
lcd_1s();
|
|
3c4: a3 de rcall .-698 ; 0x10c <lcd_1s>
|
|
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 <lcd_1s>
|
|
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 <lcd_1s>
|
|
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 <lcd_1s>
|
|
3ec: f0 cf rjmp .-32 ; 0x3ce <main+0x48>
|
|
|
|
000003ee <_exit>:
|
|
3ee: f8 94 cli
|
|
|
|
000003f0 <__stop_program>:
|
|
3f0: ff cf rjmp .-2 ; 0x3f0 <__stop_program>
|