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/Debug/LCD4.lss

674 lines
22 KiB
Plaintext

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 <main>
8a: 0c 94 03 02 jmp 0x406 ; 0x406 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__heap_end>
00000092 <lcd_init>:
/* 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>
lcd_5ms();
e4: 0e 94 ab 00 call 0x156 ; 0x156 <lcd_5ms>
lcd_5ms();
e8: 0e 94 ab 00 call 0x156 ; 0x156 <lcd_5ms>
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_instruct>
lcd_5ms();
f2: 0e 94 ab 00 call 0x156 ; 0x156 <lcd_5ms>
lcd_instruct(lcd_SET_FUNCTION_8BIT);
f6: 80 e3 ldi r24, 0x30 ; 48
f8: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <lcd_instruct>
wait_100us();
fc: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
lcd_instruct(lcd_SET_FUNCTION_8BIT);
100: 80 e3 ldi r24, 0x30 ; 48
102: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <lcd_instruct>
wait_100us();
106: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
lcd_instruct(lcd_SET_FUNCTION_4BIT);
10a: 80 e2 ldi r24, 0x20 ; 32
10c: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <lcd_instruct>
wait_100us();
110: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
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 <lcd_instruct>
#endif
wait_100us();
11a: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
lcd_instruct(lcd_DISPLAY_OO_OFF);
11e: 88 e0 ldi r24, 0x08 ; 8
120: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <lcd_instruct>
wait_100us();
124: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
lcd_instruct(lcd_DISPLAY_CLEAR);
128: 81 e0 ldi r24, 0x01 ; 1
12a: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <lcd_instruct>
lcd_5ms();
12e: 0e 94 ab 00 call 0x156 ; 0x156 <lcd_5ms>
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 <lcd_instruct>
wait_100us();
138: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
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 <lcd_instruct>
wait_100us();
142: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
lcd_instruct(lcd_RETURN_HOME);
146: 82 e0 ldi r24, 0x02 ; 2
148: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <lcd_instruct>
lcd_5ms();
14c: 0e 94 ab 00 call 0x156 ; 0x156 <lcd_5ms>
}
150: cf 91 pop r28
152: df 91 pop r29
154: 08 95 ret
00000156 <lcd_5ms>:
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 <lcd_5ms+0x1a>
wait_100us();
166: 0e 94 a9 01 call 0x352 ; 0x352 <wait_100us>
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 <lcd_5ms+0x10>
wait_100us();
}
}
176: 0f 90 pop r0
178: cf 91 pop r28
17a: df 91 pop r29
17c: 08 95 ret
0000017e <lcd_1s>:
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_1s+0x1a>
lcd_5ms();
18e: 0e 94 ab 00 call 0x156 ; 0x156 <lcd_5ms>
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_1s+0x10>
lcd_5ms();
}
}
19e: 0f 90 pop r0
1a0: cf 91 pop r28
1a2: df 91 pop r29
1a4: 08 95 ret
000001a6 <lcd_instruct>:
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 <lcd_write>
}
1bc: 0f 90 pop r0
1be: cf 91 pop r28
1c0: df 91 pop r29
1c2: 08 95 ret
000001c4 <lcd_write>:
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 <lcd_write+0x6>
1ca: 00 d0 rcall .+0 ; 0x1cc <lcd_write+0x8>
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 <lcd_write+0x46>
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 <lcd_write+0x60>
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 <lcd_write+0x7a>
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 <lcd_write+0x72>
208: 21 c0 rjmp .+66 ; 0x24c <lcd_write+0x88>
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 <lcd_write+0x88>
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 <lcd_write+0x88>
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 <lcd_write+0x72>
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 <lcd_instruct>
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 <wait_100us>
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 <wait_100us>
}
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 <lcd_blank_line>:
void lcd_blank_line(uint8_t lcd_whichwrite)
{
2d0: df 93 push r29
2d2: cf 93 push r28
2d4: 00 d0 rcall .+0 ; 0x2d6 <lcd_blank_line+0x6>
2d6: 00 d0 rcall .+0 ; 0x2d8 <lcd_blank_line+0x8>
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 <lcd_blank_line+0x40>
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 <lcd_blank_line+0x3a>
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 <lcd_blank_line+0x46>
308: 07 c0 rjmp .+14 ; 0x318 <lcd_blank_line+0x48>
case instruct:
lcd_blank_line(line1);
30a: 82 e0 ldi r24, 0x02 ; 2
30c: 0e 94 68 01 call 0x2d0 ; 0x2d0 <lcd_blank_line>
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 <lcd_blank_line+0x48>
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_blank_line+0x5e>
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 <lcd_write>
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_blank_line+0x4e>
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 <wait_100us>:
#include <inttypes.h>
#include <avr/io.h>
#include "lcd4.h"
void wait_100us(void){
352: df 93 push r29
354: cf 93 push r28
356: 00 d0 rcall .+0 ; 0x358 <wait_100us+0x6>
358: 00 d0 rcall .+0 ; 0x35a <wait_100us+0x8>
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 <wait_100us+0x18>
i;
366: 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){
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 <wait_100us+0x2a>
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 <wait_100us+0x14>
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 <main>:
#include <inttypes.h>
#include <avr/io.h>
#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_1s>
lcd_init();
3a4: 0e 94 49 00 call 0x92 ; 0x92 <lcd_init>
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>
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>
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>
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_write>
lcd_1s();
3d0: 0e 94 bf 00 call 0x17e ; 0x17e <lcd_1s>
lcd_1s();
3d4: 0e 94 bf 00 call 0x17e ; 0x17e <lcd_1s>
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 <lcd_1s>
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 <lcd_1s>
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 <lcd_1s>
404: ed cf rjmp .-38 ; 0x3e0 <main+0x48>
00000406 <_exit>:
406: f8 94 cli
00000408 <__stop_program>:
408: ff cf rjmp .-2 ; 0x408 <__stop_program>