674 lines
22 KiB
Text
674 lines
22 KiB
Text
|
|
||
|
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>
|