This repository has been archived on 2022-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
AtTiny_alarm_clock/Libs/LCD4/avrmb2313_notkermobil/LCD4.lss

728 lines
24 KiB
Plaintext

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>