Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 110 → Rev 111

/Transportables_Koptertool/trunk/V-0.1/main.lss
0,0 → 1,5331
 
main.elf: file format elf32-avr
 
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000266c 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 0000266c 00002700 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000527 00800060 00800060 00002700 2**0
ALLOC
3 .noinit 00000000 00800587 00800587 00002700 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00002700 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 00002700 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00002a6c 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 000000c8 00000000 00000000 00002af0 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000902 00000000 00000000 00002bb8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00001dfa 00000000 00000000 000034ba 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 0000098e 00000000 00000000 000052b4 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00001982 00000000 00000000 00005c42 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000004dc 00000000 00000000 000075c4 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 0000000c 0000266c 0000266c 00007aa0 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
 
00000000 <__vectors>:
0: 0c 94 7e 06 jmp 0xcfc <__init>
4: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
8: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
10: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
14: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
18: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
1c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
20: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
24: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
28: 0c 94 b5 06 jmp 0xd6a <__vector_10>
2c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
30: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
34: 0c 94 f8 0b jmp 0x17f0 <__vector_13>
38: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
3c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
40: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
44: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
48: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
4c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
50: 0c 94 99 06 jmp 0xd32 <__bad_interrupt>
 
00000054 <__ctors_end>:
54: 00 00 nop
56: 00 00 nop
58: 00 00 nop
5a: 3e 5b subi r19, 0xBE ; 190
5c: 4f 5b subi r20, 0xBF ; 191
5e: 3e 00 .word 0x003e ; ????
60: 3e 6b ori r19, 0xBE ; 190
62: 4f 6b ori r20, 0xBF ; 191
64: 3e 00 .word 0x003e ; ????
66: 1c 3e cpi r17, 0xEC ; 236
68: 7c 3e cpi r23, 0xEC ; 236
6a: 1c 00 .word 0x001c ; ????
6c: 18 3c cpi r17, 0xC8 ; 200
6e: 7e 3c cpi r23, 0xCE ; 206
70: 18 00 .word 0x0018 ; ????
72: 1c 57 subi r17, 0x7C ; 124
74: 7d 57 subi r23, 0x7D ; 125
76: 1c 00 .word 0x001c ; ????
78: 1c 5e subi r17, 0xEC ; 236
7a: 7f 5e subi r23, 0xEF ; 239
7c: 1c 00 .word 0x001c ; ????
7e: 00 18 sub r0, r0
80: 3c 18 sub r3, r12
82: 00 00 nop
84: ff e7 ldi r31, 0x7F ; 127
86: c3 e7 ldi r28, 0x73 ; 115
88: ff 00 .word 0x00ff ; ????
8a: 00 18 sub r0, r0
8c: 24 18 sub r2, r4
8e: 00 00 nop
90: ff e7 ldi r31, 0x7F ; 127
92: db e7 ldi r29, 0x7B ; 123
94: ff 00 .word 0x00ff ; ????
96: 30 48 sbci r19, 0x80 ; 128
98: 3a 06 cpc r3, r26
9a: 0e 00 .word 0x000e ; ????
9c: 26 29 or r18, r6
9e: 79 29 or r23, r9
a0: 26 00 .word 0x0026 ; ????
a2: 40 7f andi r20, 0xF0 ; 240
a4: 05 05 cpc r16, r5
a6: 07 00 .word 0x0007 ; ????
a8: 40 7f andi r20, 0xF0 ; 240
aa: 05 25 eor r16, r5
ac: 3f 00 .word 0x003f ; ????
ae: 5a 3c cpi r21, 0xCA ; 202
b0: e7 3c cpi r30, 0xC7 ; 199
b2: 5a 00 .word 0x005a ; ????
b4: 7f 3e cpi r23, 0xEF ; 239
b6: 1c 1c adc r1, r12
b8: 08 00 .word 0x0008 ; ????
ba: 08 1c adc r0, r8
bc: 1c 3e cpi r17, 0xEC ; 236
be: 7f 00 .word 0x007f ; ????
c0: 14 22 and r1, r20
c2: 7f 22 and r7, r31
c4: 14 00 .word 0x0014 ; ????
c6: 5f 5f subi r21, 0xFF ; 255
c8: 00 5f subi r16, 0xF0 ; 240
ca: 5f 00 .word 0x005f ; ????
cc: 06 09 sbc r16, r6
ce: 7f 01 movw r14, r30
d0: 7f 00 .word 0x007f ; ????
d2: 00 66 ori r16, 0x60 ; 96
d4: 89 95 .word 0x9589 ; ????
d6: 6a 00 .word 0x006a ; ????
d8: 60 60 ori r22, 0x00 ; 0
da: 60 60 ori r22, 0x00 ; 0
dc: 60 60 ori r22, 0x00 ; 0
de: 94 a2 std Z+36, r9 ; 0x24
e0: ff a2 std Y+39, r15 ; 0x27
e2: 94 00 .word 0x0094 ; ????
e4: 08 04 cpc r0, r8
e6: 7e 04 cpc r7, r14
e8: 08 00 .word 0x0008 ; ????
ea: 10 20 and r1, r0
ec: 7e 20 and r7, r14
ee: 10 00 .word 0x0010 ; ????
f0: 08 08 sbc r0, r8
f2: 2a 1c adc r2, r10
f4: 08 00 .word 0x0008 ; ????
f6: 08 1c adc r0, r8
f8: 2a 08 sbc r2, r10
fa: 08 00 .word 0x0008 ; ????
fc: 1e 10 cpse r1, r14
fe: 10 10 cpse r1, r0
100: 10 00 .word 0x0010 ; ????
102: 0c 1e adc r0, r28
104: 0c 1e adc r0, r28
106: 0c 00 .word 0x000c ; ????
108: 30 38 cpi r19, 0x80 ; 128
10a: 3e 38 cpi r19, 0x8E ; 142
10c: 30 00 .word 0x0030 ; ????
10e: 06 0e add r0, r22
110: 3e 0e add r3, r30
112: 06 00 .word 0x0006 ; ????
...
11c: 5f 00 .word 0x005f ; ????
11e: 00 00 nop
120: 00 07 cpc r16, r16
122: 00 07 cpc r16, r16
124: 00 00 nop
126: 14 7f andi r17, 0xF4 ; 244
128: 14 7f andi r17, 0xF4 ; 244
12a: 14 00 .word 0x0014 ; ????
12c: 24 2a or r2, r20
12e: 7f 2a or r7, r31
130: 12 00 .word 0x0012 ; ????
132: 23 13 cpse r18, r19
134: 08 64 ori r16, 0x48 ; 72
136: 62 00 .word 0x0062 ; ????
138: 36 49 sbci r19, 0x96 ; 150
13a: 56 20 and r5, r6
13c: 50 00 .word 0x0050 ; ????
13e: 00 08 sbc r0, r0
140: 07 03 mulsu r16, r23
142: 00 00 nop
144: 00 1c adc r0, r0
146: 22 41 sbci r18, 0x12 ; 18
148: 00 00 nop
14a: 00 41 sbci r16, 0x10 ; 16
14c: 22 1c adc r2, r2
14e: 00 00 nop
150: 2a 1c adc r2, r10
152: 7f 1c adc r7, r15
154: 2a 00 .word 0x002a ; ????
156: 08 08 sbc r0, r8
158: 3e 08 sbc r3, r14
15a: 08 00 .word 0x0008 ; ????
15c: 00 80 ld r0, Z
15e: 70 30 cpi r23, 0x00 ; 0
160: 00 00 nop
162: 08 08 sbc r0, r8
164: 08 08 sbc r0, r8
166: 08 00 .word 0x0008 ; ????
168: 00 00 nop
16a: 60 60 ori r22, 0x00 ; 0
16c: 00 00 nop
16e: 20 10 cpse r2, r0
170: 08 04 cpc r0, r8
172: 02 00 .word 0x0002 ; ????
174: 3e 51 subi r19, 0x1E ; 30
176: 49 45 sbci r20, 0x59 ; 89
178: 3e 00 .word 0x003e ; ????
17a: 00 42 sbci r16, 0x20 ; 32
17c: 7f 40 sbci r23, 0x0F ; 15
17e: 00 00 nop
180: 72 49 sbci r23, 0x92 ; 146
182: 49 49 sbci r20, 0x99 ; 153
184: 46 00 .word 0x0046 ; ????
186: 21 41 sbci r18, 0x11 ; 17
188: 49 4d sbci r20, 0xD9 ; 217
18a: 33 00 .word 0x0033 ; ????
18c: 18 14 cp r1, r8
18e: 12 7f andi r17, 0xF2 ; 242
190: 10 00 .word 0x0010 ; ????
192: 27 45 sbci r18, 0x57 ; 87
194: 45 45 sbci r20, 0x55 ; 85
196: 39 00 .word 0x0039 ; ????
198: 3c 4a sbci r19, 0xAC ; 172
19a: 49 49 sbci r20, 0x99 ; 153
19c: 31 00 .word 0x0031 ; ????
19e: 41 21 and r20, r1
1a0: 11 09 sbc r17, r1
1a2: 07 00 .word 0x0007 ; ????
1a4: 36 49 sbci r19, 0x96 ; 150
1a6: 49 49 sbci r20, 0x99 ; 153
1a8: 36 00 .word 0x0036 ; ????
1aa: 46 49 sbci r20, 0x96 ; 150
1ac: 49 29 or r20, r9
1ae: 1e 00 .word 0x001e ; ????
1b0: 00 00 nop
1b2: 14 00 .word 0x0014 ; ????
1b4: 00 00 nop
1b6: 00 40 sbci r16, 0x00 ; 0
1b8: 34 00 .word 0x0034 ; ????
1ba: 00 00 nop
1bc: 00 08 sbc r0, r0
1be: 14 22 and r1, r20
1c0: 41 00 .word 0x0041 ; ????
1c2: 14 14 cp r1, r4
1c4: 14 14 cp r1, r4
1c6: 14 00 .word 0x0014 ; ????
1c8: 00 41 sbci r16, 0x10 ; 16
1ca: 22 14 cp r2, r2
1cc: 08 00 .word 0x0008 ; ????
1ce: 02 01 movw r0, r4
1d0: 59 09 sbc r21, r9
1d2: 06 00 .word 0x0006 ; ????
1d4: 3e 41 sbci r19, 0x1E ; 30
1d6: 5d 59 subi r21, 0x9D ; 157
1d8: 4e 00 .word 0x004e ; ????
1da: 7c 12 cpse r7, r28
1dc: 11 12 cpse r1, r17
1de: 7c 00 .word 0x007c ; ????
1e0: 7f 49 sbci r23, 0x9F ; 159
1e2: 49 49 sbci r20, 0x99 ; 153
1e4: 36 00 .word 0x0036 ; ????
1e6: 3e 41 sbci r19, 0x1E ; 30
1e8: 41 41 sbci r20, 0x11 ; 17
1ea: 22 00 .word 0x0022 ; ????
1ec: 7f 41 sbci r23, 0x1F ; 31
1ee: 41 41 sbci r20, 0x11 ; 17
1f0: 3e 00 .word 0x003e ; ????
1f2: 7f 49 sbci r23, 0x9F ; 159
1f4: 49 49 sbci r20, 0x99 ; 153
1f6: 41 00 .word 0x0041 ; ????
1f8: 7f 09 sbc r23, r15
1fa: 09 09 sbc r16, r9
1fc: 01 00 .word 0x0001 ; ????
1fe: 3e 41 sbci r19, 0x1E ; 30
200: 41 51 subi r20, 0x11 ; 17
202: 73 00 .word 0x0073 ; ????
204: 7f 08 sbc r7, r15
206: 08 08 sbc r0, r8
208: 7f 00 .word 0x007f ; ????
20a: 00 41 sbci r16, 0x10 ; 16
20c: 7f 41 sbci r23, 0x1F ; 31
20e: 00 00 nop
210: 20 40 sbci r18, 0x00 ; 0
212: 41 3f cpi r20, 0xF1 ; 241
214: 01 00 .word 0x0001 ; ????
216: 7f 08 sbc r7, r15
218: 14 22 and r1, r20
21a: 41 00 .word 0x0041 ; ????
21c: 7f 40 sbci r23, 0x0F ; 15
21e: 40 40 sbci r20, 0x00 ; 0
220: 40 00 .word 0x0040 ; ????
222: 7f 02 muls r23, r31
224: 1c 02 muls r17, r28
226: 7f 00 .word 0x007f ; ????
228: 7f 04 cpc r7, r15
22a: 08 10 cpse r0, r8
22c: 7f 00 .word 0x007f ; ????
22e: 3e 41 sbci r19, 0x1E ; 30
230: 41 41 sbci r20, 0x11 ; 17
232: 3e 00 .word 0x003e ; ????
234: 7f 09 sbc r23, r15
236: 09 09 sbc r16, r9
238: 06 00 .word 0x0006 ; ????
23a: 3e 41 sbci r19, 0x1E ; 30
23c: 51 21 and r21, r1
23e: 5e 00 .word 0x005e ; ????
240: 7f 09 sbc r23, r15
242: 19 29 or r17, r9
244: 46 00 .word 0x0046 ; ????
246: 26 49 sbci r18, 0x96 ; 150
248: 49 49 sbci r20, 0x99 ; 153
24a: 32 00 .word 0x0032 ; ????
24c: 03 01 movw r0, r6
24e: 7f 01 movw r14, r30
250: 03 00 .word 0x0003 ; ????
252: 3f 40 sbci r19, 0x0F ; 15
254: 40 40 sbci r20, 0x00 ; 0
256: 3f 00 .word 0x003f ; ????
258: 1f 20 and r1, r15
25a: 40 20 and r4, r0
25c: 1f 00 .word 0x001f ; ????
25e: 3f 40 sbci r19, 0x0F ; 15
260: 38 40 sbci r19, 0x08 ; 8
262: 3f 00 .word 0x003f ; ????
264: 63 14 cp r6, r3
266: 08 14 cp r0, r8
268: 63 00 .word 0x0063 ; ????
26a: 03 04 cpc r0, r3
26c: 78 04 cpc r7, r8
26e: 03 00 .word 0x0003 ; ????
270: 61 59 subi r22, 0x91 ; 145
272: 49 4d sbci r20, 0xD9 ; 217
274: 43 00 .word 0x0043 ; ????
276: 00 7f andi r16, 0xF0 ; 240
278: 41 41 sbci r20, 0x11 ; 17
27a: 41 00 .word 0x0041 ; ????
27c: 02 04 cpc r0, r2
27e: 08 10 cpse r0, r8
280: 20 00 .word 0x0020 ; ????
282: 00 41 sbci r16, 0x10 ; 16
284: 41 41 sbci r20, 0x11 ; 17
286: 7f 00 .word 0x007f ; ????
288: 04 02 muls r16, r20
28a: 01 02 muls r16, r17
28c: 04 00 .word 0x0004 ; ????
28e: 40 40 sbci r20, 0x00 ; 0
290: 40 40 sbci r20, 0x00 ; 0
292: 40 00 .word 0x0040 ; ????
294: 00 03 mulsu r16, r16
296: 07 08 sbc r0, r7
298: 00 00 nop
29a: 20 54 subi r18, 0x40 ; 64
29c: 54 78 andi r21, 0x84 ; 132
29e: 40 00 .word 0x0040 ; ????
2a0: 7f 28 or r7, r15
2a2: 44 44 sbci r20, 0x44 ; 68
2a4: 38 00 .word 0x0038 ; ????
2a6: 38 44 sbci r19, 0x48 ; 72
2a8: 44 44 sbci r20, 0x44 ; 68
2aa: 28 00 .word 0x0028 ; ????
2ac: 38 44 sbci r19, 0x48 ; 72
2ae: 44 28 or r4, r4
2b0: 7f 00 .word 0x007f ; ????
2b2: 38 54 subi r19, 0x48 ; 72
2b4: 54 54 subi r21, 0x44 ; 68
2b6: 18 00 .word 0x0018 ; ????
2b8: 00 08 sbc r0, r0
2ba: 7e 09 sbc r23, r14
2bc: 02 00 .word 0x0002 ; ????
2be: 18 a4 ldd r1, Y+40 ; 0x28
2c0: a4 9c mul r10, r4
2c2: 78 00 .word 0x0078 ; ????
2c4: 7f 08 sbc r7, r15
2c6: 04 04 cpc r0, r4
2c8: 78 00 .word 0x0078 ; ????
2ca: 00 44 sbci r16, 0x40 ; 64
2cc: 7d 40 sbci r23, 0x0D ; 13
2ce: 00 00 nop
2d0: 20 40 sbci r18, 0x00 ; 0
2d2: 40 3d cpi r20, 0xD0 ; 208
2d4: 00 00 nop
2d6: 7f 10 cpse r7, r15
2d8: 28 44 sbci r18, 0x48 ; 72
2da: 00 00 nop
2dc: 00 41 sbci r16, 0x10 ; 16
2de: 7f 40 sbci r23, 0x0F ; 15
2e0: 00 00 nop
2e2: 7c 04 cpc r7, r12
2e4: 78 04 cpc r7, r8
2e6: 78 00 .word 0x0078 ; ????
2e8: 7c 08 sbc r7, r12
2ea: 04 04 cpc r0, r4
2ec: 78 00 .word 0x0078 ; ????
2ee: 38 44 sbci r19, 0x48 ; 72
2f0: 44 44 sbci r20, 0x44 ; 68
2f2: 38 00 .word 0x0038 ; ????
2f4: fc 18 sub r15, r12
2f6: 24 24 eor r2, r4
2f8: 18 00 .word 0x0018 ; ????
2fa: 18 24 eor r1, r8
2fc: 24 18 sub r2, r4
2fe: fc 00 .word 0x00fc ; ????
300: 7c 08 sbc r7, r12
302: 04 04 cpc r0, r4
304: 08 00 .word 0x0008 ; ????
306: 48 54 subi r20, 0x48 ; 72
308: 54 54 subi r21, 0x44 ; 68
30a: 24 00 .word 0x0024 ; ????
30c: 04 04 cpc r0, r4
30e: 3f 44 sbci r19, 0x4F ; 79
310: 24 00 .word 0x0024 ; ????
312: 3c 40 sbci r19, 0x0C ; 12
314: 40 20 and r4, r0
316: 7c 00 .word 0x007c ; ????
318: 1c 20 and r1, r12
31a: 40 20 and r4, r0
31c: 1c 00 .word 0x001c ; ????
31e: 3c 40 sbci r19, 0x0C ; 12
320: 30 40 sbci r19, 0x00 ; 0
322: 3c 00 .word 0x003c ; ????
324: 44 28 or r4, r4
326: 10 28 or r1, r0
328: 44 00 .word 0x0044 ; ????
32a: 4c 90 ld r4, X
32c: 90 90 7c 00 lds r9, 0x007C
330: 44 64 ori r20, 0x44 ; 68
332: 54 4c sbci r21, 0xC4 ; 196
334: 44 00 .word 0x0044 ; ????
336: 00 08 sbc r0, r0
338: 36 41 sbci r19, 0x16 ; 22
33a: 00 00 nop
33c: 00 00 nop
33e: 77 00 .word 0x0077 ; ????
340: 00 00 nop
342: 00 41 sbci r16, 0x10 ; 16
344: 36 08 sbc r3, r6
346: 00 00 nop
348: 02 01 movw r0, r4
34a: 02 04 cpc r0, r2
34c: 02 00 .word 0x0002 ; ????
34e: 3c 26 eor r3, r28
350: 23 26 eor r2, r19
352: 3c 00 .word 0x003c ; ????
354: 1e a1 ldd r17, Y+38 ; 0x26
356: a1 61 ori r26, 0x11 ; 17
358: 12 00 .word 0x0012 ; ????
35a: 3a 40 sbci r19, 0x0A ; 10
35c: 40 20 and r4, r0
35e: 7a 00 .word 0x007a ; ????
360: 38 54 subi r19, 0x48 ; 72
362: 54 55 subi r21, 0x54 ; 84
364: 59 00 .word 0x0059 ; ????
366: 21 55 subi r18, 0x51 ; 81
368: 55 79 andi r21, 0x95 ; 149
36a: 41 00 .word 0x0041 ; ????
36c: 21 54 subi r18, 0x41 ; 65
36e: 54 78 andi r21, 0x84 ; 132
370: 41 00 .word 0x0041 ; ????
372: 21 55 subi r18, 0x51 ; 81
374: 54 78 andi r21, 0x84 ; 132
376: 40 00 .word 0x0040 ; ????
378: 20 54 subi r18, 0x40 ; 64
37a: 55 79 andi r21, 0x95 ; 149
37c: 40 00 .word 0x0040 ; ????
37e: 0c 1e adc r0, r28
380: 52 72 andi r21, 0x22 ; 34
382: 12 00 .word 0x0012 ; ????
384: 39 55 subi r19, 0x59 ; 89
386: 55 55 subi r21, 0x55 ; 85
388: 59 00 .word 0x0059 ; ????
38a: 39 54 subi r19, 0x49 ; 73
38c: 54 54 subi r21, 0x44 ; 68
38e: 59 00 .word 0x0059 ; ????
390: 39 55 subi r19, 0x59 ; 89
392: 54 54 subi r21, 0x44 ; 68
394: 58 00 .word 0x0058 ; ????
396: 00 00 nop
398: 45 7c andi r20, 0xC5 ; 197
39a: 41 00 .word 0x0041 ; ????
39c: 00 02 muls r16, r16
39e: 45 7d andi r20, 0xD5 ; 213
3a0: 42 00 .word 0x0042 ; ????
3a2: 00 01 movw r0, r0
3a4: 45 7c andi r20, 0xC5 ; 197
3a6: 40 00 .word 0x0040 ; ????
3a8: 79 14 cp r7, r9
3aa: 12 14 cp r1, r2
3ac: 79 00 .word 0x0079 ; ????
3ae: f0 28 or r15, r0
3b0: 25 28 or r2, r5
3b2: f0 00 .word 0x00f0 ; ????
3b4: 7c 54 subi r23, 0x4C ; 76
3b6: 55 45 sbci r21, 0x55 ; 85
3b8: 00 00 nop
3ba: 20 54 subi r18, 0x40 ; 64
3bc: 54 7c andi r21, 0xC4 ; 196
3be: 54 44 sbci r21, 0x44 ; 68
3c0: 7c 0a sbc r7, r28
3c2: 09 7f andi r16, 0xF9 ; 249
3c4: 49 41 sbci r20, 0x19 ; 25
3c6: 32 49 sbci r19, 0x92 ; 146
3c8: 49 49 sbci r20, 0x99 ; 153
3ca: 32 00 .word 0x0032 ; ????
3cc: 32 48 sbci r19, 0x82 ; 130
3ce: 48 48 sbci r20, 0x88 ; 136
3d0: 32 00 .word 0x0032 ; ????
3d2: 32 4a sbci r19, 0xA2 ; 162
3d4: 48 48 sbci r20, 0x88 ; 136
3d6: 30 00 .word 0x0030 ; ????
3d8: 3a 41 sbci r19, 0x1A ; 26
3da: 41 21 and r20, r1
3dc: 7a 00 .word 0x007a ; ????
3de: 3a 42 sbci r19, 0x2A ; 42
3e0: 40 20 and r4, r0
3e2: 78 00 .word 0x0078 ; ????
3e4: 00 9d mul r16, r0
3e6: a0 a0 ldd r10, Z+32 ; 0x20
3e8: 7d 00 .word 0x007d ; ????
3ea: 39 44 sbci r19, 0x49 ; 73
3ec: 44 44 sbci r20, 0x44 ; 68
3ee: 39 00 .word 0x0039 ; ????
3f0: 3d 40 sbci r19, 0x0D ; 13
3f2: 40 40 sbci r20, 0x00 ; 0
3f4: 3d 00 .word 0x003d ; ????
3f6: 3c 24 eor r3, r12
3f8: ff 24 eor r15, r15
3fa: 24 00 .word 0x0024 ; ????
3fc: 48 7e andi r20, 0xE8 ; 232
3fe: 49 43 sbci r20, 0x39 ; 57
400: 66 00 .word 0x0066 ; ????
402: 2b 2f mov r18, r27
404: fc 2f mov r31, r28
406: 2b 00 .word 0x002b ; ????
408: ff 09 sbc r31, r15
40a: 29 f6 brne .-118 ; 0x396 <__ctors_end+0x342>
40c: 20 00 .word 0x0020 ; ????
40e: c0 88 ldd r12, Z+16 ; 0x10
410: 7e 09 sbc r23, r14
412: 03 00 .word 0x0003 ; ????
414: 20 54 subi r18, 0x40 ; 64
416: 54 79 andi r21, 0x94 ; 148
418: 41 00 .word 0x0041 ; ????
41a: 00 00 nop
41c: 44 7d andi r20, 0xD4 ; 212
41e: 41 00 .word 0x0041 ; ????
420: 30 48 sbci r19, 0x80 ; 128
422: 48 4a sbci r20, 0xA8 ; 168
424: 32 00 .word 0x0032 ; ????
426: 38 40 sbci r19, 0x08 ; 8
428: 40 22 and r4, r16
42a: 7a 00 .word 0x007a ; ????
42c: 00 7a andi r16, 0xA0 ; 160
42e: 0a 0a sbc r0, r26
430: 72 00 .word 0x0072 ; ????
432: 7d 0d add r23, r13
434: 19 31 cpi r17, 0x19 ; 25
436: 7d 00 .word 0x007d ; ????
438: 26 29 or r18, r6
43a: 29 2f mov r18, r25
43c: 28 00 .word 0x0028 ; ????
43e: 26 29 or r18, r6
440: 29 29 or r18, r9
442: 26 00 .word 0x0026 ; ????
444: 30 48 sbci r19, 0x80 ; 128
446: 4d 40 sbci r20, 0x0D ; 13
448: 20 00 .word 0x0020 ; ????
44a: 38 08 sbc r3, r8
44c: 08 08 sbc r0, r8
44e: 08 00 .word 0x0008 ; ????
450: 08 08 sbc r0, r8
452: 08 08 sbc r0, r8
454: 38 00 .word 0x0038 ; ????
456: 2f 10 cpse r2, r15
458: c8 ac ldd r12, Y+56 ; 0x38
45a: ba 00 .word 0x00ba ; ????
45c: 2f 10 cpse r2, r15
45e: 28 34 cpi r18, 0x48 ; 72
460: fa 00 .word 0x00fa ; ????
462: 00 00 nop
464: 7b 00 .word 0x007b ; ????
466: 00 00 nop
468: 08 14 cp r0, r8
46a: 2a 14 cp r2, r10
46c: 22 00 .word 0x0022 ; ????
46e: 22 14 cp r2, r2
470: 2a 14 cp r2, r10
472: 08 00 .word 0x0008 ; ????
474: aa 00 .word 0x00aa ; ????
476: 55 00 .word 0x0055 ; ????
478: aa 00 .word 0x00aa ; ????
47a: aa 55 subi r26, 0x5A ; 90
47c: aa 55 subi r26, 0x5A ; 90
47e: aa 55 subi r26, 0x5A ; 90
480: 55 aa std Z+53, r5 ; 0x35
482: 55 aa std Z+53, r5 ; 0x35
484: 55 aa std Z+53, r5 ; 0x35
486: 00 00 nop
488: 00 ff sbrs r16, 0
48a: 00 00 nop
48c: 10 10 cpse r1, r0
48e: 10 ff sbrs r17, 0
490: 00 00 nop
492: 14 14 cp r1, r4
494: 14 ff sbrs r17, 4
496: 00 00 nop
498: 10 10 cpse r1, r0
49a: ff 00 .word 0x00ff ; ????
49c: ff 00 .word 0x00ff ; ????
49e: 10 10 cpse r1, r0
4a0: f0 10 cpse r15, r0
4a2: f0 00 .word 0x00f0 ; ????
4a4: 14 14 cp r1, r4
4a6: 14 fc sbrc r1, 4
4a8: 00 00 nop
4aa: 14 14 cp r1, r4
4ac: f7 00 .word 0x00f7 ; ????
4ae: ff 00 .word 0x00ff ; ????
4b0: 00 00 nop
4b2: ff 00 .word 0x00ff ; ????
4b4: ff 00 .word 0x00ff ; ????
4b6: 14 14 cp r1, r4
4b8: f4 04 cpc r15, r4
4ba: fc 00 .word 0x00fc ; ????
4bc: 14 14 cp r1, r4
4be: 17 10 cpse r1, r7
4c0: 1f 00 .word 0x001f ; ????
4c2: 10 10 cpse r1, r0
4c4: 1f 10 cpse r1, r15
4c6: 1f 00 .word 0x001f ; ????
4c8: 14 14 cp r1, r4
4ca: 14 1f adc r17, r20
4cc: 00 00 nop
4ce: 10 10 cpse r1, r0
4d0: 10 f0 brcs .+4 ; 0x4d6 <__ctors_end+0x482>
4d2: 00 00 nop
4d4: 00 00 nop
4d6: 00 1f adc r16, r16
4d8: 10 10 cpse r1, r0
4da: 10 10 cpse r1, r0
4dc: 10 1f adc r17, r16
4de: 10 10 cpse r1, r0
4e0: 10 10 cpse r1, r0
4e2: 10 f0 brcs .+4 ; 0x4e8 <__ctors_end+0x494>
4e4: 10 10 cpse r1, r0
4e6: 00 00 nop
4e8: 00 ff sbrs r16, 0
4ea: 10 10 cpse r1, r0
4ec: 10 10 cpse r1, r0
4ee: 10 10 cpse r1, r0
4f0: 10 10 cpse r1, r0
4f2: 10 10 cpse r1, r0
4f4: 10 ff sbrs r17, 0
4f6: 10 10 cpse r1, r0
4f8: 00 00 nop
4fa: 00 ff sbrs r16, 0
4fc: 14 14 cp r1, r4
4fe: 00 00 nop
500: ff 00 .word 0x00ff ; ????
502: ff 10 cpse r15, r15
504: 00 00 nop
506: 1f 10 cpse r1, r15
508: 17 14 cp r1, r7
50a: 00 00 nop
50c: fc 04 cpc r15, r12
50e: f4 14 cp r15, r4
510: 14 14 cp r1, r4
512: 17 10 cpse r1, r7
514: 17 14 cp r1, r7
516: 14 14 cp r1, r4
518: f4 04 cpc r15, r4
51a: f4 14 cp r15, r4
51c: 00 00 nop
51e: ff 00 .word 0x00ff ; ????
520: f7 14 cp r15, r7
522: 14 14 cp r1, r4
524: 14 14 cp r1, r4
526: 14 14 cp r1, r4
528: 14 14 cp r1, r4
52a: f7 00 .word 0x00f7 ; ????
52c: f7 14 cp r15, r7
52e: 14 14 cp r1, r4
530: 14 17 cp r17, r20
532: 14 14 cp r1, r4
534: 10 10 cpse r1, r0
536: 1f 10 cpse r1, r15
538: 1f 10 cpse r1, r15
53a: 14 14 cp r1, r4
53c: 14 f4 brge .+4 ; 0x542 <__ctors_end+0x4ee>
53e: 14 14 cp r1, r4
540: 10 10 cpse r1, r0
542: f0 10 cpse r15, r0
544: f0 10 cpse r15, r0
546: 00 00 nop
548: 1f 10 cpse r1, r15
54a: 1f 10 cpse r1, r15
54c: 00 00 nop
54e: 00 1f adc r16, r16
550: 14 14 cp r1, r4
552: 00 00 nop
554: 00 fc sbrc r0, 0
556: 14 14 cp r1, r4
558: 00 00 nop
55a: f0 10 cpse r15, r0
55c: f0 10 cpse r15, r0
55e: 10 10 cpse r1, r0
560: ff 10 cpse r15, r15
562: ff 10 cpse r15, r15
564: 14 14 cp r1, r4
566: 14 ff sbrs r17, 4
568: 14 14 cp r1, r4
56a: 10 10 cpse r1, r0
56c: 10 1f adc r17, r16
56e: 00 00 nop
570: 00 00 nop
572: 00 f0 brcs .+0 ; 0x574 <__ctors_end+0x520>
574: 10 10 cpse r1, r0
576: ff ff .word 0xffff ; ????
578: ff ff .word 0xffff ; ????
57a: ff ff .word 0xffff ; ????
57c: f0 f0 brcs .+60 ; 0x5ba <__ctors_end+0x566>
57e: f0 f0 brcs .+60 ; 0x5bc <__ctors_end+0x568>
580: f0 f0 brcs .+60 ; 0x5be <__ctors_end+0x56a>
582: ff ff .word 0xffff ; ????
584: ff 00 .word 0x00ff ; ????
586: 00 00 nop
588: 00 00 nop
58a: 00 ff sbrs r16, 0
58c: ff ff .word 0xffff ; ????
58e: 0f 0f add r16, r31
590: 0f 0f add r16, r31
592: 0f 0f add r16, r31
594: 38 44 sbci r19, 0x48 ; 72
596: 44 38 cpi r20, 0x84 ; 132
598: 44 00 .word 0x0044 ; ????
59a: 7c 2a or r7, r28
59c: 2a 3e cpi r18, 0xEA ; 234
59e: 14 00 .word 0x0014 ; ????
5a0: 7e 02 muls r23, r30
5a2: 02 06 cpc r0, r18
5a4: 06 00 .word 0x0006 ; ????
5a6: 02 7e andi r16, 0xE2 ; 226
5a8: 02 7e andi r16, 0xE2 ; 226
5aa: 02 00 .word 0x0002 ; ????
5ac: 63 55 subi r22, 0x53 ; 83
5ae: 49 41 sbci r20, 0x19 ; 25
5b0: 63 00 .word 0x0063 ; ????
5b2: 38 44 sbci r19, 0x48 ; 72
5b4: 44 3c cpi r20, 0xC4 ; 196
5b6: 04 00 .word 0x0004 ; ????
5b8: 40 7e andi r20, 0xE0 ; 224
5ba: 20 1e adc r2, r16
5bc: 20 00 .word 0x0020 ; ????
5be: 06 02 muls r16, r22
5c0: 7e 02 muls r23, r30
5c2: 02 00 .word 0x0002 ; ????
5c4: 99 a5 ldd r25, Y+41 ; 0x29
5c6: e7 a5 ldd r30, Z+47 ; 0x2f
5c8: 99 00 .word 0x0099 ; ????
5ca: 1c 2a or r1, r28
5cc: 49 2a or r4, r25
5ce: 1c 00 .word 0x001c ; ????
5d0: 4c 72 andi r20, 0x2C ; 44
5d2: 01 72 andi r16, 0x21 ; 33
5d4: 4c 00 .word 0x004c ; ????
5d6: 30 4a sbci r19, 0xA0 ; 160
5d8: 4d 4d sbci r20, 0xDD ; 221
5da: 30 00 .word 0x0030 ; ????
5dc: 30 48 sbci r19, 0x80 ; 128
5de: 78 48 sbci r23, 0x88 ; 136
5e0: 30 00 .word 0x0030 ; ????
5e2: bc 62 ori r27, 0x2C ; 44
5e4: 5a 46 sbci r21, 0x6A ; 106
5e6: 3d 00 .word 0x003d ; ????
5e8: 3e 49 sbci r19, 0x9E ; 158
5ea: 49 49 sbci r20, 0x99 ; 153
5ec: 00 00 nop
5ee: 7e 01 movw r14, r28
5f0: 01 01 movw r0, r2
5f2: 7e 00 .word 0x007e ; ????
5f4: 2a 2a or r2, r26
5f6: 2a 2a or r2, r26
5f8: 2a 00 .word 0x002a ; ????
5fa: 44 44 sbci r20, 0x44 ; 68
5fc: 5f 44 sbci r21, 0x4F ; 79
5fe: 44 00 .word 0x0044 ; ????
600: 40 51 subi r20, 0x10 ; 16
602: 4a 44 sbci r20, 0x4A ; 74
604: 40 00 .word 0x0040 ; ????
606: 40 44 sbci r20, 0x40 ; 64
608: 4a 51 subi r20, 0x1A ; 26
60a: 40 00 .word 0x0040 ; ????
60c: 00 00 nop
60e: ff 01 movw r30, r30
610: 03 00 .word 0x0003 ; ????
612: e0 80 ld r14, Z
614: ff 00 .word 0x00ff ; ????
616: 00 00 nop
618: 08 08 sbc r0, r8
61a: 6b 6b ori r22, 0xBB ; 187
61c: 08 08 sbc r0, r8
61e: 36 12 cpse r3, r22
620: 36 24 eor r3, r6
622: 36 00 .word 0x0036 ; ????
624: 06 0f add r16, r22
626: 09 0f add r16, r25
628: 06 00 .word 0x0006 ; ????
62a: 00 00 nop
62c: 18 18 sub r1, r8
62e: 00 00 nop
630: 00 00 nop
632: 10 10 cpse r1, r0
634: 00 00 nop
636: 30 40 sbci r19, 0x00 ; 0
638: ff 01 movw r30, r30
63a: 01 00 .word 0x0001 ; ????
63c: 00 1f adc r16, r16
63e: 01 01 movw r0, r2
640: 1e 00 .word 0x001e ; ????
642: 00 19 sub r16, r0
644: 1d 17 cp r17, r29
646: 12 00 .word 0x0012 ; ????
648: 00 3c cpi r16, 0xC0 ; 192
64a: 3c 3c cpi r19, 0xCC ; 204
64c: 3c 00 .word 0x003c ; ????
64e: 00 00 nop
650: 00 00 nop
...
 
00000654 <__c.0>:
654: 20 20 20 20 20 20 00 .
 
0000065b <parameter>:
65b: 4e 69 63 6b 20 20 20 20 20 20 20 20 20 20 20 00 Nick .
66b: 52 6f 6c 6c 20 20 20 20 20 20 20 20 20 20 20 00 Roll .
67b: 47 61 73 20 20 20 20 20 20 20 20 20 20 20 20 00 Gas .
68b: 47 69 65 72 09 09 09 00 00 00 00 00 00 00 00 00 Gier............
69b: 50 6f 74 69 31 09 09 09 00 00 00 00 00 00 00 00 Poti1...........
6ab: 50 6f 74 69 32 09 09 09 00 00 00 00 00 00 00 00 Poti2...........
6bb: 50 6f 74 69 33 09 09 09 00 00 00 00 00 00 00 00 Poti3...........
6cb: 50 6f 74 69 34 09 09 09 00 00 00 00 00 00 00 00 Poti4...........
6db: 43 6f 6e 66 69 67 09 09 09 00 00 00 00 00 00 00 Config..........
6eb: 48 6f 65 68 65 5f 4d 69 6e 47 61 73 20 20 20 00 Hoehe_MinGas .
6fb: 4c 75 66 74 64 72 75 63 6b 5f 44 20 20 20 20 00 Luftdruck_D .
70b: 4d 61 78 48 6f 65 68 65 20 20 20 20 20 20 20 00 MaxHoehe .
71b: 48 6f 65 68 65 5f 50 20 20 20 20 20 20 20 20 00 Hoehe_P .
72b: 48 6f 65 68 65 5f 56 65 72 73 74 61 65 72 6b 00 Hoehe_Verstaerk.
73b: 48 6f 65 68 65 5f 41 43 43 5f 57 69 72 6b 2e 00 Hoehe_ACC_Wirk..
74b: 53 74 69 63 6b 5f 50 20 20 20 20 20 20 20 20 00 Stick_P .
75b: 53 74 69 63 6b 5f 44 20 20 20 20 20 20 20 20 00 Stick_D .
76b: 47 69 65 72 5f 50 20 20 20 20 20 20 20 20 20 00 Gier_P .
77b: 47 61 73 5f 4d 69 6e 20 20 20 20 20 20 20 20 00 Gas_Min .
78b: 47 61 73 5f 4d 61 78 20 20 20 20 20 20 20 20 00 Gas_Max .
79b: 47 79 72 6f 41 63 63 46 61 6b 74 6f 72 09 00 00 GyroAccFaktor...
7ab: 4b 6f 6d 70 61 73 73 57 69 72 6b 75 6e 67 20 00 KompassWirkung .
7bb: 47 79 72 6f 5f 50 20 09 09 00 00 00 00 00 00 00 Gyro_P .........
7cb: 47 79 72 6f 5f 49 09 09 09 00 00 00 00 00 00 00 Gyro_I..........
7db: 55 6e 74 65 72 73 70 61 6e 6e 75 6e 67 20 20 00 Unterspannung .
7eb: 4e 6f 74 47 61 73 09 09 09 00 00 00 00 00 00 00 NotGas..........
7fb: 4e 6f 74 47 61 73 5a 65 69 74 20 20 20 20 20 00 NotGasZeit .
80b: 55 66 6f 41 75 73 72 69 63 68 74 75 6e 67 20 00 UfoAusrichtung .
81b: 49 5f 46 61 6b 74 6f 72 20 20 20 20 20 20 20 00 I_Faktor .
82b: 55 73 65 72 50 61 72 61 6d 31 09 09 00 00 00 00 UserParam1......
83b: 55 73 65 72 50 61 72 61 6d 32 09 09 00 00 00 00 UserParam2......
84b: 55 73 65 72 50 61 72 61 6d 33 09 09 00 00 00 00 UserParam3......
85b: 55 73 65 72 50 61 72 61 6d 34 09 09 00 00 00 00 UserParam4......
86b: 53 65 72 76 6f 4e 69 63 6b 43 74 72 6c 09 00 00 ServoNickCtrl...
87b: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 09 00 00 ServoNickComp...
88b: 53 65 72 76 6f 4e 69 63 6b 4d 69 6e 09 00 00 00 ServoNickMin....
89b: 53 65 72 76 6f 4e 69 63 6b 4d 61 78 09 00 00 00 ServoNickMax....
8ab: 53 65 72 76 6f 4e 69 63 6b 52 65 66 72 73 68 00 ServoNickRefrsh.
8bb: 4c 6f 6f 70 47 61 73 4c 69 6d 69 74 09 00 00 00 LoopGasLimit....
8cb: 4c 6f 6f 70 54 68 72 65 73 68 6f 6c 64 09 00 00 LoopThreshold...
8db: 4c 6f 6f 70 48 79 73 74 65 72 65 73 65 09 00 00 LoopHysterese...
8eb: 41 63 68 73 4b 6f 70 70 6c 75 6e 67 09 00 00 00 AchsKopplung....
8fb: 41 63 68 73 47 65 67 65 6e 4b 6f 70 70 6c 2e 00 AchsGegenKoppl..
90b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 4e 69 63 6b 00 WinklUmschlNick.
91b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 52 6f 6c 6c 00 WinklUmschlRoll.
92b: 47 79 72 6f 41 63 63 41 62 67 6c 65 69 63 68 00 GyroAccAbgleich.
93b: 44 72 69 66 74 6b 6f 6d 70 09 09 00 00 00 00 00 Driftkomp.......
94b: 44 79 6e 61 6d 69 63 53 74 61 62 69 6c 69 74 00 DynamicStabilit.
95b: 55 73 65 72 50 61 72 61 6d 35 09 09 00 00 00 00 UserParam5......
96b: 55 73 65 72 50 61 72 61 6d 36 09 09 00 00 00 00 UserParam6......
97b: 55 73 65 72 50 61 72 61 6d 37 09 09 00 00 00 00 UserParam7......
98b: 55 73 65 72 50 61 72 61 6d 38 09 09 00 00 00 00 UserParam8......
99b: 4c 6f 6f 70 43 6f 6e 66 69 67 09 09 00 00 00 00 LoopConfig......
9ab: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 49 6e 00 ServoNickCompIn.
 
000009bb <bin_parameter>:
9bb: 4c 6f 6f 70 20 75 70 20 20 20 20 20 20 20 20 00 Loop up .
9cb: 4c 6f 6f 70 20 64 6f 77 6e 09 20 20 20 20 00 00 Loop down. ..
9db: 4c 6f 6f 70 20 6c 65 66 74 20 20 20 20 20 20 00 Loop left .
9eb: 4c 6f 6f 70 20 72 69 67 68 74 20 20 20 20 20 00 Loop right .
9fb: 48 f6 68 65 6e 72 65 67 6c 65 72 20 20 20 20 00 H.henregler .
a0b: 48 f6 68 65 6e 73 63 68 61 6c 74 65 72 20 20 00 H.henschalter .
a1b: 48 65 61 64 68 6f 6c 64 09 09 00 00 00 00 00 00 Headhold........
a2b: 4b 6f 6d 70 61 73 73 09 09 00 00 00 00 00 00 00 Kompass.........
a3b: 4b 6f 6d 70 61 73 73 46 69 78 09 09 00 00 00 00 KompassFix......
a4b: 47 50 53 09 09 09 00 00 00 00 00 00 00 00 00 00 GPS.............
a5b: 41 63 68 73 65 6e 6b 6f 70 70 6c 75 6e 67 20 00 Achsenkopplung .
a6b: 44 72 65 68 72 61 74 65 09 09 00 00 00 00 00 00 Drehrate........
 
00000a7b <p_limits>:
a7b: 01 08 02 01 08 02 01 08 02 01 08 02 01 08 02 01 ................
a8b: 08 02 01 08 02 01 08 02 00 00 00 00 ff 04 00 ff ................
a9b: 04 00 ff 04 00 ff 04 00 32 04 00 ff 04 00 06 03 ........2.......
aab: 00 40 03 00 14 03 00 20 08 21 fa 08 00 32 08 00 .@..... .!...2..
abb: ff 08 00 00 05 00 00 05 00 fa 08 00 fa 08 00 fa ................
acb: 08 00 01 00 00 ff 05 00 ff 09 00 ff 09 00 ff 09 ................
adb: 00 ff 09 00 ff 07 00 fa 07 00 fa 07 00 fa 07 00 ................
aeb: 19 07 00 ff 06 00 fa 06 00 fa 06 00 ff 0a 00 ff ................
afb: 0a 00 fa 06 00 fa 06 00 fa 05 00 fa 05 00 ff 05 ................
b0b: 00 ff 09 00 ff 09 00 ff 09 00 ff 09 00 00 01 00 ................
b1b: 01 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
 
00000b42 <p_menu_number>:
b42: 02 02 02 02 02 02 02 02 00 04 04 04 04 04 04 03 ................
b52: 03 03 08 08 08 08 05 05 08 08 08 00 05 09 09 09 ................
b62: 09 07 07 07 07 07 07 06 06 06 0a 0a 06 06 05 05 ................
b72: 05 09 09 09 09 00 07 0b 0b 0b 0b 0c 0c 0c 0c 0c ................
b82: 0c 0c 0c ...
 
00000b85 <p_menus>:
b85: 43 6f 6e 66 69 67 20 20 20 20 00 43 68 61 6e 6e Config .Chann
b95: 65 6c 73 20 20 00 53 74 69 63 6b 20 20 20 20 20 els .Stick
ba5: 00 48 6f 65 68 65 20 20 20 20 20 00 47 79 72 6f .Hoehe .Gyro
bb5: 20 20 20 20 20 20 00 4c 6f 6f 70 69 6e 67 20 20 .Looping
bc5: 20 00 43 61 6d 65 72 61 20 20 20 20 00 53 6f 6e .Camera .Son
bd5: 73 74 69 67 65 73 20 00 55 73 65 72 20 20 20 20 stiges .User
be5: 20 20 00 43 6f 75 70 6c 69 6e 67 20 20 00 43 6f .Coupling .Co
bf5: 6e 66 69 67 28 32 29 20 00 4c 6f 6f 70 69 6e 67 nfig(2) .Looping
c05: 73 65 74 00 set.
 
00000c09 <__c.11>:
c09: 2d 00 -.
 
00000c0b <__c.12>:
c0b: 2d 00 -.
 
00000c0d <__c.13>:
c0d: 2d 00 -.
 
00000c0f <__c.0>:
c0f: 4c 61 64 65 20 50 61 72 61 6d 65 74 65 72 0d 0a Lade Parameter..
...
 
00000c20 <__c.1>:
c20: 20 31 3a 0d 0a 00 1:...
 
00000c26 <__c.2>:
c26: 20 32 3a 0d 0a 00 2:...
 
00000c2c <__c.3>:
c2c: 20 33 3a 0d 0a 00 3:...
 
00000c32 <__c.4>:
c32: 20 34 3a 0d 0a 00 4:...
 
00000c38 <__c.5>:
c38: 20 35 3a 0d 0a 00 5:...
 
00000c3e <__c.6>:
c3e: 54 69 6d 65 6f 75 74 00 Timeout.
 
00000c46 <__c.7>:
c46: 50 61 72 61 6d 65 74 65 72 20 73 70 65 69 63 68 Parameter speich
c56: 65 72 6e 3f 0d 0a 20 20 6a 61 0d 0a 20 20 6e 65 ern?.. ja.. ne
c66: 69 6e 00 in.
 
00000c69 <__c.8>:
c69: 0d 0a 2d 2d 2d 3e 00 ..--->.
 
00000c70 <__c.9>:
c70: 0d 0a 50 61 72 61 6d 65 74 65 72 20 67 65 73 70 ..Parameter gesp
c80: 65 69 63 68 65 72 74 00 eichert.
 
00000c88 <__c.10>:
c88: 0d 0a 4e 69 63 68 74 20 67 65 73 70 65 69 63 68 ..Nicht gespeich
c98: 65 72 74 00 ert.
 
00000c9c <__c.4>:
c9c: 20 00 .
 
00000c9e <__c.5>:
c9e: 2a 00 *.
 
00000ca0 <__c.0>:
ca0: 48 61 75 70 74 6d 65 6e fc 28 42 45 54 41 20 56 Hauptmen.(BETA V
cb0: 30 2e 31 29 0d 0a 00 0.1)...
 
00000cb7 <__c.1>:
cb7: 0d 0a 44 69 73 70 6c 61 79 0d 0a 00 ..Display...
 
00000cc3 <__c.2>:
cc3: 50 61 72 61 6d 65 74 65 72 0d 0a 00 Parameter...
 
00000ccf <__c.3>:
ccf: 4d 6f 74 6f 72 74 65 73 74 00 Motortest.
 
00000cd9 <__c.0>:
cd9: 44 69 73 70 6c 61 79 00 Display.
 
00000ce1 <__c.1>:
ce1: 0d 0a 54 69 6d 65 6f 75 74 21 00 ..Timeout!.
 
00000cec <__c.0>:
cec: 54 61 73 74 65 20 64 72 fc 63 6b 65 6e 0d 0a 00 Taste dr.cken...
 
00000cfc <__init>:
cfc: 11 24 eor r1, r1
cfe: 1f be out 0x3f, r1 ; 63
d00: cf e5 ldi r28, 0x5F ; 95
d02: d8 e0 ldi r29, 0x08 ; 8
d04: de bf out 0x3e, r29 ; 62
d06: cd bf out 0x3d, r28 ; 61
 
00000d08 <__do_copy_data>:
d08: 10 e0 ldi r17, 0x00 ; 0
d0a: a0 e6 ldi r26, 0x60 ; 96
d0c: b0 e0 ldi r27, 0x00 ; 0
d0e: ec e6 ldi r30, 0x6C ; 108
d10: f6 e2 ldi r31, 0x26 ; 38
d12: 02 c0 rjmp .+4 ; 0xd18 <.do_copy_data_start>
 
00000d14 <.do_copy_data_loop>:
d14: 05 90 lpm r0, Z+
d16: 0d 92 st X+, r0
 
00000d18 <.do_copy_data_start>:
d18: a0 36 cpi r26, 0x60 ; 96
d1a: b1 07 cpc r27, r17
d1c: d9 f7 brne .-10 ; 0xd14 <.do_copy_data_loop>
 
00000d1e <__do_clear_bss>:
d1e: 15 e0 ldi r17, 0x05 ; 5
d20: a0 e6 ldi r26, 0x60 ; 96
d22: b0 e0 ldi r27, 0x00 ; 0
d24: 01 c0 rjmp .+2 ; 0xd28 <.do_clear_bss_start>
 
00000d26 <.do_clear_bss_loop>:
d26: 1d 92 st X+, r1
 
00000d28 <.do_clear_bss_start>:
d28: a7 38 cpi r26, 0x87 ; 135
d2a: b1 07 cpc r27, r17
d2c: e1 f7 brne .-8 ; 0xd26 <.do_clear_bss_loop>
d2e: 0c 94 9b 06 jmp 0xd36 <main>
 
00000d32 <__bad_interrupt>:
d32: 0c 94 00 00 jmp 0x0 <__vectors>
 
00000d36 <main>:
#include "timer.h"
 
 
int main (void)
{
d36: cf e5 ldi r28, 0x5F ; 95
d38: d8 e0 ldi r29, 0x08 ; 8
d3a: de bf out 0x3e, r29 ; 62
d3c: cd bf out 0x3d, r28 ; 61
PORTA = 0xFF; // unbenutzte Pins auf Pull-Up
d3e: 8f ef ldi r24, 0xFF ; 255
d40: 8b bb out 0x1b, r24 ; 27
PORTB = 0x43;
d42: 83 e4 ldi r24, 0x43 ; 67
d44: 88 bb out 0x18, r24 ; 24
PORTC = 0xFC;
d46: 8c ef ldi r24, 0xFC ; 252
d48: 85 bb out 0x15, r24 ; 21
PORTD = 0x7C;
d4a: 8c e7 ldi r24, 0x7C ; 124
d4c: 82 bb out 0x12, r24 ; 18
DDRC = 0x03; // Pins für Beleuchtung auf Ausgang
d4e: 83 e0 ldi r24, 0x03 ; 3
d50: 84 bb out 0x14, r24 ; 20
DDRD = 0x80;
d52: 80 e8 ldi r24, 0x80 ; 128
d54: 81 bb out 0x11, r24 ; 17
 
lcd_init();
d56: 0e 94 53 07 call 0xea6 <lcd_init>
RS232_init();
d5a: 0e 94 1a 0c call 0x1834 <RS232_init>
timer_init();
d5e: 0e 94 f4 06 call 0xde8 <timer_init>
sei();
d62: 78 94 sei
 
for (;;)
main_menu();
d64: 0e 94 c8 11 call 0x2390 <main_menu>
d68: fd cf rjmp .-6 ; 0xd64 <main+0x2e>
 
00000d6a <__vector_10>:
volatile uint8_t rs232_timer;
 
 
ISR(SIG_OUTPUT_COMPARE0) // Timer-Interrupt (100 Hz)
{
d6a: 1f 92 push r1
d6c: 0f 92 push r0
d6e: 0f b6 in r0, 0x3f ; 63
d70: 0f 92 push r0
d72: 11 24 eor r1, r1
d74: 8f 93 push r24
d76: 9f 93 push r25
if (counter > 0)
d78: 80 91 e4 04 lds r24, 0x04E4
d7c: 88 23 and r24, r24
d7e: 31 f0 breq .+12 ; 0xd8c <__vector_10+0x22>
counter --;
d80: 80 91 e4 04 lds r24, 0x04E4
d84: 81 50 subi r24, 0x01 ; 1
d86: 80 93 e4 04 sts 0x04E4, r24
d8a: 15 c0 rjmp .+42 ; 0xdb6 <__vector_10+0x4c>
else
{
counter = 10;
d8c: 8a e0 ldi r24, 0x0A ; 10
d8e: 80 93 e4 04 sts 0x04E4, r24
key = (~PINA >> 4) & 0x0F;
d92: 89 b3 in r24, 0x19 ; 25
d94: 99 27 eor r25, r25
d96: 80 95 com r24
d98: 90 95 com r25
d9a: 68 94 set
d9c: 13 f8 bld r1, 3
d9e: 95 95 asr r25
da0: 87 95 ror r24
da2: 16 94 lsr r1
da4: e1 f7 brne .-8 ; 0xd9e <__vector_10+0x34>
da6: 8f 70 andi r24, 0x0F ; 15
da8: 80 93 e6 04 sts 0x04E6, r24
counter2 ++;
dac: 80 91 69 05 lds r24, 0x0569
db0: 8f 5f subi r24, 0xFF ; 255
db2: 80 93 69 05 sts 0x0569, r24
}
if (timer > 0)
db6: 80 91 61 00 lds r24, 0x0061
dba: 88 23 and r24, r24
dbc: 29 f0 breq .+10 ; 0xdc8 <__vector_10+0x5e>
timer --;
dbe: 80 91 61 00 lds r24, 0x0061
dc2: 81 50 subi r24, 0x01 ; 1
dc4: 80 93 61 00 sts 0x0061, r24
if (rs232_timer > 0)
dc8: 80 91 e5 04 lds r24, 0x04E5
dcc: 88 23 and r24, r24
dce: 29 f0 breq .+10 ; 0xdda <__vector_10+0x70>
rs232_timer --;
dd0: 80 91 e5 04 lds r24, 0x04E5
dd4: 81 50 subi r24, 0x01 ; 1
dd6: 80 93 e5 04 sts 0x04E5, r24
dda: 9f 91 pop r25
ddc: 8f 91 pop r24
dde: 0f 90 pop r0
de0: 0f be out 0x3f, r0 ; 63
de2: 0f 90 pop r0
de4: 1f 90 pop r1
de6: 18 95 reti
 
00000de8 <timer_init>:
}
 
void timer_init (void)
{
TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024
de8: 8d e0 ldi r24, 0x0D ; 13
dea: 83 bf out 0x33, r24 ; 51
OCR0 = 72; // Interrupt 100Hz für 7,372800 MHz-Quarz
dec: 88 e4 ldi r24, 0x48 ; 72
dee: 8c bf out 0x3c, r24 ; 60
TIMSK |= (1<<OCIE0); // Interrupt freigeben für OCR
df0: 89 b7 in r24, 0x39 ; 57
df2: 82 60 ori r24, 0x02 ; 2
df4: 89 bf out 0x39, r24 ; 57
df6: 08 95 ret
 
00000df8 <send_byte>:
 
 
void send_byte (uint8_t data)
{
clr_cs();
df8: c4 98 cbi 0x18, 4 ; 24
SPDR = data;
dfa: 8f b9 out 0x0f, r24 ; 15
while(!(SPSR & (1<<SPIF)));
dfc: 77 9b sbis 0x0e, 7 ; 14
dfe: fe cf rjmp .-4 ; 0xdfc <send_byte+0x4>
SPSR = SPSR;
e00: 8e b1 in r24, 0x0e ; 14
e02: 8e b9 out 0x0e, r24 ; 14
set_cs();
e04: c4 9a sbi 0x18, 4 ; 24
e06: 08 95 ret
 
00000e08 <cls>:
}
 
void cls (void)
{
e08: 0f 93 push r16
e0a: 1f 93 push r17
e0c: cf 93 push r28
e0e: df 93 push r29
e10: 82 e6 ldi r24, 0x62 ; 98
e12: 90 e0 ldi r25, 0x00 ; 0
e14: fc 01 movw r30, r24
uint16_t i,j;
for (i=0;i<1024;i++)
display_buffer[i] = 0x00;
e16: 11 92 st Z+, r1
e18: 01 96 adiw r24, 0x01 ; 1
e1a: 24 e0 ldi r18, 0x04 ; 4
e1c: 81 36 cpi r24, 0x61 ; 97
e1e: 92 07 cpc r25, r18
e20: d1 f3 breq .-12 ; 0xe16 <cls+0xe>
e22: c8 f3 brcs .-14 ; 0xe16 <cls+0xe>
for (i=0;i<8;i++)
e24: 00 e0 ldi r16, 0x00 ; 0
e26: 10 e0 ldi r17, 0x00 ; 0
{
clr_A0();
e28: c3 98 cbi 0x18, 3 ; 24
send_byte(0xB0+i);
e2a: 80 2f mov r24, r16
e2c: 80 55 subi r24, 0x50 ; 80
e2e: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x10);
e32: 80 e1 ldi r24, 0x10 ; 16
e34: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x04);
e38: 84 e0 ldi r24, 0x04 ; 4
e3a: 0e 94 fc 06 call 0xdf8 <send_byte>
set_A0();
e3e: c3 9a sbi 0x18, 3 ; 24
e40: cf e7 ldi r28, 0x7F ; 127
e42: d0 e0 ldi r29, 0x00 ; 0
for (j=0;j<128;j++)
send_byte(0x00);
e44: 80 e0 ldi r24, 0x00 ; 0
e46: 0e 94 fc 06 call 0xdf8 <send_byte>
e4a: 21 97 sbiw r28, 0x01 ; 1
e4c: d7 ff sbrs r29, 7
e4e: fa cf rjmp .-12 ; 0xe44 <cls+0x3c>
e50: 0f 5f subi r16, 0xFF ; 255
e52: 1f 4f sbci r17, 0xFF ; 255
e54: 08 30 cpi r16, 0x08 ; 8
e56: 11 05 cpc r17, r1
e58: 38 f3 brcs .-50 ; 0xe28 <cls+0x20>
}
lcd_xpos = 0;
e5a: 10 92 6a 05 sts 0x056A, r1
lcd_ypos = 0;
e5e: 10 92 6b 05 sts 0x056B, r1
e62: df 91 pop r29
e64: cf 91 pop r28
e66: 1f 91 pop r17
e68: 0f 91 pop r16
e6a: 08 95 ret
 
00000e6c <lcd_cls>:
}
 
void lcd_cls (void)
{
cls();
e6c: 0e 94 04 07 call 0xe08 <cls>
e70: 08 95 ret
 
00000e72 <wait_1ms>:
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
e72: 83 e3 ldi r24, 0x33 ; 51
e74: 97 e0 ldi r25, 0x07 ; 7
e76: 01 97 sbiw r24, 0x01 ; 1
e78: f1 f7 brne .-4 ; 0xe76 <wait_1ms+0x4>
e7a: 08 95 ret
 
00000e7c <wait_ms>:
}
 
void wait_1ms(void)
{
_delay_ms (1.0);
}
 
void wait_ms (uint16_t time)
{
e7c: 0f 93 push r16
e7e: 1f 93 push r17
e80: cf 93 push r28
e82: df 93 push r29
e84: 8c 01 movw r16, r24
uint16_t i;
for (i=0; i<time; i++)
e86: c0 e0 ldi r28, 0x00 ; 0
e88: d0 e0 ldi r29, 0x00 ; 0
e8a: c8 17 cp r28, r24
e8c: d9 07 cpc r29, r25
e8e: 30 f4 brcc .+12 ; 0xe9c <wait_ms+0x20>
wait_1ms();
e90: 0e 94 39 07 call 0xe72 <wait_1ms>
e94: 21 96 adiw r28, 0x01 ; 1
e96: c0 17 cp r28, r16
e98: d1 07 cpc r29, r17
e9a: d0 f3 brcs .-12 ; 0xe90 <wait_ms+0x14>
e9c: df 91 pop r29
e9e: cf 91 pop r28
ea0: 1f 91 pop r17
ea2: 0f 91 pop r16
ea4: 08 95 ret
 
00000ea6 <lcd_init>:
}
 
void lcd_init (void)
{
lcd_xpos = 0;
ea6: 10 92 6a 05 sts 0x056A, r1
lcd_ypos = 0;
eaa: 10 92 6b 05 sts 0x056B, r1
DDRB = 0xFF;
eae: 8f ef ldi r24, 0xFF ; 255
eb0: 87 bb out 0x17, r24 ; 23
SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1);
eb2: 8e e5 ldi r24, 0x5E ; 94
eb4: 8d b9 out 0x0d, r24 ; 13
set_cs();
eb6: c4 9a sbi 0x18, 4 ; 24
clr_reset();
eb8: c2 98 cbi 0x18, 2 ; 24
wait_ms(10);
eba: 8a e0 ldi r24, 0x0A ; 10
ebc: 90 e0 ldi r25, 0x00 ; 0
ebe: 0e 94 3e 07 call 0xe7c <wait_ms>
set_reset();
ec2: c2 9a sbi 0x18, 2 ; 24
clr_cs();
ec4: c4 98 cbi 0x18, 4 ; 24
clr_A0();
ec6: c3 98 cbi 0x18, 3 ; 24
send_byte(0x40);
ec8: 80 e4 ldi r24, 0x40 ; 64
eca: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xA0); // A1
ece: 80 ea ldi r24, 0xA0 ; 160
ed0: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xC8); // C0
ed4: 88 ec ldi r24, 0xC8 ; 200
ed6: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xA6);
eda: 86 ea ldi r24, 0xA6 ; 166
edc: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xA2);
ee0: 82 ea ldi r24, 0xA2 ; 162
ee2: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x2F);
ee6: 8f e2 ldi r24, 0x2F ; 47
ee8: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xF8);
eec: 88 ef ldi r24, 0xF8 ; 248
eee: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x00);
ef2: 80 e0 ldi r24, 0x00 ; 0
ef4: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x27);
ef8: 87 e2 ldi r24, 0x27 ; 39
efa: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x81);
efe: 81 e8 ldi r24, 0x81 ; 129
f00: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x16);
f04: 86 e1 ldi r24, 0x16 ; 22
f06: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xAC);
f0a: 8c ea ldi r24, 0xAC ; 172
f0c: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0x00);
f10: 80 e0 ldi r24, 0x00 ; 0
f12: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(0xAF);
f16: 8f ea ldi r24, 0xAF ; 175
f18: 0e 94 fc 06 call 0xdf8 <send_byte>
cls();
f1c: 0e 94 04 07 call 0xe08 <cls>
f20: 08 95 ret
 
00000f22 <set_adress>:
 
}
 
void set_adress (uint16_t adress, uint8_t data)
{
f22: ff 92 push r15
f24: 0f 93 push r16
f26: 1f 93 push r17
f28: 8c 01 movw r16, r24
f2a: f6 2e mov r15, r22
uint8_t page;
uint8_t column;
page = adress >> 7;
f2c: 88 0f add r24, r24
f2e: 89 2f mov r24, r25
f30: 88 1f adc r24, r24
f32: 99 0b sbc r25, r25
f34: 91 95 neg r25
clr_A0();
f36: c3 98 cbi 0x18, 3 ; 24
send_byte(0xB0 + page);
f38: 80 55 subi r24, 0x50 ; 80
f3a: 0e 94 fc 06 call 0xdf8 <send_byte>
column = (adress & 0x7F) + 4;
f3e: 10 2f mov r17, r16
f40: 1f 77 andi r17, 0x7F ; 127
f42: 1c 5f subi r17, 0xFC ; 252
send_byte(0x10 + (column >> 4));
f44: 81 2f mov r24, r17
f46: 82 95 swap r24
f48: 8f 70 andi r24, 0x0F ; 15
f4a: 80 5f subi r24, 0xF0 ; 240
f4c: 0e 94 fc 06 call 0xdf8 <send_byte>
send_byte(column & 0x0F);
f50: 81 2f mov r24, r17
f52: 8f 70 andi r24, 0x0F ; 15
f54: 0e 94 fc 06 call 0xdf8 <send_byte>
set_A0();
f58: c3 9a sbi 0x18, 3 ; 24
send_byte(data);
f5a: 8f 2d mov r24, r15
f5c: 0e 94 fc 06 call 0xdf8 <send_byte>
f60: 1f 91 pop r17
f62: 0f 91 pop r16
f64: ff 90 pop r15
f66: 08 95 ret
 
00000f68 <scroll>:
}
 
void scroll (void)
{
f68: ef 92 push r14
f6a: ff 92 push r15
f6c: 0f 93 push r16
f6e: 1f 93 push r17
f70: cf 93 push r28
f72: df 93 push r29
uint16_t adress;
for (adress=0;adress<896;adress++)
f74: c0 e0 ldi r28, 0x00 ; 0
f76: d0 e0 ldi r29, 0x00 ; 0
f78: 32 ee ldi r19, 0xE2 ; 226
f7a: e3 2e mov r14, r19
f7c: 30 e0 ldi r19, 0x00 ; 0
f7e: f3 2e mov r15, r19
f80: 87 01 movw r16, r14
f82: 00 58 subi r16, 0x80 ; 128
f84: 10 40 sbci r17, 0x00 ; 0
{
display_buffer[adress] = display_buffer[adress+128];
f86: f7 01 movw r30, r14
f88: 81 91 ld r24, Z+
f8a: 7f 01 movw r14, r30
f8c: f8 01 movw r30, r16
f8e: 80 83 st Z, r24
set_adress(adress,display_buffer[adress]);
f90: 61 91 ld r22, Z+
f92: 8f 01 movw r16, r30
f94: ce 01 movw r24, r28
f96: 0e 94 91 07 call 0xf22 <set_adress>
f9a: 21 96 adiw r28, 0x01 ; 1
f9c: f3 e0 ldi r31, 0x03 ; 3
f9e: c0 38 cpi r28, 0x80 ; 128
fa0: df 07 cpc r29, r31
fa2: 88 f3 brcs .-30 ; 0xf86 <scroll+0x1e>
fa4: c0 e8 ldi r28, 0x80 ; 128
fa6: d3 e0 ldi r29, 0x03 ; 3
fa8: 02 ee ldi r16, 0xE2 ; 226
faa: 13 e0 ldi r17, 0x03 ; 3
}
for (adress=896;adress<1024;adress++)
{
display_buffer[adress] = 0;
fac: f8 01 movw r30, r16
fae: 11 92 st Z+, r1
fb0: 8f 01 movw r16, r30
set_adress(adress,0);
fb2: 60 e0 ldi r22, 0x00 ; 0
fb4: ce 01 movw r24, r28
fb6: 0e 94 91 07 call 0xf22 <set_adress>
fba: 21 96 adiw r28, 0x01 ; 1
fbc: f4 e0 ldi r31, 0x04 ; 4
fbe: c0 30 cpi r28, 0x00 ; 0
fc0: df 07 cpc r29, r31
fc2: a0 f3 brcs .-24 ; 0xfac <scroll+0x44>
fc4: df 91 pop r29
fc6: cf 91 pop r28
fc8: 1f 91 pop r17
fca: 0f 91 pop r16
fcc: ff 90 pop r15
fce: ef 90 pop r14
fd0: 08 95 ret
 
00000fd2 <put_char>:
}
}
 
//
// x,y = character-Pos. !
//
// mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete
void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode)
{
fd2: bf 92 push r11
fd4: cf 92 push r12
fd6: df 92 push r13
fd8: ef 92 push r14
fda: ff 92 push r15
fdc: 0f 93 push r16
fde: 1f 93 push r17
fe0: cf 93 push r28
fe2: df 93 push r29
fe4: 38 2f mov r19, r24
fe6: f4 2e mov r15, r20
fe8: b2 2e mov r11, r18
uint8_t ch;
uint8_t i;
uint16_t adress;
 
switch(c)
fea: 84 2f mov r24, r20
fec: 99 27 eor r25, r25
fee: 8f 3d cpi r24, 0xDF ; 223
ff0: 91 05 cpc r25, r1
ff2: 89 f1 breq .+98 ; 0x1056 <put_char+0x84>
ff4: 80 3e cpi r24, 0xE0 ; 224
ff6: 91 05 cpc r25, r1
ff8: 74 f4 brge .+28 ; 0x1016 <put_char+0x44>
ffa: 86 3d cpi r24, 0xD6 ; 214
ffc: 91 05 cpc r25, r1
ffe: 29 f1 breq .+74 ; 0x104a <put_char+0x78>
1000: 87 3d cpi r24, 0xD7 ; 215
1002: 91 05 cpc r25, r1
1004: 24 f4 brge .+8 ; 0x100e <put_char+0x3c>
1006: 84 3c cpi r24, 0xC4 ; 196
1008: 91 05 cpc r25, r1
100a: e1 f0 breq .+56 ; 0x1044 <put_char+0x72>
100c: 26 c0 rjmp .+76 ; 0x105a <put_char+0x88>
100e: 8c 3d cpi r24, 0xDC ; 220
1010: 91 05 cpc r25, r1
1012: f1 f0 breq .+60 ; 0x1050 <put_char+0x7e>
1014: 22 c0 rjmp .+68 ; 0x105a <put_char+0x88>
1016: 86 3f cpi r24, 0xF6 ; 246
1018: 91 05 cpc r25, r1
101a: 71 f0 breq .+28 ; 0x1038 <put_char+0x66>
101c: 87 3f cpi r24, 0xF7 ; 247
101e: 91 05 cpc r25, r1
1020: 24 f4 brge .+8 ; 0x102a <put_char+0x58>
1022: 84 3e cpi r24, 0xE4 ; 228
1024: 91 05 cpc r25, r1
1026: 29 f0 breq .+10 ; 0x1032 <put_char+0x60>
1028: 18 c0 rjmp .+48 ; 0x105a <put_char+0x88>
102a: 8c 3f cpi r24, 0xFC ; 252
102c: 91 05 cpc r25, r1
102e: 39 f0 breq .+14 ; 0x103e <put_char+0x6c>
1030: 14 c0 rjmp .+40 ; 0x105a <put_char+0x88>
{
case 'ä':
c = 0x84;
1032: 14 e8 ldi r17, 0x84 ; 132
1034: f1 2e mov r15, r17
break;
1036: 11 c0 rjmp .+34 ; 0x105a <put_char+0x88>
case 'ö':
c = 0x94;
1038: c4 e9 ldi r28, 0x94 ; 148
103a: fc 2e mov r15, r28
break;
103c: 0e c0 rjmp .+28 ; 0x105a <put_char+0x88>
case 'ü':
c = 0x81;
103e: b1 e8 ldi r27, 0x81 ; 129
1040: fb 2e mov r15, r27
break;
1042: 0b c0 rjmp .+22 ; 0x105a <put_char+0x88>
case 'Ä':
c = 0x8E;
1044: ae e8 ldi r26, 0x8E ; 142
1046: fa 2e mov r15, r26
break;
1048: 08 c0 rjmp .+16 ; 0x105a <put_char+0x88>
case 'Ö':
c = 0x99;
104a: f9 e9 ldi r31, 0x99 ; 153
104c: ff 2e mov r15, r31
break;
104e: 05 c0 rjmp .+10 ; 0x105a <put_char+0x88>
case 'Ü':
c = 0x9A;
1050: ea e9 ldi r30, 0x9A ; 154
1052: fe 2e mov r15, r30
break;
1054: 02 c0 rjmp .+4 ; 0x105a <put_char+0x88>
case 'ß':
c = 0xE1;
1056: 71 ee ldi r23, 0xE1 ; 225
1058: f7 2e mov r15, r23
break;
}
adress = y*128 + x*6;
105a: c6 2f mov r28, r22
105c: dd 27 eor r29, r29
105e: d6 95 lsr r29
1060: dc 2f mov r29, r28
1062: cc 27 eor r28, r28
1064: d7 95 ror r29
1066: c7 95 ror r28
1068: 86 e0 ldi r24, 0x06 ; 6
106a: 38 9f mul r19, r24
106c: c0 01 movw r24, r0
106e: 11 24 eor r1, r1
1070: c8 0f add r28, r24
1072: d9 1f adc r29, r25
adress &= 0x3FF;
1074: d3 70 andi r29, 0x03 ; 3
1076: 6e 01 movw r12, r28
1078: 00 e0 ldi r16, 0x00 ; 0
107a: 10 e0 ldi r17, 0x00 ; 0
107c: 45 e0 ldi r20, 0x05 ; 5
107e: e4 2e mov r14, r20
for (i=0;i<6;i++)
{
ch = pgm_read_byte (&f8x6[0][0] + i + c * 6);
1080: 86 e0 ldi r24, 0x06 ; 6
1082: f8 9e mul r15, r24
1084: f0 01 movw r30, r0
1086: 11 24 eor r1, r1
1088: e0 0f add r30, r16
108a: f1 1f adc r31, r17
108c: ec 5a subi r30, 0xAC ; 172
108e: ff 4f sbci r31, 0xFF ; 255
1090: 24 91 lpm r18, Z
switch (mode)
1092: 8b 2d mov r24, r11
1094: 99 27 eor r25, r25
1096: 82 30 cpi r24, 0x02 ; 2
1098: 91 05 cpc r25, r1
109a: e9 f0 breq .+58 ; 0x10d6 <put_char+0x104>
109c: 83 30 cpi r24, 0x03 ; 3
109e: 91 05 cpc r25, r1
10a0: 2c f4 brge .+10 ; 0x10ac <put_char+0xda>
10a2: 00 97 sbiw r24, 0x00 ; 0
10a4: 49 f0 breq .+18 ; 0x10b8 <put_char+0xe6>
10a6: 01 97 sbiw r24, 0x01 ; 1
10a8: 71 f0 breq .+28 ; 0x10c6 <put_char+0xf4>
10aa: 2c c0 rjmp .+88 ; 0x1104 <put_char+0x132>
10ac: 83 30 cpi r24, 0x03 ; 3
10ae: 91 05 cpc r25, r1
10b0: d1 f0 breq .+52 ; 0x10e6 <put_char+0x114>
10b2: 04 97 sbiw r24, 0x04 ; 4
10b4: f1 f0 breq .+60 ; 0x10f2 <put_char+0x120>
10b6: 26 c0 rjmp .+76 ; 0x1104 <put_char+0x132>
{
case 0:
display_buffer[adress+i] = ch;
10b8: fe 01 movw r30, r28
10ba: ee 59 subi r30, 0x9E ; 158
10bc: ff 4f sbci r31, 0xFF ; 255
10be: e0 0f add r30, r16
10c0: f1 1f adc r31, r17
10c2: 20 83 st Z, r18
break;
10c4: 1f c0 rjmp .+62 ; 0x1104 <put_char+0x132>
case 1:
display_buffer[adress+i] |= ch;
10c6: fe 01 movw r30, r28
10c8: ee 59 subi r30, 0x9E ; 158
10ca: ff 4f sbci r31, 0xFF ; 255
10cc: e0 0f add r30, r16
10ce: f1 1f adc r31, r17
10d0: 80 81 ld r24, Z
10d2: 82 2b or r24, r18
10d4: 16 c0 rjmp .+44 ; 0x1102 <put_char+0x130>
break;
case 2:
display_buffer[adress+i] ^= ch;
10d6: fe 01 movw r30, r28
10d8: ee 59 subi r30, 0x9E ; 158
10da: ff 4f sbci r31, 0xFF ; 255
10dc: e0 0f add r30, r16
10de: f1 1f adc r31, r17
10e0: 80 81 ld r24, Z
10e2: 82 27 eor r24, r18
10e4: 0e c0 rjmp .+28 ; 0x1102 <put_char+0x130>
break;
case 3:
display_buffer[adress+i] &= ch;
10e6: fe 01 movw r30, r28
10e8: ee 59 subi r30, 0x9E ; 158
10ea: ff 4f sbci r31, 0xFF ; 255
10ec: e0 0f add r30, r16
10ee: f1 1f adc r31, r17
10f0: 06 c0 rjmp .+12 ; 0x10fe <put_char+0x12c>
break;
case 4:
display_buffer[adress+i] &= ~ch;
10f2: fe 01 movw r30, r28
10f4: ee 59 subi r30, 0x9E ; 158
10f6: ff 4f sbci r31, 0xFF ; 255
10f8: e0 0f add r30, r16
10fa: f1 1f adc r31, r17
10fc: 20 95 com r18
10fe: 80 81 ld r24, Z
1100: 82 23 and r24, r18
1102: 80 83 st Z, r24
break;
}
set_adress(adress+i,display_buffer[adress+i]);
1104: fe 01 movw r30, r28
1106: ee 59 subi r30, 0x9E ; 158
1108: ff 4f sbci r31, 0xFF ; 255
110a: e0 0f add r30, r16
110c: f1 1f adc r31, r17
110e: 60 81 ld r22, Z
1110: c6 01 movw r24, r12
1112: 0e 94 91 07 call 0xf22 <set_adress>
1116: ea 94 dec r14
1118: 0f 5f subi r16, 0xFF ; 255
111a: 1f 4f sbci r17, 0xFF ; 255
111c: 08 94 sec
111e: c1 1c adc r12, r1
1120: d1 1c adc r13, r1
1122: e7 fe sbrs r14, 7
1124: ad cf rjmp .-166 ; 0x1080 <put_char+0xae>
1126: df 91 pop r29
1128: cf 91 pop r28
112a: 1f 91 pop r17
112c: 0f 91 pop r16
112e: ff 90 pop r15
1130: ef 90 pop r14
1132: df 90 pop r13
1134: cf 90 pop r12
1136: bf 90 pop r11
1138: 08 95 ret
 
0000113a <new_line>:
}
}
 
void new_line (void)
{
lcd_ypos++;
113a: 80 91 6b 05 lds r24, 0x056B
113e: 8f 5f subi r24, 0xFF ; 255
1140: 80 93 6b 05 sts 0x056B, r24
if (lcd_ypos > 7)
1144: 88 30 cpi r24, 0x08 ; 8
1146: 28 f0 brcs .+10 ; 0x1152 <new_line+0x18>
{
scroll();
1148: 0e 94 b4 07 call 0xf68 <scroll>
lcd_ypos = 7;
114c: 87 e0 ldi r24, 0x07 ; 7
114e: 80 93 6b 05 sts 0x056B, r24
1152: 08 95 ret
 
00001154 <lcd_printp>:
}
}
 
 
void lcd_printp (const char *text, uint8_t mode)
{
1154: 1f 93 push r17
1156: cf 93 push r28
1158: df 93 push r29
115a: ec 01 movw r28, r24
115c: 16 2f mov r17, r22
while (pgm_read_byte(text))
{
if (pgm_read_byte(text) > 0x1F)
{
put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode);
lcd_xpos++;
if (lcd_xpos > 20)
{
lcd_xpos = 0;
new_line();
}
}
else
{
switch (pgm_read_byte(text))
{
case 0x0D:
lcd_xpos = 0;
break;
case 0x0A:
new_line();
break;
}
text++;
115e: fc 01 movw r30, r24
1160: 84 91 lpm r24, Z
1162: 88 23 and r24, r24
1164: 51 f1 breq .+84 ; 0x11ba <lcd_printp+0x66>
1166: fe 01 movw r30, r28
1168: 84 91 lpm r24, Z
116a: 80 32 cpi r24, 0x20 ; 32
116c: b0 f0 brcs .+44 ; 0x119a <lcd_printp+0x46>
116e: 21 96 adiw r28, 0x01 ; 1
1170: 84 91 lpm r24, Z
1172: 21 2f mov r18, r17
1174: 48 2f mov r20, r24
1176: 60 91 6b 05 lds r22, 0x056B
117a: 80 91 6a 05 lds r24, 0x056A
117e: 0e 94 e9 07 call 0xfd2 <put_char>
1182: 80 91 6a 05 lds r24, 0x056A
1186: 8f 5f subi r24, 0xFF ; 255
1188: 80 93 6a 05 sts 0x056A, r24
118c: 85 31 cpi r24, 0x15 ; 21
118e: 88 f0 brcs .+34 ; 0x11b2 <lcd_printp+0x5e>
1190: 10 92 6a 05 sts 0x056A, r1
1194: 0e 94 9d 08 call 0x113a <new_line>
1198: 0c c0 rjmp .+24 ; 0x11b2 <lcd_printp+0x5e>
119a: 99 27 eor r25, r25
119c: 8a 30 cpi r24, 0x0A ; 10
119e: 91 05 cpc r25, r1
11a0: 29 f0 breq .+10 ; 0x11ac <lcd_printp+0x58>
11a2: 0d 97 sbiw r24, 0x0d ; 13
11a4: 29 f4 brne .+10 ; 0x11b0 <lcd_printp+0x5c>
11a6: 10 92 6a 05 sts 0x056A, r1
11aa: 02 c0 rjmp .+4 ; 0x11b0 <lcd_printp+0x5c>
11ac: 0e 94 9d 08 call 0x113a <new_line>
11b0: 21 96 adiw r28, 0x01 ; 1
11b2: fe 01 movw r30, r28
11b4: 84 91 lpm r24, Z
11b6: 88 23 and r24, r24
11b8: b1 f6 brne .-84 ; 0x1166 <lcd_printp+0x12>
11ba: df 91 pop r29
11bc: cf 91 pop r28
11be: 1f 91 pop r17
11c0: 08 95 ret
 
000011c2 <lcd_print_atp>:
}
}
}
 
void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode)
{
lcd_xpos = x;
11c2: 80 93 6a 05 sts 0x056A, r24
lcd_ypos = y;
11c6: 60 93 6b 05 sts 0x056B, r22
lcd_printp (text, mode);
11ca: 62 2f mov r22, r18
11cc: ca 01 movw r24, r20
11ce: 0e 94 aa 08 call 0x1154 <lcd_printp>
11d2: 08 95 ret
 
000011d4 <lcd_print>:
}
 
 
void lcd_print (uint8_t *text, uint8_t mode)
{
11d4: 1f 93 push r17
11d6: cf 93 push r28
11d8: df 93 push r29
11da: ec 01 movw r28, r24
11dc: 16 2f mov r17, r22
while (*text)
{
if (*text > 0x1F)
{
put_char(lcd_xpos,lcd_ypos,*text++,mode);
lcd_xpos++;
if (lcd_xpos > 20)
{
lcd_xpos = 0;
new_line();
}
}
else
{
switch (*text)
{
case 0x0D:
lcd_xpos = 0;
break;
case 0x0A:
new_line();
break;
}
text++;
11de: 88 81 ld r24, Y
11e0: 88 23 and r24, r24
11e2: 39 f1 breq .+78 ; 0x1232 <lcd_print+0x5e>
11e4: 48 81 ld r20, Y
11e6: 40 32 cpi r20, 0x20 ; 32
11e8: a0 f0 brcs .+40 ; 0x1212 <lcd_print+0x3e>
11ea: 21 96 adiw r28, 0x01 ; 1
11ec: 21 2f mov r18, r17
11ee: 60 91 6b 05 lds r22, 0x056B
11f2: 80 91 6a 05 lds r24, 0x056A
11f6: 0e 94 e9 07 call 0xfd2 <put_char>
11fa: 80 91 6a 05 lds r24, 0x056A
11fe: 8f 5f subi r24, 0xFF ; 255
1200: 80 93 6a 05 sts 0x056A, r24
1204: 85 31 cpi r24, 0x15 ; 21
1206: 90 f0 brcs .+36 ; 0x122c <lcd_print+0x58>
1208: 10 92 6a 05 sts 0x056A, r1
120c: 0e 94 9d 08 call 0x113a <new_line>
1210: 0d c0 rjmp .+26 ; 0x122c <lcd_print+0x58>
1212: 55 27 eor r21, r21
1214: 4a 30 cpi r20, 0x0A ; 10
1216: 51 05 cpc r21, r1
1218: 31 f0 breq .+12 ; 0x1226 <lcd_print+0x52>
121a: 4d 30 cpi r20, 0x0D ; 13
121c: 51 05 cpc r21, r1
121e: 29 f4 brne .+10 ; 0x122a <lcd_print+0x56>
1220: 10 92 6a 05 sts 0x056A, r1
1224: 02 c0 rjmp .+4 ; 0x122a <lcd_print+0x56>
1226: 0e 94 9d 08 call 0x113a <new_line>
122a: 21 96 adiw r28, 0x01 ; 1
122c: 88 81 ld r24, Y
122e: 88 23 and r24, r24
1230: c9 f6 brne .-78 ; 0x11e4 <lcd_print+0x10>
1232: df 91 pop r29
1234: cf 91 pop r28
1236: 1f 91 pop r17
1238: 08 95 ret
 
0000123a <lcd_print_at>:
}
}
}
 
void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode)
{
lcd_xpos = x;
123a: 80 93 6a 05 sts 0x056A, r24
lcd_ypos = y;
123e: 60 93 6b 05 sts 0x056B, r22
lcd_print(text, mode);
1242: 62 2f mov r22, r18
1244: ca 01 movw r24, r20
1246: 0e 94 ea 08 call 0x11d4 <lcd_print>
124a: 08 95 ret
 
0000124c <lcd_plot>:
}
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Plot (set one Pixel)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// mode:
// 0=Clear, 1=Set, 2=XOR
void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode)
{
124c: 98 2f mov r25, r24
uint16_t adress;
uint8_t mask;
if ((xpos < 128) && (ypos < 64))
124e: 87 fd sbrc r24, 7
1250: 45 c0 rjmp .+138 ; 0x12dc <lcd_plot+0x90>
1252: 60 34 cpi r22, 0x40 ; 64
1254: 08 f0 brcs .+2 ; 0x1258 <lcd_plot+0xc>
1256: 42 c0 rjmp .+132 ; 0x12dc <lcd_plot+0x90>
{
adress = (ypos/8) * 128 + xpos; // adress = 0/8 * 128 + 0 = 0
1258: 86 2f mov r24, r22
125a: 86 95 lsr r24
125c: 86 95 lsr r24
125e: 86 95 lsr r24
1260: a8 2f mov r26, r24
1262: bb 27 eor r27, r27
1264: b6 95 lsr r27
1266: ba 2f mov r27, r26
1268: aa 27 eor r26, r26
126a: b7 95 ror r27
126c: a7 95 ror r26
126e: a9 0f add r26, r25
1270: b1 1d adc r27, r1
mask = 1<<(ypos & 0x07); // mask = 1<<0 = 1
1272: 26 2f mov r18, r22
1274: 33 27 eor r19, r19
1276: 27 70 andi r18, 0x07 ; 7
1278: 30 70 andi r19, 0x00 ; 0
127a: 81 e0 ldi r24, 0x01 ; 1
127c: 90 e0 ldi r25, 0x00 ; 0
127e: 02 c0 rjmp .+4 ; 0x1284 <lcd_plot+0x38>
1280: 88 0f add r24, r24
1282: 99 1f adc r25, r25
1284: 2a 95 dec r18
1286: e2 f7 brpl .-8 ; 0x1280 <lcd_plot+0x34>
1288: 98 2f mov r25, r24
adress &= 0x3FF;
128a: b3 70 andi r27, 0x03 ; 3
switch (mode)
128c: 55 27 eor r21, r21
128e: 41 30 cpi r20, 0x01 ; 1
1290: 51 05 cpc r21, r1
1292: 89 f0 breq .+34 ; 0x12b6 <lcd_plot+0x6a>
1294: 42 30 cpi r20, 0x02 ; 2
1296: 51 05 cpc r21, r1
1298: 1c f4 brge .+6 ; 0x12a0 <lcd_plot+0x54>
129a: 45 2b or r20, r21
129c: 29 f0 breq .+10 ; 0x12a8 <lcd_plot+0x5c>
129e: 17 c0 rjmp .+46 ; 0x12ce <lcd_plot+0x82>
12a0: 42 30 cpi r20, 0x02 ; 2
12a2: 51 05 cpc r21, r1
12a4: 71 f0 breq .+28 ; 0x12c2 <lcd_plot+0x76>
12a6: 13 c0 rjmp .+38 ; 0x12ce <lcd_plot+0x82>
{
case 0:
display_buffer[adress] &=~mask;
12a8: fd 01 movw r30, r26
12aa: ee 59 subi r30, 0x9E ; 158
12ac: ff 4f sbci r31, 0xFF ; 255
12ae: 90 95 com r25
12b0: 80 81 ld r24, Z
12b2: 89 23 and r24, r25
12b4: 0b c0 rjmp .+22 ; 0x12cc <lcd_plot+0x80>
break;
case 1:
display_buffer[adress] |= mask;
12b6: fd 01 movw r30, r26
12b8: ee 59 subi r30, 0x9E ; 158
12ba: ff 4f sbci r31, 0xFF ; 255
12bc: 80 81 ld r24, Z
12be: 89 2b or r24, r25
12c0: 05 c0 rjmp .+10 ; 0x12cc <lcd_plot+0x80>
break;
case 2:
display_buffer[adress] ^= mask;
12c2: fd 01 movw r30, r26
12c4: ee 59 subi r30, 0x9E ; 158
12c6: ff 4f sbci r31, 0xFF ; 255
12c8: 80 81 ld r24, Z
12ca: 89 27 eor r24, r25
12cc: 80 83 st Z, r24
break;
}
set_adress(adress,display_buffer[adress]);
12ce: fd 01 movw r30, r26
12d0: ee 59 subi r30, 0x9E ; 158
12d2: ff 4f sbci r31, 0xFF ; 255
12d4: 60 81 ld r22, Z
12d6: cd 01 movw r24, r26
12d8: 0e 94 91 07 call 0xf22 <set_adress>
12dc: 08 95 ret
 
000012de <lcd_line>:
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Line (draws a line from x1,y1 to x2,y2
// + Based on Bresenham line-Algorithm
// + found in the internet, modified by thkais 2007
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode)
 
{
12de: 2f 92 push r2
12e0: 3f 92 push r3
12e2: 4f 92 push r4
12e4: 5f 92 push r5
12e6: 6f 92 push r6
12e8: 7f 92 push r7
12ea: 8f 92 push r8
12ec: 9f 92 push r9
12ee: af 92 push r10
12f0: bf 92 push r11
12f2: cf 92 push r12
12f4: df 92 push r13
12f6: ef 92 push r14
12f8: ff 92 push r15
12fa: 0f 93 push r16
12fc: 1f 93 push r17
12fe: cf 93 push r28
1300: df 93 push r29
1302: cd b7 in r28, 0x3d ; 61
1304: de b7 in r29, 0x3e ; 62
1306: 23 97 sbiw r28, 0x03 ; 3
1308: 0f b6 in r0, 0x3f ; 63
130a: f8 94 cli
130c: de bf out 0x3e, r29 ; 62
130e: 0f be out 0x3f, r0 ; 63
1310: cd bf out 0x3d, r28 ; 61
1312: 09 83 std Y+1, r16 ; 0x01
int x,y,count,xs,ys,xm,ym;
 
x=(int)x1;
1314: a8 2e mov r10, r24
1316: bb 24 eor r11, r11
y=(int)y1;
1318: c6 2e mov r12, r22
131a: dd 24 eor r13, r13
xs=(int)x2 - (int)x1;
131c: 64 2e mov r6, r20
131e: 77 24 eor r7, r7
1320: 73 01 movw r14, r6
1322: ea 18 sub r14, r10
1324: fb 08 sbc r15, r11
ys=(int)y2 - (int)y1;
1326: 82 2e mov r8, r18
1328: 99 24 eor r9, r9
132a: 84 01 movw r16, r8
132c: 0c 19 sub r16, r12
132e: 1d 09 sbc r17, r13
if(xs < 0)
1330: f7 fe sbrs r15, 7
1332: 04 c0 rjmp .+8 ; 0x133c <lcd_line+0x5e>
xm= -1;
1334: 7f ef ldi r23, 0xFF ; 255
1336: 27 2e mov r2, r23
1338: 37 2e mov r3, r23
133a: 09 c0 rjmp .+18 ; 0x134e <lcd_line+0x70>
else
if(xs > 0)
133c: 1e 14 cp r1, r14
133e: 1f 04 cpc r1, r15
1340: 24 f4 brge .+8 ; 0x134a <lcd_line+0x6c>
xm= 1;
1342: 61 e0 ldi r22, 0x01 ; 1
1344: 26 2e mov r2, r22
1346: 31 2c mov r3, r1
1348: 02 c0 rjmp .+4 ; 0x134e <lcd_line+0x70>
else
xm= 0;
134a: 22 24 eor r2, r2
134c: 33 24 eor r3, r3
if(ys < 0)
134e: 17 ff sbrs r17, 7
1350: 04 c0 rjmp .+8 ; 0x135a <lcd_line+0x7c>
ym= -1;
1352: 5f ef ldi r21, 0xFF ; 255
1354: 45 2e mov r4, r21
1356: 55 2e mov r5, r21
1358: 09 c0 rjmp .+18 ; 0x136c <lcd_line+0x8e>
else
if(ys > 0)
135a: 10 16 cp r1, r16
135c: 11 06 cpc r1, r17
135e: 24 f4 brge .+8 ; 0x1368 <lcd_line+0x8a>
ym= 1;
1360: 41 e0 ldi r20, 0x01 ; 1
1362: 44 2e mov r4, r20
1364: 51 2c mov r5, r1
1366: 02 c0 rjmp .+4 ; 0x136c <lcd_line+0x8e>
else
ym= 0;
1368: 44 24 eor r4, r4
136a: 55 24 eor r5, r5
if(xs < 0)
136c: f7 fe sbrs r15, 7
136e: 04 c0 rjmp .+8 ; 0x1378 <lcd_line+0x9a>
xs= -xs;
1370: f0 94 com r15
1372: e1 94 neg r14
1374: f1 08 sbc r15, r1
1376: f3 94 inc r15
if(ys < 0)
1378: 17 ff sbrs r17, 7
137a: 03 c0 rjmp .+6 ; 0x1382 <lcd_line+0xa4>
ys= -ys;
137c: 10 95 com r17
137e: 01 95 neg r16
1380: 1f 4f sbci r17, 0xFF ; 255
 
lcd_plot((unsigned char)x, (unsigned char)y, mode);
1382: 49 81 ldd r20, Y+1 ; 0x01
1384: 6c 2d mov r22, r12
1386: 8a 2d mov r24, r10
1388: 0e 94 26 09 call 0x124c <lcd_plot>
 
if(xs > ys) // Flat Line <45 degrees
138c: 0e 15 cp r16, r14
138e: 1f 05 cpc r17, r15
1390: 4c f5 brge .+82 ; 0x13e4 <lcd_line+0x106>
{
count= -(xs / 2);
1392: c7 01 movw r24, r14
1394: f7 fc sbrc r15, 7
1396: 01 96 adiw r24, 0x01 ; 1
1398: 95 95 asr r25
139a: 87 95 ror r24
139c: 22 27 eor r18, r18
139e: 33 27 eor r19, r19
13a0: 28 1b sub r18, r24
13a2: 39 0b sbc r19, r25
13a4: 3b 83 std Y+3, r19 ; 0x03
13a6: 2a 83 std Y+2, r18 ; 0x02
while(x != x2)
{
count= count + ys;
x= x + xm;
if(count > 0)
{
y= y + ym;
count= count - xs;
}
lcd_plot((unsigned char)x, (unsigned char)y, mode);
13a8: a6 14 cp r10, r6
13aa: b7 04 cpc r11, r7
13ac: 09 f4 brne .+2 ; 0x13b0 <lcd_line+0xd2>
13ae: 41 c0 rjmp .+130 ; 0x1432 <lcd_line+0x154>
13b0: 8a 81 ldd r24, Y+2 ; 0x02
13b2: 9b 81 ldd r25, Y+3 ; 0x03
13b4: 80 0f add r24, r16
13b6: 91 1f adc r25, r17
13b8: 9b 83 std Y+3, r25 ; 0x03
13ba: 8a 83 std Y+2, r24 ; 0x02
13bc: a2 0c add r10, r2
13be: b3 1c adc r11, r3
13c0: 18 16 cp r1, r24
13c2: 19 06 cpc r1, r25
13c4: 34 f4 brge .+12 ; 0x13d2 <lcd_line+0xf4>
13c6: c4 0c add r12, r4
13c8: d5 1c adc r13, r5
13ca: 8e 19 sub r24, r14
13cc: 9f 09 sbc r25, r15
13ce: 9b 83 std Y+3, r25 ; 0x03
13d0: 8a 83 std Y+2, r24 ; 0x02
13d2: 49 81 ldd r20, Y+1 ; 0x01
13d4: 6c 2d mov r22, r12
13d6: 8a 2d mov r24, r10
13d8: 0e 94 26 09 call 0x124c <lcd_plot>
13dc: a6 14 cp r10, r6
13de: b7 04 cpc r11, r7
13e0: 39 f7 brne .-50 ; 0x13b0 <lcd_line+0xd2>
13e2: 27 c0 rjmp .+78 ; 0x1432 <lcd_line+0x154>
}
}
else // Line >=45 degrees
{
count=- (ys / 2);
13e4: c8 01 movw r24, r16
13e6: 17 fd sbrc r17, 7
13e8: 01 96 adiw r24, 0x01 ; 1
13ea: 95 95 asr r25
13ec: 87 95 ror r24
13ee: ee 27 eor r30, r30
13f0: ff 27 eor r31, r31
13f2: e8 1b sub r30, r24
13f4: f9 0b sbc r31, r25
13f6: fb 83 std Y+3, r31 ; 0x03
13f8: ea 83 std Y+2, r30 ; 0x02
while(y != y2)
{
count= count + xs;
y= y + ym;
if(count > 0)
{
x= x + xm;
count= count - ys;
}
lcd_plot((unsigned char)x, (unsigned char)y, mode);
13fa: c8 14 cp r12, r8
13fc: d9 04 cpc r13, r9
13fe: c9 f0 breq .+50 ; 0x1432 <lcd_line+0x154>
1400: 2a 81 ldd r18, Y+2 ; 0x02
1402: 3b 81 ldd r19, Y+3 ; 0x03
1404: 2e 0d add r18, r14
1406: 3f 1d adc r19, r15
1408: 3b 83 std Y+3, r19 ; 0x03
140a: 2a 83 std Y+2, r18 ; 0x02
140c: c4 0c add r12, r4
140e: d5 1c adc r13, r5
1410: 12 16 cp r1, r18
1412: 13 06 cpc r1, r19
1414: 34 f4 brge .+12 ; 0x1422 <lcd_line+0x144>
1416: a2 0c add r10, r2
1418: b3 1c adc r11, r3
141a: 20 1b sub r18, r16
141c: 31 0b sbc r19, r17
141e: 3b 83 std Y+3, r19 ; 0x03
1420: 2a 83 std Y+2, r18 ; 0x02
1422: 49 81 ldd r20, Y+1 ; 0x01
1424: 6c 2d mov r22, r12
1426: 8a 2d mov r24, r10
1428: 0e 94 26 09 call 0x124c <lcd_plot>
142c: c8 14 cp r12, r8
142e: d9 04 cpc r13, r9
1430: 39 f7 brne .-50 ; 0x1400 <lcd_line+0x122>
1432: 23 96 adiw r28, 0x03 ; 3
1434: 0f b6 in r0, 0x3f ; 63
1436: f8 94 cli
1438: de bf out 0x3e, r29 ; 62
143a: 0f be out 0x3f, r0 ; 63
143c: cd bf out 0x3d, r28 ; 61
143e: df 91 pop r29
1440: cf 91 pop r28
1442: 1f 91 pop r17
1444: 0f 91 pop r16
1446: ff 90 pop r15
1448: ef 90 pop r14
144a: df 90 pop r13
144c: cf 90 pop r12
144e: bf 90 pop r11
1450: af 90 pop r10
1452: 9f 90 pop r9
1454: 8f 90 pop r8
1456: 7f 90 pop r7
1458: 6f 90 pop r6
145a: 5f 90 pop r5
145c: 4f 90 pop r4
145e: 3f 90 pop r3
1460: 2f 90 pop r2
1462: 08 95 ret
 
00001464 <lcd_frect>:
}
}
}
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Filled rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
1464: bf 92 push r11
1466: cf 92 push r12
1468: df 92 push r13
146a: ef 92 push r14
146c: ff 92 push r15
146e: 0f 93 push r16
1470: 1f 93 push r17
1472: cf 93 push r28
1474: df 93 push r29
1476: 18 2f mov r17, r24
1478: 82 2f mov r24, r18
147a: b0 2e mov r11, r16
uint16_t x2, y2;
uint16_t i;
 
if (x1 >= DISP_W)
147c: 17 fd sbrc r17, 7
x1 = DISP_W - 1;
147e: 1f e7 ldi r17, 0x7F ; 127
if (y1 >= DISP_H)
1480: 60 34 cpi r22, 0x40 ; 64
1482: 08 f0 brcs .+2 ; 0x1486 <lcd_frect+0x22>
y1 = DISP_H - 1;
1484: 6f e3 ldi r22, 0x3F ; 63
x2 = x1 + widthx;
1486: 21 2f mov r18, r17
1488: 24 0f add r18, r20
148a: 31 2d mov r19, r1
148c: 31 1d adc r19, r1
148e: 69 01 movw r12, r18
y2 = y1 + widthy;
1490: 26 2f mov r18, r22
1492: 33 27 eor r19, r19
1494: 79 01 movw r14, r18
1496: e8 0e add r14, r24
1498: f1 1c adc r15, r1
if (x2 > DISP_W)
149a: 81 e8 ldi r24, 0x81 ; 129
149c: c8 16 cp r12, r24
149e: d1 04 cpc r13, r1
14a0: 18 f0 brcs .+6 ; 0x14a8 <lcd_frect+0x44>
x2 = DISP_W;
14a2: f0 e8 ldi r31, 0x80 ; 128
14a4: cf 2e mov r12, r31
14a6: d1 2c mov r13, r1
if (y2 > DISP_H)
14a8: 81 e4 ldi r24, 0x41 ; 65
14aa: e8 16 cp r14, r24
14ac: f1 04 cpc r15, r1
14ae: 18 f0 brcs .+6 ; 0x14b6 <lcd_frect+0x52>
y2 = DISP_H;
14b0: e0 e4 ldi r30, 0x40 ; 64
14b2: ee 2e mov r14, r30
14b4: f1 2c mov r15, r1
for (i=y1;i<=y2;i++)
14b6: e9 01 movw r28, r18
14b8: e2 16 cp r14, r18
14ba: f3 06 cpc r15, r19
14bc: 58 f0 brcs .+22 ; 0x14d4 <lcd_frect+0x70>
{
lcd_line(x1,i,x2,i,mode);
14be: 0b 2d mov r16, r11
14c0: 2c 2f mov r18, r28
14c2: 4c 2d mov r20, r12
14c4: 6c 2f mov r22, r28
14c6: 81 2f mov r24, r17
14c8: 0e 94 6f 09 call 0x12de <lcd_line>
14cc: 21 96 adiw r28, 0x01 ; 1
14ce: ec 16 cp r14, r28
14d0: fd 06 cpc r15, r29
14d2: a8 f7 brcc .-22 ; 0x14be <lcd_frect+0x5a>
14d4: df 91 pop r29
14d6: cf 91 pop r28
14d8: 1f 91 pop r17
14da: 0f 91 pop r16
14dc: ff 90 pop r15
14de: ef 90 pop r14
14e0: df 90 pop r13
14e2: cf 90 pop r12
14e4: bf 90 pop r11
14e6: 08 95 ret
 
000014e8 <lcd_rect>:
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
14e8: cf 92 push r12
14ea: df 92 push r13
14ec: ef 92 push r14
14ee: ff 92 push r15
14f0: 0f 93 push r16
14f2: 1f 93 push r17
14f4: cf 93 push r28
14f6: df 93 push r29
14f8: d8 2e mov r13, r24
14fa: 16 2f mov r17, r22
14fc: c0 2e mov r12, r16
uint16_t x2, y2;
 
if (x1 >= DISP_W)
14fe: 87 ff sbrs r24, 7
1500: 02 c0 rjmp .+4 ; 0x1506 <lcd_rect+0x1e>
x1 = DISP_W - 1;
1502: bf e7 ldi r27, 0x7F ; 127
1504: db 2e mov r13, r27
if (y1 >= DISP_H)
1506: 10 34 cpi r17, 0x40 ; 64
1508: 08 f0 brcs .+2 ; 0x150c <lcd_rect+0x24>
y1 = DISP_H - 1;
150a: 1f e3 ldi r17, 0x3F ; 63
x2 = x1 + widthx;
150c: 8d 2d mov r24, r13
150e: 84 0f add r24, r20
1510: 91 2d mov r25, r1
1512: 91 1d adc r25, r1
1514: ec 01 movw r28, r24
y2 = y1 + widthy;
1516: 81 2f mov r24, r17
1518: 82 0f add r24, r18
151a: 91 2d mov r25, r1
151c: 91 1d adc r25, r1
151e: 7c 01 movw r14, r24
if (x2 > DISP_W)
1520: c1 38 cpi r28, 0x81 ; 129
1522: d1 05 cpc r29, r1
1524: 10 f0 brcs .+4 ; 0x152a <lcd_rect+0x42>
x2 = DISP_W;
1526: c0 e8 ldi r28, 0x80 ; 128
1528: d0 e0 ldi r29, 0x00 ; 0
if (y2 > DISP_H)
152a: 91 e4 ldi r25, 0x41 ; 65
152c: e9 16 cp r14, r25
152e: f1 04 cpc r15, r1
1530: 18 f0 brcs .+6 ; 0x1538 <lcd_rect+0x50>
y2 = DISP_H;
1532: a0 e4 ldi r26, 0x40 ; 64
1534: ea 2e mov r14, r26
1536: f1 2c mov r15, r1
 
lcd_line (x1, y1, x2, y1, mode);
1538: 0c 2d mov r16, r12
153a: 21 2f mov r18, r17
153c: 4c 2f mov r20, r28
153e: 61 2f mov r22, r17
1540: 8d 2d mov r24, r13
1542: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line (x2, y1, x2, y2, mode);
1546: 2e 2d mov r18, r14
1548: 4c 2f mov r20, r28
154a: 61 2f mov r22, r17
154c: 8c 2f mov r24, r28
154e: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line (x2, y2, x1, y2, mode);
1552: 2e 2d mov r18, r14
1554: 4d 2d mov r20, r13
1556: 6e 2d mov r22, r14
1558: 8c 2f mov r24, r28
155a: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line (x1, y2, x1, y1, mode);
155e: 21 2f mov r18, r17
1560: 4d 2d mov r20, r13
1562: 6e 2d mov r22, r14
1564: 8d 2d mov r24, r13
1566: 0e 94 6f 09 call 0x12de <lcd_line>
156a: df 91 pop r29
156c: cf 91 pop r28
156e: 1f 91 pop r17
1570: 0f 91 pop r16
1572: ff 90 pop r15
1574: ef 90 pop r14
1576: df 90 pop r13
1578: cf 90 pop r12
157a: 08 95 ret
 
0000157c <draw_circle>:
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of a circle
// + Based on Bresenham-algorithm found in wikipedia
// + modified by thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 
void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode)
{
157c: 2f 92 push r2
157e: 3f 92 push r3
1580: 4f 92 push r4
1582: 5f 92 push r5
1584: 6f 92 push r6
1586: 7f 92 push r7
1588: 8f 92 push r8
158a: 9f 92 push r9
158c: af 92 push r10
158e: bf 92 push r11
1590: cf 92 push r12
1592: df 92 push r13
1594: ef 92 push r14
1596: ff 92 push r15
1598: 0f 93 push r16
159a: 1f 93 push r17
159c: cf 93 push r28
159e: df 93 push r29
15a0: 5c 01 movw r10, r24
15a2: 6b 01 movw r12, r22
15a4: e2 2e mov r14, r18
int16_t f = 1 - radius;
15a6: c1 e0 ldi r28, 0x01 ; 1
15a8: 8c 2e mov r8, r28
15aa: 91 2c mov r9, r1
15ac: 84 1a sub r8, r20
15ae: 95 0a sbc r9, r21
int16_t ddF_x = 0;
15b0: 22 24 eor r2, r2
15b2: 33 24 eor r3, r3
int16_t ddF_y = -2 * radius;
15b4: 8e ef ldi r24, 0xFE ; 254
15b6: 9f ef ldi r25, 0xFF ; 255
15b8: 48 9f mul r20, r24
15ba: 20 01 movw r4, r0
15bc: 49 9f mul r20, r25
15be: 50 0c add r5, r0
15c0: 58 9f mul r21, r24
15c2: 50 0c add r5, r0
15c4: 11 24 eor r1, r1
int16_t x = 0;
15c6: 31 01 movw r6, r2
int16_t y = radius;
15c8: ea 01 movw r28, r20
 
lcd_plot(x0, y0 + radius, mode);
15ca: 86 2f mov r24, r22
15cc: 84 0f add r24, r20
15ce: 42 2f mov r20, r18
15d0: 68 2f mov r22, r24
15d2: 8a 2d mov r24, r10
15d4: 0e 94 26 09 call 0x124c <lcd_plot>
lcd_plot(x0, y0 - radius, mode);
15d8: 8c 2d mov r24, r12
15da: 8c 1b sub r24, r28
15dc: 4e 2d mov r20, r14
15de: 68 2f mov r22, r24
15e0: 8a 2d mov r24, r10
15e2: 0e 94 26 09 call 0x124c <lcd_plot>
lcd_plot(x0 + radius, y0, mode);
15e6: 4e 2d mov r20, r14
15e8: 6c 2d mov r22, r12
15ea: 8a 2d mov r24, r10
15ec: 8c 0f add r24, r28
15ee: 0e 94 26 09 call 0x124c <lcd_plot>
lcd_plot(x0 - radius, y0, mode);
15f2: 4e 2d mov r20, r14
15f4: 6c 2d mov r22, r12
15f6: 8a 2d mov r24, r10
15f8: 8c 1b sub r24, r28
15fa: 0e 94 26 09 call 0x124c <lcd_plot>
 
while(x < y)
{
if(f >= 0)
{
y --;
ddF_y += 2;
f += ddF_y;
}
x ++;
ddF_x += 2;
f += ddF_x + 1;
 
lcd_plot(x0 + x, y0 + y, mode);
lcd_plot(x0 - x, y0 + y, mode);
lcd_plot(x0 + x, y0 - y, mode);
lcd_plot(x0 - x, y0 - y, mode);
lcd_plot(x0 + y, y0 + x, mode);
lcd_plot(x0 - y, y0 + x, mode);
lcd_plot(x0 + y, y0 - x, mode);
lcd_plot(x0 - y, y0 - x, mode);
15fe: 2c 16 cp r2, r28
1600: 3d 06 cpc r3, r29
1602: 0c f0 brlt .+2 ; 0x1606 <draw_circle+0x8a>
1604: 51 c0 rjmp .+162 ; 0x16a8 <draw_circle+0x12c>
1606: 97 fc sbrc r9, 7
1608: 07 c0 rjmp .+14 ; 0x1618 <draw_circle+0x9c>
160a: 21 97 sbiw r28, 0x01 ; 1
160c: 82 e0 ldi r24, 0x02 ; 2
160e: 90 e0 ldi r25, 0x00 ; 0
1610: 48 0e add r4, r24
1612: 59 1e adc r5, r25
1614: 84 0c add r8, r4
1616: 95 1c adc r9, r5
1618: 08 94 sec
161a: 61 1c adc r6, r1
161c: 71 1c adc r7, r1
161e: 82 e0 ldi r24, 0x02 ; 2
1620: 90 e0 ldi r25, 0x00 ; 0
1622: 28 0e add r2, r24
1624: 39 1e adc r3, r25
1626: 82 0c add r8, r2
1628: 93 1c adc r9, r3
162a: 08 94 sec
162c: 81 1c adc r8, r1
162e: 91 1c adc r9, r1
1630: 1c 2d mov r17, r12
1632: 1c 0f add r17, r28
1634: fa 2c mov r15, r10
1636: f6 0c add r15, r6
1638: 4e 2d mov r20, r14
163a: 61 2f mov r22, r17
163c: 8f 2d mov r24, r15
163e: 0e 94 26 09 call 0x124c <lcd_plot>
1642: 0a 2d mov r16, r10
1644: 06 19 sub r16, r6
1646: 4e 2d mov r20, r14
1648: 61 2f mov r22, r17
164a: 80 2f mov r24, r16
164c: 0e 94 26 09 call 0x124c <lcd_plot>
1650: 1c 2d mov r17, r12
1652: 1c 1b sub r17, r28
1654: 4e 2d mov r20, r14
1656: 61 2f mov r22, r17
1658: 8f 2d mov r24, r15
165a: 0e 94 26 09 call 0x124c <lcd_plot>
165e: 4e 2d mov r20, r14
1660: 61 2f mov r22, r17
1662: 80 2f mov r24, r16
1664: 0e 94 26 09 call 0x124c <lcd_plot>
1668: 1c 2d mov r17, r12
166a: 16 0d add r17, r6
166c: fa 2c mov r15, r10
166e: fc 0e add r15, r28
1670: 4e 2d mov r20, r14
1672: 61 2f mov r22, r17
1674: 8f 2d mov r24, r15
1676: 0e 94 26 09 call 0x124c <lcd_plot>
167a: 0a 2d mov r16, r10
167c: 0c 1b sub r16, r28
167e: 4e 2d mov r20, r14
1680: 61 2f mov r22, r17
1682: 80 2f mov r24, r16
1684: 0e 94 26 09 call 0x124c <lcd_plot>
1688: 1c 2d mov r17, r12
168a: 16 19 sub r17, r6
168c: 4e 2d mov r20, r14
168e: 61 2f mov r22, r17
1690: 8f 2d mov r24, r15
1692: 0e 94 26 09 call 0x124c <lcd_plot>
1696: 4e 2d mov r20, r14
1698: 61 2f mov r22, r17
169a: 80 2f mov r24, r16
169c: 0e 94 26 09 call 0x124c <lcd_plot>
16a0: 6c 16 cp r6, r28
16a2: 7d 06 cpc r7, r29
16a4: 0c f4 brge .+2 ; 0x16a8 <draw_circle+0x12c>
16a6: af cf rjmp .-162 ; 0x1606 <draw_circle+0x8a>
16a8: df 91 pop r29
16aa: cf 91 pop r28
16ac: 1f 91 pop r17
16ae: 0f 91 pop r16
16b0: ff 90 pop r15
16b2: ef 90 pop r14
16b4: df 90 pop r13
16b6: cf 90 pop r12
16b8: bf 90 pop r11
16ba: af 90 pop r10
16bc: 9f 90 pop r9
16be: 8f 90 pop r8
16c0: 7f 90 pop r7
16c2: 6f 90 pop r6
16c4: 5f 90 pop r5
16c6: 4f 90 pop r4
16c8: 3f 90 pop r3
16ca: 2f 90 pop r2
16cc: 08 95 ret
 
000016ce <draw_fcircle>:
}
}
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + filled Circle
// + modified circle-algorithm thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
void draw_fcircle(int16_t x0, int16_t y0, int16_t radius)
{
16ce: 2f 92 push r2
16d0: 3f 92 push r3
16d2: 4f 92 push r4
16d4: 5f 92 push r5
16d6: 6f 92 push r6
16d8: 7f 92 push r7
16da: 8f 92 push r8
16dc: 9f 92 push r9
16de: af 92 push r10
16e0: bf 92 push r11
16e2: cf 92 push r12
16e4: df 92 push r13
16e6: ff 92 push r15
16e8: 0f 93 push r16
16ea: 1f 93 push r17
16ec: cf 93 push r28
16ee: df 93 push r29
16f0: 5c 01 movw r10, r24
16f2: 6b 01 movw r12, r22
int16_t f = 1 - radius;
16f4: 11 e0 ldi r17, 0x01 ; 1
16f6: 61 2e mov r6, r17
16f8: 71 2c mov r7, r1
16fa: 64 1a sub r6, r20
16fc: 75 0a sbc r7, r21
int16_t ddF_x = 0;
16fe: 22 24 eor r2, r2
1700: 33 24 eor r3, r3
int16_t ddF_y = -2 * radius;
1702: 8e ef ldi r24, 0xFE ; 254
1704: 9f ef ldi r25, 0xFF ; 255
1706: 48 9f mul r20, r24
1708: 20 01 movw r4, r0
170a: 49 9f mul r20, r25
170c: 50 0c add r5, r0
170e: 58 9f mul r21, r24
1710: 50 0c add r5, r0
1712: 11 24 eor r1, r1
int16_t x = 0;
1714: 41 01 movw r8, r2
int16_t y = radius;
1716: ea 01 movw r28, r20
lcd_line(x0, y0 + radius,x0, y0 - radius,1);
1718: 86 2f mov r24, r22
171a: 84 1b sub r24, r20
171c: 96 2f mov r25, r22
171e: 94 0f add r25, r20
1720: 01 e0 ldi r16, 0x01 ; 1
1722: 28 2f mov r18, r24
1724: 4a 2d mov r20, r10
1726: 69 2f mov r22, r25
1728: 8a 2d mov r24, r10
172a: 0e 94 6f 09 call 0x12de <lcd_line>
lcd_line(x0 + radius, y0,x0 - radius, y0,1);
172e: 8a 2d mov r24, r10
1730: 8c 1b sub r24, r28
1732: 2c 2d mov r18, r12
1734: 48 2f mov r20, r24
1736: 6c 2d mov r22, r12
1738: 8a 2d mov r24, r10
173a: 8c 0f add r24, r28
173c: 0e 94 6f 09 call 0x12de <lcd_line>
while(x < y)
{
if(f >= 0)
{
y--;
ddF_y += 2;
f += ddF_y;
}
x++;
ddF_x += 2;
f += ddF_x + 1;
lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1);
lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1);
lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1);
lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1);
1740: 2c 16 cp r2, r28
1742: 3d 06 cpc r3, r29
1744: 0c f0 brlt .+2 ; 0x1748 <draw_fcircle+0x7a>
1746: 42 c0 rjmp .+132 ; 0x17cc <draw_fcircle+0xfe>
1748: 77 fc sbrc r7, 7
174a: 07 c0 rjmp .+14 ; 0x175a <draw_fcircle+0x8c>
174c: 21 97 sbiw r28, 0x01 ; 1
174e: 82 e0 ldi r24, 0x02 ; 2
1750: 90 e0 ldi r25, 0x00 ; 0
1752: 48 0e add r4, r24
1754: 59 1e adc r5, r25
1756: 64 0c add r6, r4
1758: 75 1c adc r7, r5
175a: 08 94 sec
175c: 81 1c adc r8, r1
175e: 91 1c adc r9, r1
1760: 82 e0 ldi r24, 0x02 ; 2
1762: 90 e0 ldi r25, 0x00 ; 0
1764: 28 0e add r2, r24
1766: 39 1e adc r3, r25
1768: 62 0c add r6, r2
176a: 73 1c adc r7, r3
176c: 08 94 sec
176e: 61 1c adc r6, r1
1770: 71 1c adc r7, r1
1772: 8c 2d mov r24, r12
1774: 8c 0f add r24, r28
1776: 1a 2d mov r17, r10
1778: 18 19 sub r17, r8
177a: fa 2c mov r15, r10
177c: f8 0c add r15, r8
177e: 01 e0 ldi r16, 0x01 ; 1
1780: 28 2f mov r18, r24
1782: 41 2f mov r20, r17
1784: 68 2f mov r22, r24
1786: 8f 2d mov r24, r15
1788: 0e 94 6f 09 call 0x12de <lcd_line>
178c: 8c 2d mov r24, r12
178e: 8c 1b sub r24, r28
1790: 28 2f mov r18, r24
1792: 41 2f mov r20, r17
1794: 68 2f mov r22, r24
1796: 8f 2d mov r24, r15
1798: 0e 94 6f 09 call 0x12de <lcd_line>
179c: 8c 2d mov r24, r12
179e: 88 0d add r24, r8
17a0: 1a 2d mov r17, r10
17a2: 1c 1b sub r17, r28
17a4: fa 2c mov r15, r10
17a6: fc 0e add r15, r28
17a8: 28 2f mov r18, r24
17aa: 41 2f mov r20, r17
17ac: 68 2f mov r22, r24
17ae: 8f 2d mov r24, r15
17b0: 0e 94 6f 09 call 0x12de <lcd_line>
17b4: 8c 2d mov r24, r12
17b6: 88 19 sub r24, r8
17b8: 28 2f mov r18, r24
17ba: 41 2f mov r20, r17
17bc: 68 2f mov r22, r24
17be: 8f 2d mov r24, r15
17c0: 0e 94 6f 09 call 0x12de <lcd_line>
17c4: 8c 16 cp r8, r28
17c6: 9d 06 cpc r9, r29
17c8: 0c f4 brge .+2 ; 0x17cc <draw_fcircle+0xfe>
17ca: be cf rjmp .-132 ; 0x1748 <draw_fcircle+0x7a>
17cc: df 91 pop r29
17ce: cf 91 pop r28
17d0: 1f 91 pop r17
17d2: 0f 91 pop r16
17d4: ff 90 pop r15
17d6: df 90 pop r13
17d8: cf 90 pop r12
17da: bf 90 pop r11
17dc: af 90 pop r10
17de: 9f 90 pop r9
17e0: 8f 90 pop r8
17e2: 7f 90 pop r7
17e4: 6f 90 pop r6
17e6: 5f 90 pop r5
17e8: 4f 90 pop r4
17ea: 3f 90 pop r3
17ec: 2f 90 pop r2
17ee: 08 95 ret
 
000017f0 <__vector_13>:
volatile uint8_t read_index, write_index;
volatile uint8_t rs232_buffer[16];
 
ISR(USART_RXC_vect)
{
17f0: 1f 92 push r1
17f2: 0f 92 push r0
17f4: 0f b6 in r0, 0x3f ; 63
17f6: 0f 92 push r0
17f8: 11 24 eor r1, r1
17fa: 8f 93 push r24
17fc: 9f 93 push r25
17fe: ef 93 push r30
1800: ff 93 push r31
rs232_buffer[write_index++] = UDR;
1802: 90 91 6c 05 lds r25, 0x056C
1806: ee e6 ldi r30, 0x6E ; 110
1808: f5 e0 ldi r31, 0x05 ; 5
180a: e9 0f add r30, r25
180c: f1 1d adc r31, r1
180e: 8c b1 in r24, 0x0c ; 12
1810: 80 83 st Z, r24
1812: 9f 5f subi r25, 0xFF ; 255
1814: 90 93 6c 05 sts 0x056C, r25
write_index &= 15;
1818: 80 91 6c 05 lds r24, 0x056C
181c: 8f 70 andi r24, 0x0F ; 15
181e: 80 93 6c 05 sts 0x056C, r24
1822: ff 91 pop r31
1824: ef 91 pop r30
1826: 9f 91 pop r25
1828: 8f 91 pop r24
182a: 0f 90 pop r0
182c: 0f be out 0x3f, r0 ; 63
182e: 0f 90 pop r0
1830: 1f 90 pop r1
1832: 18 95 reti
 
00001834 <RS232_init>:
}
 
void RS232_init (void)
{
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
1834: 88 e9 ldi r24, 0x98 ; 152
1836: 8a b9 out 0x0a, r24 ; 10
UBRRL = 7; // 57600 Baud @ 7,372800 MHz
1838: 87 e0 ldi r24, 0x07 ; 7
183a: 89 b9 out 0x09, r24 ; 9
183c: 08 95 ret
 
0000183e <RS232_get>:
}
 
uint8_t RS232_get (void)
{
uint8_t c;
 
rs232_timer = 10;
183e: 8a e0 ldi r24, 0x0A ; 10
1840: 80 93 e5 04 sts 0x04E5, r24
while ((read_index == write_index) && (rs232_timer > 0));
1844: 90 91 6d 05 lds r25, 0x056D
1848: 80 91 6c 05 lds r24, 0x056C
184c: 98 17 cp r25, r24
184e: 21 f4 brne .+8 ; 0x1858 <RS232_get+0x1a>
1850: 80 91 e5 04 lds r24, 0x04E5
1854: 88 23 and r24, r24
1856: b1 f7 brne .-20 ; 0x1844 <RS232_get+0x6>
if (rs232_timer != 0)
1858: 80 91 e5 04 lds r24, 0x04E5
185c: 88 23 and r24, r24
185e: 81 f0 breq .+32 ; 0x1880 <RS232_get+0x42>
{
c = rs232_buffer[read_index++];
1860: 80 91 6d 05 lds r24, 0x056D
1864: e8 2f mov r30, r24
1866: ff 27 eor r31, r31
1868: e2 59 subi r30, 0x92 ; 146
186a: fa 4f sbci r31, 0xFA ; 250
186c: 8f 5f subi r24, 0xFF ; 255
186e: 80 93 6d 05 sts 0x056D, r24
1872: e0 81 ld r30, Z
read_index &= 15;
1874: 80 91 6d 05 lds r24, 0x056D
1878: 8f 70 andi r24, 0x0F ; 15
187a: 80 93 6d 05 sts 0x056D, r24
187e: 01 c0 rjmp .+2 ; 0x1882 <RS232_get+0x44>
}
else
{
c=0;
1880: e8 2f mov r30, r24
}
return c;
}
1882: 8e 2f mov r24, r30
1884: 99 27 eor r25, r25
1886: 08 95 ret
 
00001888 <RS232_send>:
void RS232_send (uint8_t data)
{
while ((UCSRA & (1<<UDRE)) == 0);
1888: 5d 9b sbis 0x0b, 5 ; 11
188a: fe cf rjmp .-4 ; 0x1888 <RS232_send>
UDR = data;
188c: 8c b9 out 0x0c, r24 ; 12
188e: 08 95 ret
 
00001890 <RS232_text>:
}
void RS232_text (uint8_t *text)
{
1890: cf 93 push r28
1892: df 93 push r29
1894: ec 01 movw r28, r24
while (*text)
{
RS232_send(*text);
text++;
1896: 88 81 ld r24, Y
1898: 88 23 and r24, r24
189a: 31 f0 breq .+12 ; 0x18a8 <RS232_text+0x18>
189c: 89 91 ld r24, Y+
189e: 0e 94 44 0c call 0x1888 <RS232_send>
18a2: 88 81 ld r24, Y
18a4: 88 23 and r24, r24
18a6: d1 f7 brne .-12 ; 0x189c <RS232_text+0xc>
18a8: df 91 pop r29
18aa: cf 91 pop r28
18ac: 08 95 ret
 
000018ae <base64_decode>:
}
 
 
uint8_t base64_decode(uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um
{
18ae: a8 2f mov r26, r24
uint8_t p,q;
uint8_t a,b,c,d;
 
p = 2;
18b0: 62 e0 ldi r22, 0x02 ; 2
q = 0;
18b2: 70 e0 ldi r23, 0x00 ; 0
while (p < number)
{
a = r_buffer[p + 0] - 61;
b = r_buffer[p + 1] - 61;
c = r_buffer[p + 2] - 61;
d = r_buffer[p + 3] - 61;
p += 4;
p_buffer[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer
p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2);
p_buffer[q + 2] = ((c & 0x03) << 6) | d;
q += 3;
18b4: 6a 17 cp r22, r26
18b6: b0 f5 brcc .+108 ; 0x1924 <base64_decode+0x76>
18b8: e6 2f mov r30, r22
18ba: ff 27 eor r31, r31
18bc: e7 51 subi r30, 0x17 ; 23
18be: fb 4f sbci r31, 0xFB ; 251
18c0: 80 81 ld r24, Z
18c2: 8d 53 subi r24, 0x3D ; 61
18c4: 31 81 ldd r19, Z+1 ; 0x01
18c6: 3d 53 subi r19, 0x3D ; 61
18c8: 52 81 ldd r21, Z+2 ; 0x02
18ca: 5d 53 subi r21, 0x3D ; 61
18cc: 43 81 ldd r20, Z+3 ; 0x03
18ce: 4d 53 subi r20, 0x3D ; 61
18d0: 6c 5f subi r22, 0xFC ; 252
18d2: e7 2f mov r30, r23
18d4: ff 27 eor r31, r31
18d6: ed 59 subi r30, 0x9D ; 157
18d8: fb 4f sbci r31, 0xFB ; 251
18da: 99 27 eor r25, r25
18dc: 88 0f add r24, r24
18de: 99 1f adc r25, r25
18e0: 88 0f add r24, r24
18e2: 99 1f adc r25, r25
18e4: 23 2f mov r18, r19
18e6: 22 95 swap r18
18e8: 2f 70 andi r18, 0x0F ; 15
18ea: 28 2b or r18, r24
18ec: 20 83 st Z, r18
18ee: 83 2f mov r24, r19
18f0: 99 27 eor r25, r25
18f2: 8f 70 andi r24, 0x0F ; 15
18f4: 90 70 andi r25, 0x00 ; 0
18f6: 34 e0 ldi r19, 0x04 ; 4
18f8: 88 0f add r24, r24
18fa: 99 1f adc r25, r25
18fc: 3a 95 dec r19
18fe: e1 f7 brne .-8 ; 0x18f8 <base64_decode+0x4a>
1900: 25 2f mov r18, r21
1902: 26 95 lsr r18
1904: 26 95 lsr r18
1906: 28 2b or r18, r24
1908: 21 83 std Z+1, r18 ; 0x01
190a: 85 2f mov r24, r21
190c: 99 27 eor r25, r25
190e: 83 70 andi r24, 0x03 ; 3
1910: 90 70 andi r25, 0x00 ; 0
1912: 26 e0 ldi r18, 0x06 ; 6
1914: 88 0f add r24, r24
1916: 99 1f adc r25, r25
1918: 2a 95 dec r18
191a: e1 f7 brne .-8 ; 0x1914 <base64_decode+0x66>
191c: 48 2b or r20, r24
191e: 42 83 std Z+2, r20 ; 0x02
1920: 7d 5f subi r23, 0xFD ; 253
1922: c8 cf rjmp .-112 ; 0x18b4 <base64_decode+0x6>
}
return q; // Rückgabe der Anzahl der Datenbytes
}
1924: 87 2f mov r24, r23
1926: 99 27 eor r25, r25
1928: 08 95 ret
 
0000192a <get_message>:
192a: cf 93 push r28
192c: 84 e1 ldi r24, 0x14 ; 20
192e: 80 93 61 00 sts 0x0061, r24
1932: 0e 94 1f 0c call 0x183e <RS232_get>
1936: 83 32 cpi r24, 0x23 ; 35
1938: 21 f0 breq .+8 ; 0x1942 <get_message+0x18>
193a: 80 91 61 00 lds r24, 0x0061
193e: 88 23 and r24, r24
1940: c1 f7 brne .-16 ; 0x1932 <get_message+0x8>
1942: 80 91 61 00 lds r24, 0x0061
1946: 88 23 and r24, r24
1948: 99 f0 breq .+38 ; 0x1970 <get_message+0x46>
194a: c0 e0 ldi r28, 0x00 ; 0
194c: 0e 94 1f 0c call 0x183e <RS232_get>
1950: ec 2f mov r30, r28
1952: ff 27 eor r31, r31
1954: e7 51 subi r30, 0x17 ; 23
1956: fb 4f sbci r31, 0xFB ; 251
1958: 80 83 st Z, r24
195a: cf 5f subi r28, 0xFF ; 255
195c: c7 fd sbrc r28, 7
195e: cf e7 ldi r28, 0x7F ; 127
1960: 8d 30 cpi r24, 0x0D ; 13
1962: a1 f7 brne .-24 ; 0x194c <get_message+0x22>
1964: 8c 2f mov r24, r28
1966: 0e 94 57 0c call 0x18ae <base64_decode>
196a: 80 e0 ldi r24, 0x00 ; 0
196c: 90 e0 ldi r25, 0x00 ; 0
196e: 02 c0 rjmp .+4 ; 0x1974 <get_message+0x4a>
1970: 81 e0 ldi r24, 0x01 ; 1
1972: 90 e0 ldi r25, 0x00 ; 0
1974: cf 91 pop r28
1976: 08 95 ret
 
00001978 <base64_send>:
 
void base64_send(uint8_t number) // Sendet Daten zur Flight-Control
{ // Die Daten werden in p_buffer erwartet, umcodiert und gesendet
1978: ff 92 push r15
197a: 0f 93 push r16
197c: 1f 93 push r17
197e: cf 93 push r28
1980: a8 2f mov r26, r24
uint8_t bpointer,spointer;
uint8_t x,y,z,a;
uint16_t checksum;
 
r_buffer[0] = p_buffer[0];
1982: 80 91 63 04 lds r24, 0x0463
1986: 80 93 e9 04 sts 0x04E9, r24
r_buffer[1] = p_buffer[1];
198a: 80 91 64 04 lds r24, 0x0464
198e: 80 93 ea 04 sts 0x04EA, r24
r_buffer[2] = p_buffer[2];
1992: 80 91 65 04 lds r24, 0x0465
1996: 80 93 eb 04 sts 0x04EB, r24
 
bpointer = 3;
199a: 43 e0 ldi r20, 0x03 ; 3
199c: f4 2e mov r15, r20
spointer = 3;
199e: 7f 2d mov r23, r15
 
while (spointer < number)
{
x = p_buffer[spointer];
y = p_buffer[spointer + 1];
z = p_buffer[spointer + 2];
spointer += 3;
r_buffer[bpointer + 0] = (x >> 2) + 61;
r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61;
r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61;
r_buffer[bpointer + 3] = (z & 0x3F) + 61;
bpointer += 4;
19a0: fa 16 cp r15, r26
19a2: e0 f5 brcc .+120 ; 0x1a1c <base64_send+0xa4>
19a4: e7 2f mov r30, r23
19a6: ff 27 eor r31, r31
19a8: ed 59 subi r30, 0x9D ; 157
19aa: fb 4f sbci r31, 0xFB ; 251
19ac: 90 81 ld r25, Z
19ae: 21 81 ldd r18, Z+1 ; 0x01
19b0: 62 81 ldd r22, Z+2 ; 0x02
19b2: 7d 5f subi r23, 0xFD ; 253
19b4: ef 2d mov r30, r15
19b6: ff 27 eor r31, r31
19b8: e7 51 subi r30, 0x17 ; 23
19ba: fb 4f sbci r31, 0xFB ; 251
19bc: 89 2f mov r24, r25
19be: 86 95 lsr r24
19c0: 86 95 lsr r24
19c2: 83 5c subi r24, 0xC3 ; 195
19c4: 80 83 st Z, r24
19c6: 89 2f mov r24, r25
19c8: 99 27 eor r25, r25
19ca: 83 70 andi r24, 0x03 ; 3
19cc: 90 70 andi r25, 0x00 ; 0
19ce: 34 e0 ldi r19, 0x04 ; 4
19d0: 88 0f add r24, r24
19d2: 99 1f adc r25, r25
19d4: 3a 95 dec r19
19d6: e1 f7 brne .-8 ; 0x19d0 <base64_send+0x58>
19d8: 42 2f mov r20, r18
19da: 55 27 eor r21, r21
19dc: 9a 01 movw r18, r20
19de: 94 e0 ldi r25, 0x04 ; 4
19e0: 36 95 lsr r19
19e2: 27 95 ror r18
19e4: 9a 95 dec r25
19e6: e1 f7 brne .-8 ; 0x19e0 <base64_send+0x68>
19e8: 82 2b or r24, r18
19ea: 83 5c subi r24, 0xC3 ; 195
19ec: 81 83 std Z+1, r24 ; 0x01
19ee: 4f 70 andi r20, 0x0F ; 15
19f0: 50 70 andi r21, 0x00 ; 0
19f2: 44 0f add r20, r20
19f4: 55 1f adc r21, r21
19f6: 44 0f add r20, r20
19f8: 55 1f adc r21, r21
19fa: 86 2f mov r24, r22
19fc: 99 27 eor r25, r25
19fe: 16 e0 ldi r17, 0x06 ; 6
1a00: 96 95 lsr r25
1a02: 87 95 ror r24
1a04: 1a 95 dec r17
1a06: e1 f7 brne .-8 ; 0x1a00 <base64_send+0x88>
1a08: 84 2b or r24, r20
1a0a: 83 5c subi r24, 0xC3 ; 195
1a0c: 82 83 std Z+2, r24 ; 0x02
1a0e: 6f 73 andi r22, 0x3F ; 63
1a10: 63 5c subi r22, 0xC3 ; 195
1a12: 63 83 std Z+3, r22 ; 0x03
1a14: 84 e0 ldi r24, 0x04 ; 4
1a16: f8 0e add r15, r24
1a18: 7a 17 cp r23, r26
1a1a: 20 f2 brcs .-120 ; 0x19a4 <base64_send+0x2c>
}
 
checksum = 0;
1a1c: 20 e0 ldi r18, 0x00 ; 0
1a1e: 30 e0 ldi r19, 0x00 ; 0
for(a=0;a<bpointer;a++)
1a20: c0 e0 ldi r28, 0x00 ; 0
1a22: cf 15 cp r28, r15
1a24: 40 f4 brcc .+16 ; 0x1a36 <base64_send+0xbe>
1a26: e9 ee ldi r30, 0xE9 ; 233
1a28: f4 e0 ldi r31, 0x04 ; 4
checksum += r_buffer[a];
1a2a: 81 91 ld r24, Z+
1a2c: 28 0f add r18, r24
1a2e: 31 1d adc r19, r1
1a30: cf 5f subi r28, 0xFF ; 255
1a32: cf 15 cp r28, r15
1a34: d0 f3 brcs .-12 ; 0x1a2a <base64_send+0xb2>
checksum %= 4096;
1a36: 3f 70 andi r19, 0x0F ; 15
r_buffer[bpointer] = (checksum / 64) + 61;
1a38: ef 2d mov r30, r15
1a3a: ff 27 eor r31, r31
1a3c: e7 51 subi r30, 0x17 ; 23
1a3e: fb 4f sbci r31, 0xFB ; 251
1a40: c9 01 movw r24, r18
1a42: c6 e0 ldi r28, 0x06 ; 6
1a44: 96 95 lsr r25
1a46: 87 95 ror r24
1a48: ca 95 dec r28
1a4a: e1 f7 brne .-8 ; 0x1a44 <base64_send+0xcc>
1a4c: 83 5c subi r24, 0xC3 ; 195
1a4e: 80 83 st Z, r24
r_buffer[bpointer + 1] = (checksum % 64) + 61;
1a50: 2f 73 andi r18, 0x3F ; 63
1a52: 30 70 andi r19, 0x00 ; 0
1a54: 82 2f mov r24, r18
1a56: 83 5c subi r24, 0xC3 ; 195
1a58: 81 83 std Z+1, r24 ; 0x01
r_buffer[bpointer + 2] = 13;
1a5a: 8d e0 ldi r24, 0x0D ; 13
1a5c: 82 83 std Z+2, r24 ; 0x02
r_buffer[bpointer + 3] = 0;
1a5e: 13 82 std Z+3, r1 ; 0x03
bpointer += 3;
1a60: 83 e0 ldi r24, 0x03 ; 3
1a62: f8 0e add r15, r24
for(a=0;a<bpointer;a++)
1a64: c3 81 ldd r28, Z+3 ; 0x03
1a66: cf 15 cp r28, r15
1a68: 50 f4 brcc .+20 ; 0x1a7e <base64_send+0x106>
1a6a: 09 ee ldi r16, 0xE9 ; 233
1a6c: 14 e0 ldi r17, 0x04 ; 4
RS232_send(r_buffer[a]);
1a6e: f8 01 movw r30, r16
1a70: 81 91 ld r24, Z+
1a72: 8f 01 movw r16, r30
1a74: 0e 94 44 0c call 0x1888 <RS232_send>
1a78: cf 5f subi r28, 0xFF ; 255
1a7a: cf 15 cp r28, r15
1a7c: c0 f3 brcs .-16 ; 0x1a6e <base64_send+0xf6>
1a7e: cf 91 pop r28
1a80: 1f 91 pop r17
1a82: 0f 91 pop r16
1a84: ff 90 pop r15
1a86: 08 95 ret
 
00001a88 <displ_get_text>:
uint8_t displ_page;
 
 
void displ_get_text(uint8_t number)
{
1a88: 1f 93 push r17
1a8a: cf 93 push r28
1a8c: df 93 push r29
1a8e: cd b7 in r28, 0x3d ; 61
1a90: de b7 in r29, 0x3e ; 62
1a92: 61 97 sbiw r28, 0x11 ; 17
1a94: 0f b6 in r0, 0x3f ; 63
1a96: f8 94 cli
1a98: de bf out 0x3e, r29 ; 62
1a9a: 0f be out 0x3f, r0 ; 63
1a9c: cd bf out 0x3d, r28 ; 61
1a9e: 18 2f mov r17, r24
uint8_t text[17];
uint8_t i;
p_buffer[0] = '#';
1aa0: 83 e2 ldi r24, 0x23 ; 35
1aa2: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
1aa6: 81 e6 ldi r24, 0x61 ; 97
1aa8: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = 'a';
1aac: 80 93 65 04 sts 0x0465, r24
p_buffer[3] = number;
1ab0: 10 93 66 04 sts 0x0466, r17
p_buffer[4] = 0;
1ab4: 10 92 67 04 sts 0x0467, r1
p_buffer[5] = 0;
1ab8: 10 92 68 04 sts 0x0468, r1
base64_send(6);
1abc: 86 e0 ldi r24, 0x06 ; 6
1abe: 0e 94 bc 0c call 0x1978 <base64_send>
 
do
{
get_message();
1ac2: 0e 94 95 0c call 0x192a <get_message>
}
1ac6: 80 91 ea 04 lds r24, 0x04EA
1aca: 81 34 cpi r24, 0x41 ; 65
1acc: d1 f7 brne .-12 ; 0x1ac2 <displ_get_text+0x3a>
1ace: de 01 movw r26, r28
1ad0: 11 96 adiw r26, 0x01 ; 1
1ad2: e3 e6 ldi r30, 0x63 ; 99
1ad4: f4 e0 ldi r31, 0x04 ; 4
1ad6: 9f e0 ldi r25, 0x0F ; 15
while (r_buffer[1] != 'A');
 
for (i=0;i<16;i++)
text[i] = p_buffer[i];
1ad8: 81 91 ld r24, Z+
1ada: 8d 93 st X+, r24
1adc: 91 50 subi r25, 0x01 ; 1
1ade: 97 ff sbrs r25, 7
1ae0: fb cf rjmp .-10 ; 0x1ad8 <displ_get_text+0x50>
text[16] = 0x00;
1ae2: 19 8a std Y+17, r1 ; 0x11
lcd_print_at(0,(number & 0x07),text,0);
1ae4: 17 70 andi r17, 0x07 ; 7
1ae6: 29 89 ldd r18, Y+17 ; 0x11
1ae8: ae 01 movw r20, r28
1aea: 4f 5f subi r20, 0xFF ; 255
1aec: 5f 4f sbci r21, 0xFF ; 255
1aee: 61 2f mov r22, r17
1af0: 82 2f mov r24, r18
1af2: 0e 94 1d 09 call 0x123a <lcd_print_at>
1af6: 61 96 adiw r28, 0x11 ; 17
1af8: 0f b6 in r0, 0x3f ; 63
1afa: f8 94 cli
1afc: de bf out 0x3e, r29 ; 62
1afe: 0f be out 0x3f, r0 ; 63
1b00: cd bf out 0x3d, r28 ; 61
1b02: df 91 pop r29
1b04: cf 91 pop r28
1b06: 1f 91 pop r17
1b08: 08 95 ret
 
00001b0a <displ_values>:
}
 
void displ_values(void)
{
1b0a: cf 92 push r12
1b0c: df 92 push r13
1b0e: ef 92 push r14
1b10: ff 92 push r15
1b12: 0f 93 push r16
1b14: 1f 93 push r17
1b16: cf 93 push r28
1b18: df 93 push r29
1b1a: cd b7 in r28, 0x3d ; 61
1b1c: de b7 in r29, 0x3e ; 62
1b1e: 61 97 sbiw r28, 0x11 ; 17
1b20: 0f b6 in r0, 0x3f ; 63
1b22: f8 94 cli
1b24: de bf out 0x3e, r29 ; 62
1b26: 0f be out 0x3f, r0 ; 63
1b28: cd bf out 0x3d, r28 ; 61
uint8_t displ_page, i;
int16_t value;
uint8_t text[17];
 
displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte)
1b2a: 00 e0 ldi r16, 0x00 ; 0
lcd_cls(); // LCD löschen
1b2c: 0e 94 36 07 call 0xe6c <lcd_cls>
do
{
for (i=0;i<8;i++) // Texte lesen und anzeigen
1b30: 10 e0 ldi r17, 0x00 ; 0
displ_get_text(i+displ_page*8);
1b32: c0 2e mov r12, r16
1b34: dd 24 eor r13, r13
1b36: c6 01 movw r24, r12
1b38: 53 e0 ldi r21, 0x03 ; 3
1b3a: 88 0f add r24, r24
1b3c: 99 1f adc r25, r25
1b3e: 5a 95 dec r21
1b40: e1 f7 brne .-8 ; 0x1b3a <displ_values+0x30>
1b42: 81 0f add r24, r17
1b44: 0e 94 44 0d call 0x1a88 <displ_get_text>
1b48: 1f 5f subi r17, 0xFF ; 255
1b4a: 18 30 cpi r17, 0x08 ; 8
1b4c: 90 f3 brcs .-28 ; 0x1b32 <displ_values+0x28>
do
{
get_message();
1b4e: 0e 94 95 0c call 0x192a <get_message>
if(r_buffer[1] == 'D')
1b52: 80 91 ea 04 lds r24, 0x04EA
1b56: 84 34 cpi r24, 0x44 ; 68
1b58: 91 f5 brne .+100 ; 0x1bbe <displ_values+0xb4>
{
for (i=0;i<8;i++)
1b5a: 10 e0 ldi r17, 0x00 ; 0
1b5c: ee 24 eor r14, r14
1b5e: ff 24 eor r15, r15
{
value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3];
1b60: f6 01 movw r30, r12
1b62: 43 e0 ldi r20, 0x03 ; 3
1b64: ee 0f add r30, r30
1b66: ff 1f adc r31, r31
1b68: 4a 95 dec r20
1b6a: e1 f7 brne .-8 ; 0x1b64 <displ_values+0x5a>
1b6c: ee 0d add r30, r14
1b6e: ff 1d adc r31, r15
1b70: ee 0f add r30, r30
1b72: ff 1f adc r31, r31
1b74: ed 59 subi r30, 0x9D ; 157
1b76: fb 4f sbci r31, 0xFB ; 251
1b78: 22 81 ldd r18, Z+2 ; 0x02
1b7a: 83 81 ldd r24, Z+3 ; 0x03
1b7c: 99 27 eor r25, r25
1b7e: 98 2f mov r25, r24
1b80: 88 27 eor r24, r24
itoa(value,text,10);
1b82: 4a e0 ldi r20, 0x0A ; 10
1b84: 50 e0 ldi r21, 0x00 ; 0
1b86: be 01 movw r22, r28
1b88: 6f 5f subi r22, 0xFF ; 255
1b8a: 7f 4f sbci r23, 0xFF ; 255
1b8c: 82 0f add r24, r18
1b8e: 91 1d adc r25, r1
1b90: 0e 94 cf 12 call 0x259e <itoa>
lcd_print_atp(14,i,PSTR(" "),0);
1b94: 20 e0 ldi r18, 0x00 ; 0
1b96: 44 e5 ldi r20, 0x54 ; 84
1b98: 56 e0 ldi r21, 0x06 ; 6
1b9a: 61 2f mov r22, r17
1b9c: 8e e0 ldi r24, 0x0E ; 14
1b9e: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
lcd_print_at(14,i,text,0);
1ba2: 20 e0 ldi r18, 0x00 ; 0
1ba4: ae 01 movw r20, r28
1ba6: 4f 5f subi r20, 0xFF ; 255
1ba8: 5f 4f sbci r21, 0xFF ; 255
1baa: 61 2f mov r22, r17
1bac: 8e e0 ldi r24, 0x0E ; 14
1bae: 0e 94 1d 09 call 0x123a <lcd_print_at>
1bb2: 1f 5f subi r17, 0xFF ; 255
1bb4: 08 94 sec
1bb6: e1 1c adc r14, r1
1bb8: f1 1c adc r15, r1
1bba: 18 30 cpi r17, 0x08 ; 8
1bbc: 88 f2 brcs .-94 ; 0x1b60 <displ_values+0x56>
}
}
}
1bbe: 80 91 e6 04 lds r24, 0x04E6
1bc2: 88 23 and r24, r24
1bc4: 21 f2 breq .-120 ; 0x1b4e <displ_values+0x44>
while (key == 0x00);
if (key == 0x01)
1bc6: 80 91 e6 04 lds r24, 0x04E6
1bca: 81 30 cpi r24, 0x01 ; 1
1bcc: 09 f4 brne .+2 ; 0x1bd0 <displ_values+0xc6>
displ_page++;
1bce: 0f 5f subi r16, 0xFF ; 255
if (key == 0x02)
1bd0: 80 91 e6 04 lds r24, 0x04E6
1bd4: 82 30 cpi r24, 0x02 ; 2
1bd6: 09 f4 brne .+2 ; 0x1bda <displ_values+0xd0>
displ_page--;
1bd8: 01 50 subi r16, 0x01 ; 1
displ_page &= 0x03;
1bda: 03 70 andi r16, 0x03 ; 3
}
1bdc: 80 91 e6 04 lds r24, 0x04E6
1be0: 88 30 cpi r24, 0x08 ; 8
1be2: 09 f0 breq .+2 ; 0x1be6 <displ_values+0xdc>
1be4: a5 cf rjmp .-182 ; 0x1b30 <displ_values+0x26>
1be6: 61 96 adiw r28, 0x11 ; 17
1be8: 0f b6 in r0, 0x3f ; 63
1bea: f8 94 cli
1bec: de bf out 0x3e, r29 ; 62
1bee: 0f be out 0x3f, r0 ; 63
1bf0: cd bf out 0x3d, r28 ; 61
1bf2: df 91 pop r29
1bf4: cf 91 pop r28
1bf6: 1f 91 pop r17
1bf8: 0f 91 pop r16
1bfa: ff 90 pop r15
1bfc: ef 90 pop r14
1bfe: df 90 pop r13
1c00: cf 90 pop r12
1c02: 08 95 ret
 
00001c04 <read_parameter>:
 
// Parameter lesen, editieren und zurückschreiben
 
uint8_t read_parameter (uint8_t number) // Number = Parameter-Set#
{
1c04: cf 93 push r28
uint8_t timeout;
timeout = 0;
1c06: c0 e0 ldi r28, 0x00 ; 0
p_buffer[0] = '#'; // Parameter anfordern
1c08: 93 e2 ldi r25, 0x23 ; 35
1c0a: 90 93 63 04 sts 0x0463, r25
p_buffer[1] = 'a';
1c0e: 91 e6 ldi r25, 0x61 ; 97
1c10: 90 93 64 04 sts 0x0464, r25
p_buffer[2] = 'q';
1c14: 91 e7 ldi r25, 0x71 ; 113
1c16: 90 93 65 04 sts 0x0465, r25
p_buffer[3] = number;
1c1a: 80 93 66 04 sts 0x0466, r24
p_buffer[4] = 0;
1c1e: c0 93 67 04 sts 0x0467, r28
p_buffer[5] = 0;
1c22: c0 93 68 04 sts 0x0468, r28
base64_send(6);
1c26: 86 e0 ldi r24, 0x06 ; 6
1c28: 0e 94 bc 0c call 0x1978 <base64_send>
 
do // warten, bis die Parameter gesendet werden
{
if (get_message() == 1) // Fehler bei der Übertragung?
1c2c: 0e 94 95 0c call 0x192a <get_message>
1c30: 81 30 cpi r24, 0x01 ; 1
1c32: 09 f4 brne .+2 ; 0x1c36 <read_parameter+0x32>
timeout = 30; // Timeout sofort auf Endwert setzen
1c34: ce e1 ldi r28, 0x1E ; 30
timeout ++;
1c36: cf 5f subi r28, 0xFF ; 255
}
1c38: 80 91 ea 04 lds r24, 0x04EA
1c3c: 8c 54 subi r24, 0x4C ; 76
1c3e: 85 30 cpi r24, 0x05 ; 5
1c40: 10 f0 brcs .+4 ; 0x1c46 <read_parameter+0x42>
1c42: ce 31 cpi r28, 0x1E ; 30
1c44: 98 f3 brcs .-26 ; 0x1c2c <read_parameter+0x28>
while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat
if (timeout >= 30) // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0
1c46: ce 31 cpi r28, 0x1E ; 30
1c48: 18 f0 brcs .+6 ; 0x1c50 <read_parameter+0x4c>
return 1;
1c4a: 81 e0 ldi r24, 0x01 ; 1
1c4c: 90 e0 ldi r25, 0x00 ; 0
1c4e: 02 c0 rjmp .+4 ; 0x1c54 <read_parameter+0x50>
else
return 0;
1c50: 80 e0 ldi r24, 0x00 ; 0
1c52: 90 e0 ldi r25, 0x00 ; 0
1c54: cf 91 pop r28
1c56: 08 95 ret
 
00001c58 <write_parameter>:
}
 
void write_parameter(uint8_t number) // Schreibe Parameter-Satz
{
1c58: 98 2f mov r25, r24
uint8_t i;
if (number <= 5)
1c5a: 86 30 cpi r24, 0x06 ; 6
1c5c: b8 f4 brcc .+46 ; 0x1c8c <write_parameter+0x34>
1c5e: e9 ea ldi r30, 0xA9 ; 169
1c60: f4 e0 ldi r31, 0x04 ; 4
1c62: 26 e4 ldi r18, 0x46 ; 70
{
 
for (i=0;i<71;i++) // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben
p_buffer[(70-i)+3] = p_buffer[70-i];
1c64: 80 81 ld r24, Z
1c66: 83 83 std Z+3, r24 ; 0x03
1c68: 21 50 subi r18, 0x01 ; 1
1c6a: 31 97 sbiw r30, 0x01 ; 1
1c6c: 27 ff sbrs r18, 7
1c6e: fa cf rjmp .-12 ; 0x1c64 <write_parameter+0xc>
p_buffer[0] = '#'; // Befehl zum Schreiben der Parameter
1c70: 83 e2 ldi r24, 0x23 ; 35
1c72: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
1c76: 81 e6 ldi r24, 0x61 ; 97
1c78: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = number + 'k'; // Nummer des Parameters
1c7c: 95 59 subi r25, 0x95 ; 149
1c7e: 90 93 65 04 sts 0x0465, r25
p_buffer[74] = 0;
1c82: 10 92 ad 04 sts 0x04AD, r1
base64_send(75); // Parameter in base64 kodieren und senden, 75 Bytes
1c86: 8b e4 ldi r24, 0x4B ; 75
1c88: 0e 94 bc 0c call 0x1978 <base64_send>
1c8c: 08 95 ret
 
00001c8e <binary>:
}
}
 
void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen)
{ // Wird für die Flags (Loop + Grundkonfiguration) benötigt
1c8e: 9b 01 movw r18, r22
1c90: 68 2f mov r22, r24
1c92: 77 27 eor r23, r23
1c94: 51 e0 ldi r21, 0x01 ; 1
1c96: f9 01 movw r30, r18
1c98: 20 e0 ldi r18, 0x00 ; 0
1c9a: 30 e0 ldi r19, 0x00 ; 0
1c9c: 47 e0 ldi r20, 0x07 ; 7
uint8_t i;
i=0;
for (i=0;i<8;i++)
{
if ((1<<i) & data)
1c9e: cb 01 movw r24, r22
1ca0: 02 2e mov r0, r18
1ca2: 02 c0 rjmp .+4 ; 0x1ca8 <binary+0x1a>
1ca4: 95 95 asr r25
1ca6: 87 95 ror r24
1ca8: 0a 94 dec r0
1caa: e2 f7 brpl .-8 ; 0x1ca4 <binary+0x16>
1cac: 80 ff sbrs r24, 0
1cae: 02 c0 rjmp .+4 ; 0x1cb4 <binary+0x26>
feld[i] = 1;
1cb0: 50 83 st Z, r21
1cb2: 01 c0 rjmp .+2 ; 0x1cb6 <binary+0x28>
else
feld[i] = 0;
1cb4: 10 82 st Z, r1
1cb6: 41 50 subi r20, 0x01 ; 1
1cb8: 2f 5f subi r18, 0xFF ; 255
1cba: 3f 4f sbci r19, 0xFF ; 255
1cbc: 31 96 adiw r30, 0x01 ; 1
1cbe: 47 ff sbrs r20, 7
1cc0: ee cf rjmp .-36 ; 0x1c9e <binary+0x10>
1cc2: 08 95 ret
 
00001cc4 <bindec>:
}
}
 
uint8_t bindec (uint8_t *feld) // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl
{ // Wird für die Flags (Loop + Grundkonfiguration) benötigt
uint8_t i;
uint8_t result;
result = 0;
1cc4: 50 e0 ldi r21, 0x00 ; 0
1cc6: 61 e0 ldi r22, 0x01 ; 1
1cc8: 70 e0 ldi r23, 0x00 ; 0
1cca: fc 01 movw r30, r24
1ccc: 20 e0 ldi r18, 0x00 ; 0
1cce: 30 e0 ldi r19, 0x00 ; 0
1cd0: 47 e0 ldi r20, 0x07 ; 7
for (i=0;i<8;i++)
{
if (feld[i] == 1)
1cd2: 81 91 ld r24, Z+
1cd4: 81 30 cpi r24, 0x01 ; 1
1cd6: 41 f4 brne .+16 ; 0x1ce8 <bindec+0x24>
result += 1<<i;
1cd8: cb 01 movw r24, r22
1cda: 02 2e mov r0, r18
1cdc: 02 c0 rjmp .+4 ; 0x1ce2 <bindec+0x1e>
1cde: 88 0f add r24, r24
1ce0: 99 1f adc r25, r25
1ce2: 0a 94 dec r0
1ce4: e2 f7 brpl .-8 ; 0x1cde <bindec+0x1a>
1ce6: 58 0f add r21, r24
1ce8: 41 50 subi r20, 0x01 ; 1
1cea: 2f 5f subi r18, 0xFF ; 255
1cec: 3f 4f sbci r19, 0xFF ; 255
1cee: 47 ff sbrs r20, 7
1cf0: f0 cf rjmp .-32 ; 0x1cd2 <bindec+0xe>
}
return result;
}
1cf2: 85 2f mov r24, r21
1cf4: 99 27 eor r25, r25
1cf6: 08 95 ret
 
00001cf8 <decimal>:
 
 
 
 
void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um
{ // (schneller/kleiner als printf())
1cf8: 28 2f mov r18, r24
1cfa: fb 01 movw r30, r22
text[0] = data/100;
1cfc: 34 e6 ldi r19, 0x64 ; 100
1cfe: 63 2f mov r22, r19
1d00: 0e 94 16 13 call 0x262c <__udivmodqi4>
1d04: 58 2f mov r21, r24
data -= (text[0] * 100);
1d06: 83 9f mul r24, r19
1d08: c0 01 movw r24, r0
1d0a: 11 24 eor r1, r1
1d0c: 28 1b sub r18, r24
text[1] = data/10;
1d0e: 3a e0 ldi r19, 0x0A ; 10
1d10: 82 2f mov r24, r18
1d12: 63 2f mov r22, r19
1d14: 0e 94 16 13 call 0x262c <__udivmodqi4>
1d18: 48 2f mov r20, r24
data -= (text[1] *10);
1d1a: 83 9f mul r24, r19
1d1c: c0 01 movw r24, r0
1d1e: 11 24 eor r1, r1
1d20: 28 1b sub r18, r24
text[2] = data + 0x30;
1d22: 20 5d subi r18, 0xD0 ; 208
1d24: 22 83 std Z+2, r18 ; 0x02
text[0] += 0x30;
1d26: 85 2f mov r24, r21
1d28: 80 5d subi r24, 0xD0 ; 208
1d2a: 80 83 st Z, r24
text[1] += 0x30;
1d2c: 40 5d subi r20, 0xD0 ; 208
1d2e: 41 83 std Z+1, r20 ; 0x01
 
if (text[0] == 0x30)
1d30: 80 33 cpi r24, 0x30 ; 48
1d32: 29 f4 brne .+10 ; 0x1d3e <decimal+0x46>
{
text[0] = 0x20;
1d34: 80 e2 ldi r24, 0x20 ; 32
1d36: 80 83 st Z, r24
if (text[1] == 0x30)
1d38: 40 33 cpi r20, 0x30 ; 48
1d3a: 09 f4 brne .+2 ; 0x1d3e <decimal+0x46>
text[1] = 0x20;
1d3c: 81 83 std Z+1, r24 ; 0x01
}
text[3] = 0x00;
1d3e: 13 82 std Z+3, r1 ; 0x03
1d40: 08 95 ret
 
00001d42 <show_parameter>:
}
 
uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück
{
1d42: 9f 92 push r9
1d44: af 92 push r10
1d46: bf 92 push r11
1d48: cf 92 push r12
1d4a: df 92 push r13
1d4c: ef 92 push r14
1d4e: ff 92 push r15
1d50: 0f 93 push r16
1d52: 1f 93 push r17
1d54: cf 93 push r28
1d56: df 93 push r29
1d58: cd b7 in r28, 0x3d ; 61
1d5a: de b7 in r29, 0x3e ; 62
1d5c: a1 97 sbiw r28, 0x21 ; 33
1d5e: 0f b6 in r0, 0x3f ; 63
1d60: f8 94 cli
1d62: de bf out 0x3e, r29 ; 62
1d64: 0f be out 0x3f, r0 ; 63
1d66: cd bf out 0x3d, r28 ; 61
1d68: 08 2f mov r16, r24
uint8_t i;
uint8_t line;
uint8_t text[25];
uint8_t bin[8];
line = 0;
1d6a: 99 24 eor r9, r9
if (number > 1)
1d6c: 82 30 cpi r24, 0x02 ; 2
1d6e: 08 f4 brcc .+2 ; 0x1d72 <show_parameter+0x30>
1d70: 3e c0 rjmp .+124 ; 0x1dee <show_parameter+0xac>
{
for (i = 0; i<66; i++)
1d72: 19 2d mov r17, r9
1d74: 4b e5 ldi r20, 0x5B ; 91
1d76: a4 2e mov r10, r20
1d78: 46 e0 ldi r20, 0x06 ; 6
1d7a: b4 2e mov r11, r20
1d7c: 33 e6 ldi r19, 0x63 ; 99
1d7e: c3 2e mov r12, r19
1d80: 34 e0 ldi r19, 0x04 ; 4
1d82: d3 2e mov r13, r19
1d84: 2d e7 ldi r18, 0x7D ; 125
1d86: e2 2e mov r14, r18
1d88: 2a e0 ldi r18, 0x0A ; 10
1d8a: f2 2e mov r15, r18
{
if (pgm_read_byte(p_limits+i*3+2) == number)
1d8c: f7 01 movw r30, r14
1d8e: 84 91 lpm r24, Z
1d90: 80 17 cp r24, r16
1d92: f1 f4 brne .+60 ; 0x1dd0 <show_parameter+0x8e>
{
array[line] = i;
1d94: e9 2d mov r30, r9
1d96: ff 27 eor r31, r31
1d98: e1 58 subi r30, 0x81 ; 129
1d9a: fa 4f sbci r31, 0xFA ; 250
1d9c: 10 83 st Z, r17
decimal(p_buffer[i],text);
1d9e: be 01 movw r22, r28
1da0: 6f 5f subi r22, 0xFF ; 255
1da2: 7f 4f sbci r23, 0xFF ; 255
1da4: f6 01 movw r30, r12
1da6: 80 81 ld r24, Z
1da8: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print_at(0,line,text,0);
1dac: 20 e0 ldi r18, 0x00 ; 0
1dae: ae 01 movw r20, r28
1db0: 4f 5f subi r20, 0xFF ; 255
1db2: 5f 4f sbci r21, 0xFF ; 255
1db4: 69 2d mov r22, r9
1db6: 82 2f mov r24, r18
1db8: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_atp(5,line,parameter[i],0);
1dbc: 20 e0 ldi r18, 0x00 ; 0
1dbe: a5 01 movw r20, r10
1dc0: 69 2d mov r22, r9
1dc2: 85 e0 ldi r24, 0x05 ; 5
1dc4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
if (line <= 7)
1dc8: f7 e0 ldi r31, 0x07 ; 7
1dca: f9 15 cp r31, r9
1dcc: 08 f0 brcs .+2 ; 0x1dd0 <show_parameter+0x8e>
line++;
1dce: 93 94 inc r9
1dd0: 1f 5f subi r17, 0xFF ; 255
1dd2: 83 e0 ldi r24, 0x03 ; 3
1dd4: 90 e0 ldi r25, 0x00 ; 0
1dd6: e8 0e add r14, r24
1dd8: f9 1e adc r15, r25
1dda: 08 94 sec
1ddc: c1 1c adc r12, r1
1dde: d1 1c adc r13, r1
1de0: e0 e1 ldi r30, 0x10 ; 16
1de2: f0 e0 ldi r31, 0x00 ; 0
1de4: ae 0e add r10, r30
1de6: bf 1e adc r11, r31
1de8: 12 34 cpi r17, 0x42 ; 66
1dea: 80 f2 brcs .-96 ; 0x1d8c <show_parameter+0x4a>
1dec: 5f c0 rjmp .+190 ; 0x1eac <show_parameter+0x16a>
}
}
}
else
{ // Sonderfälle: Binäre Eingabe
if (number == 1)
1dee: 81 30 cpi r24, 0x01 ; 1
1df0: 71 f5 brne .+92 ; 0x1e4e <show_parameter+0x10c>
{
binary(p_buffer[52],bin); // Loop-Config
1df2: be 01 movw r22, r28
1df4: 66 5e subi r22, 0xE6 ; 230
1df6: 7f 4f sbci r23, 0xFF ; 255
1df8: 80 91 97 04 lds r24, 0x0497
1dfc: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
1e00: 9a 82 std Y+2, r9 ; 0x02
for (i=0;i<4;i++)
1e02: 19 2d mov r17, r9
1e04: 9b eb ldi r25, 0xBB ; 187
1e06: c9 2e mov r12, r25
1e08: 99 e0 ldi r25, 0x09 ; 9
1e0a: d9 2e mov r13, r25
1e0c: ee 24 eor r14, r14
1e0e: ff 24 eor r15, r15
{
text[0] = bin[i] + 0x30;
1e10: ce 01 movw r24, r28
1e12: 01 96 adiw r24, 0x01 ; 1
1e14: f7 01 movw r30, r14
1e16: e8 0f add r30, r24
1e18: f9 1f adc r31, r25
1e1a: 21 8d ldd r18, Z+25 ; 0x19
1e1c: 20 5d subi r18, 0xD0 ; 208
1e1e: 29 83 std Y+1, r18 ; 0x01
lcd_print_at(0,i,text,0);
1e20: 20 e0 ldi r18, 0x00 ; 0
1e22: ac 01 movw r20, r24
1e24: 61 2f mov r22, r17
1e26: 82 2f mov r24, r18
1e28: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_atp(5,i,bin_parameter[i],0);
1e2c: 20 e0 ldi r18, 0x00 ; 0
1e2e: a6 01 movw r20, r12
1e30: 61 2f mov r22, r17
1e32: 85 e0 ldi r24, 0x05 ; 5
1e34: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
1e38: 1f 5f subi r17, 0xFF ; 255
1e3a: 08 94 sec
1e3c: e1 1c adc r14, r1
1e3e: f1 1c adc r15, r1
1e40: 80 e1 ldi r24, 0x10 ; 16
1e42: 90 e0 ldi r25, 0x00 ; 0
1e44: c8 0e add r12, r24
1e46: d9 1e adc r13, r25
1e48: 14 30 cpi r17, 0x04 ; 4
1e4a: 10 f3 brcs .-60 ; 0x1e10 <show_parameter+0xce>
1e4c: 2f c0 rjmp .+94 ; 0x1eac <show_parameter+0x16a>
}
}
if (number == 0)
1e4e: 88 23 and r24, r24
1e50: 69 f5 brne .+90 ; 0x1eac <show_parameter+0x16a>
{
binary(p_buffer[8],bin); // Config
1e52: be 01 movw r22, r28
1e54: 66 5e subi r22, 0xE6 ; 230
1e56: 7f 4f sbci r23, 0xFF ; 255
1e58: 80 91 6b 04 lds r24, 0x046B
1e5c: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
1e60: 9a 82 std Y+2, r9 ; 0x02
for (i=0;i<8;i++)
1e62: 19 2d mov r17, r9
1e64: 8b ef ldi r24, 0xFB ; 251
1e66: c8 2e mov r12, r24
1e68: 89 e0 ldi r24, 0x09 ; 9
1e6a: d8 2e mov r13, r24
1e6c: ee 24 eor r14, r14
1e6e: ff 24 eor r15, r15
{
text[0] = bin[i] + 0x30;
1e70: ce 01 movw r24, r28
1e72: 01 96 adiw r24, 0x01 ; 1
1e74: f7 01 movw r30, r14
1e76: e8 0f add r30, r24
1e78: f9 1f adc r31, r25
1e7a: 21 8d ldd r18, Z+25 ; 0x19
1e7c: 20 5d subi r18, 0xD0 ; 208
1e7e: 29 83 std Y+1, r18 ; 0x01
lcd_print_at(0,i,text,0);
1e80: 20 e0 ldi r18, 0x00 ; 0
1e82: ac 01 movw r20, r24
1e84: 61 2f mov r22, r17
1e86: 82 2f mov r24, r18
1e88: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_atp(5,i,bin_parameter[i+4],0);
1e8c: 20 e0 ldi r18, 0x00 ; 0
1e8e: a6 01 movw r20, r12
1e90: 61 2f mov r22, r17
1e92: 85 e0 ldi r24, 0x05 ; 5
1e94: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
1e98: 1f 5f subi r17, 0xFF ; 255
1e9a: 08 94 sec
1e9c: e1 1c adc r14, r1
1e9e: f1 1c adc r15, r1
1ea0: e0 e1 ldi r30, 0x10 ; 16
1ea2: f0 e0 ldi r31, 0x00 ; 0
1ea4: ce 0e add r12, r30
1ea6: df 1e adc r13, r31
1ea8: 18 30 cpi r17, 0x08 ; 8
1eaa: 10 f3 brcs .-60 ; 0x1e70 <show_parameter+0x12e>
}
}
 
}
return line;
}
1eac: 89 2d mov r24, r9
1eae: 99 27 eor r25, r25
1eb0: a1 96 adiw r28, 0x21 ; 33
1eb2: 0f b6 in r0, 0x3f ; 63
1eb4: f8 94 cli
1eb6: de bf out 0x3e, r29 ; 62
1eb8: 0f be out 0x3f, r0 ; 63
1eba: cd bf out 0x3d, r28 ; 61
1ebc: df 91 pop r29
1ebe: cf 91 pop r28
1ec0: 1f 91 pop r17
1ec2: 0f 91 pop r16
1ec4: ff 90 pop r15
1ec6: ef 90 pop r14
1ec8: df 90 pop r13
1eca: cf 90 pop r12
1ecc: bf 90 pop r11
1ece: af 90 pop r10
1ed0: 9f 90 pop r9
1ed2: 08 95 ret
 
00001ed4 <edit_parameter2>:
 
void edit_parameter2 (uint8_t page, uint8_t lines) // Ändern der Parameter einer Seite
{
1ed4: 8f 92 push r8
1ed6: 9f 92 push r9
1ed8: af 92 push r10
1eda: bf 92 push r11
1edc: df 92 push r13
1ede: ef 92 push r14
1ee0: ff 92 push r15
1ee2: 0f 93 push r16
1ee4: 1f 93 push r17
1ee6: cf 93 push r28
1ee8: df 93 push r29
1eea: cd b7 in r28, 0x3d ; 61
1eec: de b7 in r29, 0x3e ; 62
1eee: 62 97 sbiw r28, 0x12 ; 18
1ef0: 0f b6 in r0, 0x3f ; 63
1ef2: f8 94 cli
1ef4: de bf out 0x3e, r29 ; 62
1ef6: 0f be out 0x3f, r0 ; 63
1ef8: cd bf out 0x3d, r28 ; 61
1efa: d8 2e mov r13, r24
uint8_t line;
uint8_t par;
uint8_t min;
uint8_t max;
uint8_t text[10];
uint8_t bin[8];
if (page > 1) // "normale" Parameter-Seiten
1efc: 81 e0 ldi r24, 0x01 ; 1
1efe: 8d 15 cp r24, r13
1f00: 08 f0 brcs .+2 ; 0x1f04 <edit_parameter2+0x30>
1f02: 55 c0 rjmp .+170 ; 0x1fae <edit_parameter2+0xda>
{
line = menu_choose(0,lines-1,4);
1f04: 61 50 subi r22, 0x01 ; 1
1f06: 44 e0 ldi r20, 0x04 ; 4
1f08: 80 e0 ldi r24, 0x00 ; 0
1f0a: 0e 94 86 11 call 0x230c <menu_choose>
1f0e: 08 2f mov r16, r24
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
1f10: 8f 3f cpi r24, 0xFF ; 255
1f12: 09 f4 brne .+2 ; 0x1f16 <edit_parameter2+0x42>
1f14: 4c c0 rjmp .+152 ; 0x1fae <edit_parameter2+0xda>
{
par = p_buffer[array[line]];
1f16: e8 2e mov r14, r24
1f18: ff 24 eor r15, r15
1f1a: f7 01 movw r30, r14
1f1c: e1 58 subi r30, 0x81 ; 129
1f1e: fa 4f sbci r31, 0xFA ; 250
1f20: 80 81 ld r24, Z
1f22: e8 2f mov r30, r24
1f24: ff 27 eor r31, r31
1f26: ed 59 subi r30, 0x9D ; 157
1f28: fb 4f sbci r31, 0xFB ; 251
1f2a: 10 81 ld r17, Z
min = pgm_read_byte(p_limits + par * 3);
max = pgm_read_byte(p_limits + par * 3 + 1);
lcd_print_atp(4,line,PSTR("-"),0);
1f2c: 20 e0 ldi r18, 0x00 ; 0
1f2e: 49 e0 ldi r20, 0x09 ; 9
1f30: 5c e0 ldi r21, 0x0C ; 12
1f32: 60 2f mov r22, r16
1f34: 84 e0 ldi r24, 0x04 ; 4
1f36: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
while (key != key_nokey);
1f3a: 80 91 e6 04 lds r24, 0x04E6
1f3e: 88 23 and r24, r24
1f40: e1 f7 brne .-8 ; 0x1f3a <edit_parameter2+0x66>
do
{
if (key == key_minus)
1f42: 80 91 e6 04 lds r24, 0x04E6
1f46: 81 30 cpi r24, 0x01 ; 1
1f48: 09 f4 brne .+2 ; 0x1f4c <edit_parameter2+0x78>
{
//if (par > min) // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert
par --;
1f4a: 11 50 subi r17, 0x01 ; 1
}
if (key == key_plus)
1f4c: 80 91 e6 04 lds r24, 0x04E6
1f50: 82 30 cpi r24, 0x02 ; 2
1f52: 09 f4 brne .+2 ; 0x1f56 <edit_parameter2+0x82>
{
//if (par < max)
par ++;
1f54: 1f 5f subi r17, 0xFF ; 255
}
decimal(par,text);
1f56: be 01 movw r22, r28
1f58: 6f 5f subi r22, 0xFF ; 255
1f5a: 7f 4f sbci r23, 0xFF ; 255
1f5c: 81 2f mov r24, r17
1f5e: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print_at(0,line,text,0);
1f62: 20 e0 ldi r18, 0x00 ; 0
1f64: ae 01 movw r20, r28
1f66: 4f 5f subi r20, 0xFF ; 255
1f68: 5f 4f sbci r21, 0xFF ; 255
1f6a: 60 2f mov r22, r16
1f6c: 82 2f mov r24, r18
1f6e: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 20;
1f72: 84 e1 ldi r24, 0x14 ; 20
1f74: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
1f78: 80 91 61 00 lds r24, 0x0061
1f7c: 88 23 and r24, r24
1f7e: e1 f7 brne .-8 ; 0x1f78 <edit_parameter2+0xa4>
}
1f80: 80 91 e6 04 lds r24, 0x04E6
1f84: 84 30 cpi r24, 0x04 ; 4
1f86: 21 f0 breq .+8 ; 0x1f90 <edit_parameter2+0xbc>
1f88: 80 91 e6 04 lds r24, 0x04E6
1f8c: 88 30 cpi r24, 0x08 ; 8
1f8e: c9 f6 brne .-78 ; 0x1f42 <edit_parameter2+0x6e>
while ((key != 0x04) && (key != 0x08));
if (key == 0x08)
1f90: 80 91 e6 04 lds r24, 0x04E6
1f94: 88 30 cpi r24, 0x08 ; 8
1f96: 59 f4 brne .+22 ; 0x1fae <edit_parameter2+0xda>
p_buffer[array[line]] = par;
1f98: ef e7 ldi r30, 0x7F ; 127
1f9a: f5 e0 ldi r31, 0x05 ; 5
1f9c: ee 0e add r14, r30
1f9e: ff 1e adc r15, r31
1fa0: f7 01 movw r30, r14
1fa2: 80 81 ld r24, Z
1fa4: e8 2f mov r30, r24
1fa6: ff 27 eor r31, r31
1fa8: ed 59 subi r30, 0x9D ; 157
1faa: fb 4f sbci r31, 0xFB ; 251
1fac: 10 83 st Z, r17
}
}
if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / löschen)
1fae: f1 e0 ldi r31, 0x01 ; 1
1fb0: df 16 cp r13, r31
1fb2: 09 f0 breq .+2 ; 0x1fb6 <edit_parameter2+0xe2>
1fb4: 6c c0 rjmp .+216 ; 0x208e <edit_parameter2+0x1ba>
{
binary(p_buffer[52],bin);
1fb6: 6b e0 ldi r22, 0x0B ; 11
1fb8: 86 2e mov r8, r22
1fba: 91 2c mov r9, r1
1fbc: 8c 0e add r8, r28
1fbe: 9d 1e adc r9, r29
1fc0: b4 01 movw r22, r8
1fc2: 80 91 97 04 lds r24, 0x0497
1fc6: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
1fca: 1a 82 std Y+2, r1 ; 0x02
 
line = menu_choose(0,3,4);
1fcc: 44 e0 ldi r20, 0x04 ; 4
1fce: 63 e0 ldi r22, 0x03 ; 3
1fd0: 8a 81 ldd r24, Y+2 ; 0x02
1fd2: 0e 94 86 11 call 0x230c <menu_choose>
1fd6: 08 2f mov r16, r24
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
1fd8: 8f 3f cpi r24, 0xFF ; 255
1fda: 09 f4 brne .+2 ; 0x1fde <edit_parameter2+0x10a>
1fdc: c6 c0 rjmp .+396 ; 0x216a <edit_parameter2+0x296>
{
par = bin[line];
1fde: e8 2e mov r14, r24
1fe0: ff 24 eor r15, r15
1fe2: 5e 01 movw r10, r28
1fe4: 08 94 sec
1fe6: a1 1c adc r10, r1
1fe8: b1 1c adc r11, r1
1fea: f7 01 movw r30, r14
1fec: ea 0d add r30, r10
1fee: fb 1d adc r31, r11
1ff0: 12 85 ldd r17, Z+10 ; 0x0a
lcd_print_atp(4,line,PSTR("-"),0);
1ff2: 20 e0 ldi r18, 0x00 ; 0
1ff4: 4b e0 ldi r20, 0x0B ; 11
1ff6: 5c e0 ldi r21, 0x0C ; 12
1ff8: 68 2f mov r22, r24
1ffa: 84 e0 ldi r24, 0x04 ; 4
1ffc: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
do
{
if (key == key_minus)
2000: 80 91 e6 04 lds r24, 0x04E6
2004: 81 30 cpi r24, 0x01 ; 1
2006: 09 f4 brne .+2 ; 0x200a <edit_parameter2+0x136>
{
par = 0x00;
2008: 10 e0 ldi r17, 0x00 ; 0
}
if (key == key_plus)
200a: 80 91 e6 04 lds r24, 0x04E6
200e: 82 30 cpi r24, 0x02 ; 2
2010: 09 f4 brne .+2 ; 0x2014 <edit_parameter2+0x140>
{
par = 0x01;
2012: 11 e0 ldi r17, 0x01 ; 1
}
text[0] = par+0x30;
2014: 10 5d subi r17, 0xD0 ; 208
2016: 19 83 std Y+1, r17 ; 0x01
2018: 10 53 subi r17, 0x30 ; 48
lcd_print_at(0,line,text,0);
201a: 20 e0 ldi r18, 0x00 ; 0
201c: ae 01 movw r20, r28
201e: 4f 5f subi r20, 0xFF ; 255
2020: 5f 4f sbci r21, 0xFF ; 255
2022: 60 2f mov r22, r16
2024: 82 2f mov r24, r18
2026: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 20;
202a: 84 e1 ldi r24, 0x14 ; 20
202c: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
2030: d0 90 61 00 lds r13, 0x0061
2034: dd 20 and r13, r13
2036: e1 f7 brne .-8 ; 0x2030 <edit_parameter2+0x15c>
}
2038: 80 91 e6 04 lds r24, 0x04E6
203c: 88 30 cpi r24, 0x08 ; 8
203e: 21 f0 breq .+8 ; 0x2048 <edit_parameter2+0x174>
2040: 80 91 e6 04 lds r24, 0x04E6
2044: 84 30 cpi r24, 0x04 ; 4
2046: e1 f6 brne .-72 ; 0x2000 <edit_parameter2+0x12c>
while ((key != key_enter) && (key != key_esc));
if (key == key_enter)
2048: 80 91 e6 04 lds r24, 0x04E6
204c: 88 30 cpi r24, 0x08 ; 8
204e: 49 f4 brne .+18 ; 0x2062 <edit_parameter2+0x18e>
{
bin[line] = par;
2050: ea 0c add r14, r10
2052: fb 1c adc r15, r11
2054: f7 01 movw r30, r14
2056: 12 87 std Z+10, r17 ; 0x0a
p_buffer[52] = bindec(bin);
2058: c4 01 movw r24, r8
205a: 0e 94 62 0e call 0x1cc4 <bindec>
205e: 80 93 97 04 sts 0x0497, r24
}
lcd_cls();
2062: 0e 94 36 07 call 0xe6c <lcd_cls>
decimal(p_buffer[52],text);
2066: be 01 movw r22, r28
2068: 6f 5f subi r22, 0xFF ; 255
206a: 7f 4f sbci r23, 0xFF ; 255
206c: 80 91 97 04 lds r24, 0x0497
2070: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print(text,0);
2074: 6d 2d mov r22, r13
2076: ce 01 movw r24, r28
2078: 01 96 adiw r24, 0x01 ; 1
207a: 0e 94 ea 08 call 0x11d4 <lcd_print>
timer = 200;
207e: 88 ec ldi r24, 0xC8 ; 200
2080: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
2084: 80 91 61 00 lds r24, 0x0061
2088: 88 23 and r24, r24
208a: e1 f7 brne .-8 ; 0x2084 <edit_parameter2+0x1b0>
208c: 6e c0 rjmp .+220 ; 0x216a <edit_parameter2+0x296>
}
}
if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen)
208e: dd 20 and r13, r13
2090: 09 f0 breq .+2 ; 0x2094 <edit_parameter2+0x1c0>
2092: 6b c0 rjmp .+214 ; 0x216a <edit_parameter2+0x296>
{
binary(p_buffer[8],bin);
2094: 5b e0 ldi r21, 0x0B ; 11
2096: 85 2e mov r8, r21
2098: 91 2c mov r9, r1
209a: 8c 0e add r8, r28
209c: 9d 1e adc r9, r29
209e: b4 01 movw r22, r8
20a0: 80 91 6b 04 lds r24, 0x046B
20a4: 0e 94 47 0e call 0x1c8e <binary>
text[1] = 0x00;
20a8: da 82 std Y+2, r13 ; 0x02
 
line = menu_choose(0,7,4);
20aa: 44 e0 ldi r20, 0x04 ; 4
20ac: 67 e0 ldi r22, 0x07 ; 7
20ae: 8d 2d mov r24, r13
20b0: 0e 94 86 11 call 0x230c <menu_choose>
20b4: 08 2f mov r16, r24
if (line != 255) // Wenn line == 255, wurde Escape gedrückt
20b6: 8f 3f cpi r24, 0xFF ; 255
20b8: 09 f4 brne .+2 ; 0x20bc <edit_parameter2+0x1e8>
20ba: 57 c0 rjmp .+174 ; 0x216a <edit_parameter2+0x296>
{
par = bin[line];
20bc: e8 2e mov r14, r24
20be: ff 24 eor r15, r15
20c0: 5e 01 movw r10, r28
20c2: 08 94 sec
20c4: a1 1c adc r10, r1
20c6: b1 1c adc r11, r1
20c8: f7 01 movw r30, r14
20ca: ea 0d add r30, r10
20cc: fb 1d adc r31, r11
20ce: 12 85 ldd r17, Z+10 ; 0x0a
lcd_print_atp(4,line,PSTR("-"),0);
20d0: 2d 2d mov r18, r13
20d2: 4d e0 ldi r20, 0x0D ; 13
20d4: 5c e0 ldi r21, 0x0C ; 12
20d6: 68 2f mov r22, r24
20d8: 84 e0 ldi r24, 0x04 ; 4
20da: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
do
{
if (key == key_minus)
20de: 80 91 e6 04 lds r24, 0x04E6
20e2: 81 30 cpi r24, 0x01 ; 1
20e4: 09 f4 brne .+2 ; 0x20e8 <edit_parameter2+0x214>
{
par = 0x00;
20e6: 10 e0 ldi r17, 0x00 ; 0
}
if (key == key_plus)
20e8: 80 91 e6 04 lds r24, 0x04E6
20ec: 82 30 cpi r24, 0x02 ; 2
20ee: 09 f4 brne .+2 ; 0x20f2 <edit_parameter2+0x21e>
{
par = 0x01;
20f0: 11 e0 ldi r17, 0x01 ; 1
}
text[0] = par+0x30;
20f2: 10 5d subi r17, 0xD0 ; 208
20f4: 19 83 std Y+1, r17 ; 0x01
20f6: 10 53 subi r17, 0x30 ; 48
lcd_print_at(0,line,text,0);
20f8: 20 e0 ldi r18, 0x00 ; 0
20fa: ae 01 movw r20, r28
20fc: 4f 5f subi r20, 0xFF ; 255
20fe: 5f 4f sbci r21, 0xFF ; 255
2100: 60 2f mov r22, r16
2102: 82 2f mov r24, r18
2104: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 20;
2108: 84 e1 ldi r24, 0x14 ; 20
210a: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
210e: d0 90 61 00 lds r13, 0x0061
2112: dd 20 and r13, r13
2114: e1 f7 brne .-8 ; 0x210e <edit_parameter2+0x23a>
}
2116: 80 91 e6 04 lds r24, 0x04E6
211a: 88 30 cpi r24, 0x08 ; 8
211c: 21 f0 breq .+8 ; 0x2126 <edit_parameter2+0x252>
211e: 80 91 e6 04 lds r24, 0x04E6
2122: 84 30 cpi r24, 0x04 ; 4
2124: e1 f6 brne .-72 ; 0x20de <edit_parameter2+0x20a>
while ((key != key_enter) && (key != key_esc));
if (key == key_enter)
2126: 80 91 e6 04 lds r24, 0x04E6
212a: 88 30 cpi r24, 0x08 ; 8
212c: 49 f4 brne .+18 ; 0x2140 <edit_parameter2+0x26c>
{
bin[line] = par;
212e: ea 0c add r14, r10
2130: fb 1c adc r15, r11
2132: f7 01 movw r30, r14
2134: 12 87 std Z+10, r17 ; 0x0a
p_buffer[8] = bindec(bin);
2136: c4 01 movw r24, r8
2138: 0e 94 62 0e call 0x1cc4 <bindec>
213c: 80 93 6b 04 sts 0x046B, r24
}
lcd_cls();
2140: 0e 94 36 07 call 0xe6c <lcd_cls>
decimal(p_buffer[8],text);
2144: be 01 movw r22, r28
2146: 6f 5f subi r22, 0xFF ; 255
2148: 7f 4f sbci r23, 0xFF ; 255
214a: 80 91 6b 04 lds r24, 0x046B
214e: 0e 94 7c 0e call 0x1cf8 <decimal>
lcd_print(text,0);
2152: 6d 2d mov r22, r13
2154: ce 01 movw r24, r28
2156: 01 96 adiw r24, 0x01 ; 1
2158: 0e 94 ea 08 call 0x11d4 <lcd_print>
timer = 200;
215c: 88 ec ldi r24, 0xC8 ; 200
215e: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
2162: 80 91 61 00 lds r24, 0x0061
2166: 88 23 and r24, r24
2168: e1 f7 brne .-8 ; 0x2162 <edit_parameter2+0x28e>
216a: 62 96 adiw r28, 0x12 ; 18
216c: 0f b6 in r0, 0x3f ; 63
216e: f8 94 cli
2170: de bf out 0x3e, r29 ; 62
2172: 0f be out 0x3f, r0 ; 63
2174: cd bf out 0x3d, r28 ; 61
2176: df 91 pop r29
2178: cf 91 pop r28
217a: 1f 91 pop r17
217c: 0f 91 pop r16
217e: ff 90 pop r15
2180: ef 90 pop r14
2182: df 90 pop r13
2184: bf 90 pop r11
2186: af 90 pop r10
2188: 9f 90 pop r9
218a: 8f 90 pop r8
218c: 08 95 ret
 
0000218e <edit_parameter>:
}
}
}
 
 
void edit_parameter (void) // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü
{
218e: 1f 93 push r17
2190: cf 93 push r28
2192: df 93 push r29
2194: cd b7 in r28, 0x3d ; 61
2196: de b7 in r29, 0x3e ; 62
2198: 2f 97 sbiw r28, 0x0f ; 15
219a: 0f b6 in r0, 0x3f ; 63
219c: f8 94 cli
219e: de bf out 0x3e, r29 ; 62
21a0: 0f be out 0x3f, r0 ; 63
21a2: cd bf out 0x3d, r28 ; 61
uint8_t page; // 12 Pages
uint8_t text[15];
uint8_t lines;
uint8_t parameter;
lcd_cls();
21a4: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Lade Parameter\r\n"),0);
21a8: 60 e0 ldi r22, 0x00 ; 0
21aa: 8f e0 ldi r24, 0x0F ; 15
21ac: 9c e0 ldi r25, 0x0C ; 12
21ae: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 1:\r\n"),0);
21b2: 60 e0 ldi r22, 0x00 ; 0
21b4: 80 e2 ldi r24, 0x20 ; 32
21b6: 9c e0 ldi r25, 0x0C ; 12
21b8: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 2:\r\n"),0);
21bc: 60 e0 ldi r22, 0x00 ; 0
21be: 86 e2 ldi r24, 0x26 ; 38
21c0: 9c e0 ldi r25, 0x0C ; 12
21c2: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 3:\r\n"),0);
21c6: 60 e0 ldi r22, 0x00 ; 0
21c8: 8c e2 ldi r24, 0x2C ; 44
21ca: 9c e0 ldi r25, 0x0C ; 12
21cc: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 4:\r\n"),0);
21d0: 60 e0 ldi r22, 0x00 ; 0
21d2: 82 e3 ldi r24, 0x32 ; 50
21d4: 9c e0 ldi r25, 0x0C ; 12
21d6: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR(" 5:\r\n"),0);
21da: 60 e0 ldi r22, 0x00 ; 0
21dc: 88 e3 ldi r24, 0x38 ; 56
21de: 9c e0 ldi r25, 0x0C ; 12
21e0: 0e 94 aa 08 call 0x1154 <lcd_printp>
parameter = menu_choose(1,5,0);
21e4: 40 e0 ldi r20, 0x00 ; 0
21e6: 65 e0 ldi r22, 0x05 ; 5
21e8: 81 e0 ldi r24, 0x01 ; 1
21ea: 0e 94 86 11 call 0x230c <menu_choose>
 
page = 2;
21ee: 12 e0 ldi r17, 0x02 ; 2
if (read_parameter(parameter) == 1)
21f0: 0e 94 02 0e call 0x1c04 <read_parameter>
21f4: 81 30 cpi r24, 0x01 ; 1
21f6: 41 f4 brne .+16 ; 0x2208 <edit_parameter+0x7a>
{
lcd_print_atp(0,6,PSTR("Timeout"),0);
21f8: 20 e0 ldi r18, 0x00 ; 0
21fa: 4e e3 ldi r20, 0x3E ; 62
21fc: 5c e0 ldi r21, 0x0C ; 12
21fe: 66 e0 ldi r22, 0x06 ; 6
2200: 82 2f mov r24, r18
2202: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
2206: 5c c0 rjmp .+184 ; 0x22c0 <edit_parameter+0x132>
}
else
{
do
{
lcd_cls();
2208: 0e 94 36 07 call 0xe6c <lcd_cls>
utoa(page,text,10);
220c: 4a e0 ldi r20, 0x0A ; 10
220e: 50 e0 ldi r21, 0x00 ; 0
2210: be 01 movw r22, r28
2212: 6f 5f subi r22, 0xFF ; 255
2214: 7f 4f sbci r23, 0xFF ; 255
2216: 81 2f mov r24, r17
2218: 99 27 eor r25, r25
221a: 0e 94 f0 12 call 0x25e0 <utoa>
lcd_print(text,0);
221e: 60 e0 ldi r22, 0x00 ; 0
2220: ce 01 movw r24, r28
2222: 01 96 adiw r24, 0x01 ; 1
2224: 0e 94 ea 08 call 0x11d4 <lcd_print>
timer = 50;
2228: 82 e3 ldi r24, 0x32 ; 50
222a: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
222e: 80 91 61 00 lds r24, 0x0061
2232: 88 23 and r24, r24
2234: e1 f7 brne .-8 ; 0x222e <edit_parameter+0xa0>
lcd_cls();
2236: 0e 94 36 07 call 0xe6c <lcd_cls>
lines = show_parameter(page);
223a: 81 2f mov r24, r17
223c: 0e 94 a1 0e call 0x1d42 <show_parameter>
2240: 68 2f mov r22, r24
while (key == key_nokey);
2242: 80 91 e6 04 lds r24, 0x04E6
2246: 88 23 and r24, r24
2248: e1 f3 breq .-8 ; 0x2242 <edit_parameter+0xb4>
if (key == key_plus)
224a: 80 91 e6 04 lds r24, 0x04E6
224e: 82 30 cpi r24, 0x02 ; 2
2250: 09 f4 brne .+2 ; 0x2254 <edit_parameter+0xc6>
page++;
2252: 1f 5f subi r17, 0xFF ; 255
if (key == key_minus)
2254: 80 91 e6 04 lds r24, 0x04E6
2258: 81 30 cpi r24, 0x01 ; 1
225a: 09 f4 brne .+2 ; 0x225e <edit_parameter+0xd0>
page--;
225c: 11 50 subi r17, 0x01 ; 1
if (page == 255)
225e: 1f 3f cpi r17, 0xFF ; 255
2260: 11 f4 brne .+4 ; 0x2266 <edit_parameter+0xd8>
page = 12;
2262: 1c e0 ldi r17, 0x0C ; 12
2264: 03 c0 rjmp .+6 ; 0x226c <edit_parameter+0xde>
if (page > 12)
2266: 1d 30 cpi r17, 0x0D ; 13
2268: 08 f0 brcs .+2 ; 0x226c <edit_parameter+0xde>
page = 0;
226a: 10 e0 ldi r17, 0x00 ; 0
if (key == key_enter)
226c: 80 91 e6 04 lds r24, 0x04E6
2270: 88 30 cpi r24, 0x08 ; 8
2272: 19 f4 brne .+6 ; 0x227a <edit_parameter+0xec>
edit_parameter2(page,lines);
2274: 81 2f mov r24, r17
2276: 0e 94 6a 0f call 0x1ed4 <edit_parameter2>
}
227a: 80 91 e6 04 lds r24, 0x04E6
227e: 84 30 cpi r24, 0x04 ; 4
2280: 19 f6 brne .-122 ; 0x2208 <edit_parameter+0x7a>
while (key != key_esc);
lcd_cls();
2282: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Parameter speichern?\r\n ja\r\n nein"),0);
2286: 60 e0 ldi r22, 0x00 ; 0
2288: 86 e4 ldi r24, 0x46 ; 70
228a: 9c e0 ldi r25, 0x0C ; 12
228c: 0e 94 aa 08 call 0x1154 <lcd_printp>
lines = menu_choose(1,2,0);
2290: 40 e0 ldi r20, 0x00 ; 0
2292: 62 e0 ldi r22, 0x02 ; 2
2294: 81 e0 ldi r24, 0x01 ; 1
2296: 0e 94 86 11 call 0x230c <menu_choose>
if (lines == 1 )
229a: 81 30 cpi r24, 0x01 ; 1
229c: 61 f4 brne .+24 ; 0x22b6 <edit_parameter+0x128>
{
lcd_printp(PSTR("\r\n--->"),0);
229e: 60 e0 ldi r22, 0x00 ; 0
22a0: 89 e6 ldi r24, 0x69 ; 105
22a2: 9c e0 ldi r25, 0x0C ; 12
22a4: 0e 94 aa 08 call 0x1154 <lcd_printp>
write_parameter(5); // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert.
22a8: 85 e0 ldi r24, 0x05 ; 5
22aa: 0e 94 2c 0e call 0x1c58 <write_parameter>
lcd_printp(PSTR("\r\nParameter gespeichert"),0);
22ae: 60 e0 ldi r22, 0x00 ; 0
22b0: 80 e7 ldi r24, 0x70 ; 112
22b2: 9c e0 ldi r25, 0x0C ; 12
22b4: 03 c0 rjmp .+6 ; 0x22bc <edit_parameter+0x12e>
}
else
{
lcd_printp(PSTR("\r\nNicht gespeichert"),0);
22b6: 60 e0 ldi r22, 0x00 ; 0
22b8: 88 e8 ldi r24, 0x88 ; 136
22ba: 9c e0 ldi r25, 0x0C ; 12
22bc: 0e 94 aa 08 call 0x1154 <lcd_printp>
}
}
timer = 100;
22c0: 84 e6 ldi r24, 0x64 ; 100
22c2: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
22c6: 80 91 61 00 lds r24, 0x0061
22ca: 88 23 and r24, r24
22cc: e1 f7 brne .-8 ; 0x22c6 <edit_parameter+0x138>
22ce: 2f 96 adiw r28, 0x0f ; 15
22d0: 0f b6 in r0, 0x3f ; 63
22d2: f8 94 cli
22d4: de bf out 0x3e, r29 ; 62
22d6: 0f be out 0x3f, r0 ; 63
22d8: cd bf out 0x3d, r28 ; 61
22da: df 91 pop r29
22dc: cf 91 pop r28
22de: 1f 91 pop r17
22e0: 08 95 ret
 
000022e2 <menu_set_cursor>:
 
// Subroutine für den Stern (*) bzw. Cursor
 
void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos)
{
22e2: 0f 93 push r16
22e4: 1f 93 push r17
22e6: 06 2f mov r16, r22
22e8: 14 2f mov r17, r20
lcd_print_atp(pos,before,PSTR(" "),0); // Die vorhergehende Position löschen
22ea: 20 e0 ldi r18, 0x00 ; 0
22ec: 4c e9 ldi r20, 0x9C ; 156
22ee: 5c e0 ldi r21, 0x0C ; 12
22f0: 68 2f mov r22, r24
22f2: 81 2f mov r24, r17
22f4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
lcd_print_atp(pos,line,PSTR("*"),0); // Den Cursor an der aktuellen Position anzeigen
22f8: 20 e0 ldi r18, 0x00 ; 0
22fa: 4e e9 ldi r20, 0x9E ; 158
22fc: 5c e0 ldi r21, 0x0C ; 12
22fe: 60 2f mov r22, r16
2300: 81 2f mov r24, r17
2302: 0e 94 e1 08 call 0x11c2 <lcd_print_atp>
2306: 1f 91 pop r17
2308: 0f 91 pop r16
230a: 08 95 ret
 
0000230c <menu_choose>:
}
 
 
// Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max.
// Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden.
// Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben.
 
uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos)
{
230c: ef 92 push r14
230e: ff 92 push r15
2310: 0f 93 push r16
2312: 1f 93 push r17
2314: cf 93 push r28
2316: f8 2e mov r15, r24
2318: e6 2e mov r14, r22
231a: 04 2f mov r16, r20
uint8_t line, before;
line = min;
231c: c8 2f mov r28, r24
before = min;
231e: 18 2f mov r17, r24
menu_set_cursor(line,line,pos);
2320: 68 2f mov r22, r24
2322: 0e 94 71 11 call 0x22e2 <menu_set_cursor>
do
{
while (key != key_nokey);
2326: 80 91 e6 04 lds r24, 0x04E6
232a: 88 23 and r24, r24
232c: e1 f7 brne .-8 ; 0x2326 <menu_choose+0x1a>
while(key == key_nokey);
232e: 80 91 e6 04 lds r24, 0x04E6
2332: 88 23 and r24, r24
2334: e1 f3 breq .-8 ; 0x232e <menu_choose+0x22>
if ((key == key_plus) && (line < max))
2336: 80 91 e6 04 lds r24, 0x04E6
233a: 82 30 cpi r24, 0x02 ; 2
233c: 19 f4 brne .+6 ; 0x2344 <menu_choose+0x38>
233e: ce 15 cp r28, r14
2340: 08 f4 brcc .+2 ; 0x2344 <menu_choose+0x38>
line ++;
2342: cf 5f subi r28, 0xFF ; 255
if ((key == key_minus) && (line > min))
2344: 80 91 e6 04 lds r24, 0x04E6
2348: 81 30 cpi r24, 0x01 ; 1
234a: 19 f4 brne .+6 ; 0x2352 <menu_choose+0x46>
234c: fc 16 cp r15, r28
234e: 08 f4 brcc .+2 ; 0x2352 <menu_choose+0x46>
line --;
2350: c1 50 subi r28, 0x01 ; 1
 
menu_set_cursor(before,line,pos);
2352: 40 2f mov r20, r16
2354: 6c 2f mov r22, r28
2356: 81 2f mov r24, r17
2358: 0e 94 71 11 call 0x22e2 <menu_set_cursor>
before = line;
235c: 1c 2f mov r17, r28
}
235e: 80 91 e6 04 lds r24, 0x04E6
2362: 88 30 cpi r24, 0x08 ; 8
2364: 21 f0 breq .+8 ; 0x236e <menu_choose+0x62>
2366: 80 91 e6 04 lds r24, 0x04E6
236a: 84 30 cpi r24, 0x04 ; 4
236c: e1 f6 brne .-72 ; 0x2326 <menu_choose+0x1a>
while ((key != key_enter) && (key != key_esc)); // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde
if (key == key_esc)
236e: 80 91 e6 04 lds r24, 0x04E6
2372: 84 30 cpi r24, 0x04 ; 4
2374: 09 f4 brne .+2 ; 0x2378 <menu_choose+0x6c>
line = 255;
2376: cf ef ldi r28, 0xFF ; 255
while (key != key_nokey); // Warten, bis Taste wieder losgelassen wurde
2378: 80 91 e6 04 lds r24, 0x04E6
237c: 88 23 and r24, r24
237e: e1 f7 brne .-8 ; 0x2378 <menu_choose+0x6c>
return line;
}
2380: 8c 2f mov r24, r28
2382: 99 27 eor r25, r25
2384: cf 91 pop r28
2386: 1f 91 pop r17
2388: 0f 91 pop r16
238a: ff 90 pop r15
238c: ef 90 pop r14
238e: 08 95 ret
 
00002390 <main_menu>:
 
void main_menu (void)
{
lcd_cls();
2390: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0);
2394: 60 e0 ldi r22, 0x00 ; 0
2396: 80 ea ldi r24, 0xA0 ; 160
2398: 9c e0 ldi r25, 0x0C ; 12
239a: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR("\r\nDisplay\r\n"),0);
239e: 60 e0 ldi r22, 0x00 ; 0
23a0: 87 eb ldi r24, 0xB7 ; 183
23a2: 9c e0 ldi r25, 0x0C ; 12
23a4: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR("Parameter\r\n"),0);
23a8: 60 e0 ldi r22, 0x00 ; 0
23aa: 83 ec ldi r24, 0xC3 ; 195
23ac: 9c e0 ldi r25, 0x0C ; 12
23ae: 0e 94 aa 08 call 0x1154 <lcd_printp>
lcd_printp(PSTR("Motortest"),0);
23b2: 60 e0 ldi r22, 0x00 ; 0
23b4: 8f ec ldi r24, 0xCF ; 207
23b6: 9c e0 ldi r25, 0x0C ; 12
23b8: 0e 94 aa 08 call 0x1154 <lcd_printp>
switch(menu_choose(2,4,10))
23bc: 4a e0 ldi r20, 0x0A ; 10
23be: 64 e0 ldi r22, 0x04 ; 4
23c0: 82 e0 ldi r24, 0x02 ; 2
23c2: 0e 94 86 11 call 0x230c <menu_choose>
23c6: 99 27 eor r25, r25
23c8: 83 30 cpi r24, 0x03 ; 3
23ca: 91 05 cpc r25, r1
23cc: 61 f0 breq .+24 ; 0x23e6 <main_menu+0x56>
23ce: 84 30 cpi r24, 0x04 ; 4
23d0: 91 05 cpc r25, r1
23d2: 1c f4 brge .+6 ; 0x23da <main_menu+0x4a>
23d4: 02 97 sbiw r24, 0x02 ; 2
23d6: 21 f0 breq .+8 ; 0x23e0 <main_menu+0x50>
23d8: 08 95 ret
23da: 04 97 sbiw r24, 0x04 ; 4
23dc: 39 f0 breq .+14 ; 0x23ec <main_menu+0x5c>
23de: 08 95 ret
{
case 2:
display_data(); // LCD-Modus
23e0: 0e 94 23 12 call 0x2446 <display_data>
break;
23e4: 08 95 ret
case 3:
edit_parameter(); // Parameter (Settings) laden/editieren
23e6: 0e 94 c7 10 call 0x218e <edit_parameter>
break;
23ea: 08 95 ret
case 4:
motor_test(); // primitiver Motor-Test
23ec: 0e 94 83 12 call 0x2506 <motor_test>
23f0: 08 95 ret
 
000023f2 <read_display>:
#include "parameter.h"
#include "menu.h"
 
uint8_t read_display (uint8_t command) //
{
23f2: cf 93 push r28
uint8_t timeout;
timeout = 0;
23f4: c0 e0 ldi r28, 0x00 ; 0
p_buffer[0] = '#'; // Display-Zeile anfordern
23f6: 93 e2 ldi r25, 0x23 ; 35
23f8: 90 93 63 04 sts 0x0463, r25
p_buffer[1] = 'a';
23fc: 91 e6 ldi r25, 0x61 ; 97
23fe: 90 93 64 04 sts 0x0464, r25
p_buffer[2] = 'h';
2402: 98 e6 ldi r25, 0x68 ; 104
2404: 90 93 65 04 sts 0x0465, r25
p_buffer[3] = command;
2408: 80 93 66 04 sts 0x0466, r24
p_buffer[4] = 0;
240c: c0 93 67 04 sts 0x0467, r28
p_buffer[5] = 0;
2410: c0 93 68 04 sts 0x0468, r28
base64_send(6);
2414: 86 e0 ldi r24, 0x06 ; 6
2416: 0e 94 bc 0c call 0x1978 <base64_send>
do // warten, bis die Parameter gesendet werden
{
if (get_message() == 1)
241a: 0e 94 95 0c call 0x192a <get_message>
241e: 81 30 cpi r24, 0x01 ; 1
2420: 09 f4 brne .+2 ; 0x2424 <read_display+0x32>
timeout = 10;
2422: ca e0 ldi r28, 0x0A ; 10
timeout ++;
2424: cf 5f subi r28, 0xFF ; 255
}
2426: 80 91 ea 04 lds r24, 0x04EA
242a: 80 53 subi r24, 0x30 ; 48
242c: 85 30 cpi r24, 0x05 ; 5
242e: 10 f0 brcs .+4 ; 0x2434 <read_display+0x42>
2430: ca 30 cpi r28, 0x0A ; 10
2432: 98 f3 brcs .-26 ; 0x241a <read_display+0x28>
while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10));
if (timeout >= 10)
2434: ca 30 cpi r28, 0x0A ; 10
2436: 18 f0 brcs .+6 ; 0x243e <read_display+0x4c>
return 1;
2438: 81 e0 ldi r24, 0x01 ; 1
243a: 90 e0 ldi r25, 0x00 ; 0
243c: 02 c0 rjmp .+4 ; 0x2442 <read_display+0x50>
else
return 0;
243e: 80 e0 ldi r24, 0x00 ; 0
2440: 90 e0 ldi r25, 0x00 ; 0
2442: cf 91 pop r28
2444: 08 95 ret
 
00002446 <display_data>:
}
 
void display_data (void)
{
2446: 0f 93 push r16
2448: 1f 93 push r17
244a: cf 93 push r28
244c: df 93 push r29
244e: cd b7 in r28, 0x3d ; 61
2450: de b7 in r29, 0x3e ; 62
2452: 2a 97 sbiw r28, 0x0a ; 10
2454: 0f b6 in r0, 0x3f ; 63
2456: f8 94 cli
2458: de bf out 0x3e, r29 ; 62
245a: 0f be out 0x3f, r0 ; 63
245c: cd bf out 0x3d, r28 ; 61
uint8_t line;
uint8_t text[10];
 
lcd_cls();
245e: 0e 94 36 07 call 0xe6c <lcd_cls>
lcd_printp(PSTR("Display"),0);
2462: 60 e0 ldi r22, 0x00 ; 0
2464: 89 ed ldi r24, 0xD9 ; 217
2466: 9c e0 ldi r25, 0x0C ; 12
2468: 0e 94 aa 08 call 0x1154 <lcd_printp>
do
{
while (key != 0x00);
246c: 00 91 e6 04 lds r16, 0x04E6
2470: 00 23 and r16, r16
2472: e1 f7 brne .-8 ; 0x246c <display_data+0x26>
if (read_display(0) == 1)
2474: 80 2f mov r24, r16
2476: 0e 94 f9 11 call 0x23f2 <read_display>
247a: 81 30 cpi r24, 0x01 ; 1
247c: 69 f4 brne .+26 ; 0x2498 <display_data+0x52>
{
lcd_printp(PSTR("\r\nTimeout!"),0);
247e: 60 2f mov r22, r16
2480: 81 ee ldi r24, 0xE1 ; 225
2482: 9c e0 ldi r25, 0x0C ; 12
2484: 0e 94 aa 08 call 0x1154 <lcd_printp>
timer = 200;
2488: 88 ec ldi r24, 0xC8 ; 200
248a: 80 93 61 00 sts 0x0061, r24
while (timer > 0);
248e: 80 91 61 00 lds r24, 0x0061
2492: 88 23 and r24, r24
2494: e1 f7 brne .-8 ; 0x248e <display_data+0x48>
break;
2496: 2c c0 rjmp .+88 ; 0x24f0 <display_data+0xaa>
}
else
{
line = r_buffer[1];
2498: 10 91 ea 04 lds r17, 0x04EA
text[0] = line;
249c: 19 83 std Y+1, r17 ; 0x01
text[1] = 0x00;
249e: 0a 83 std Y+2, r16 ; 0x02
lcd_print_at(10,0,text,0);
24a0: 20 2f mov r18, r16
24a2: ae 01 movw r20, r28
24a4: 4f 5f subi r20, 0xFF ; 255
24a6: 5f 4f sbci r21, 0xFF ; 255
24a8: 60 2f mov r22, r16
24aa: 8a e0 ldi r24, 0x0A ; 10
24ac: 0e 94 1d 09 call 0x123a <lcd_print_at>
lcd_print_at(0,line+1,p_buffer,0);
24b0: 1f 5f subi r17, 0xFF ; 255
24b2: 20 2f mov r18, r16
24b4: 43 e6 ldi r20, 0x63 ; 99
24b6: 54 e0 ldi r21, 0x04 ; 4
24b8: 61 2f mov r22, r17
24ba: 80 2f mov r24, r16
24bc: 0e 94 1d 09 call 0x123a <lcd_print_at>
timer = 10;
24c0: 8a e0 ldi r24, 0x0A ; 10
24c2: 80 93 61 00 sts 0x0061, r24
while(timer > 0);
24c6: 80 91 61 00 lds r24, 0x0061
24ca: 88 23 and r24, r24
24cc: e1 f7 brne .-8 ; 0x24c6 <display_data+0x80>
if (key == 0x01)
24ce: 80 91 e6 04 lds r24, 0x04E6
24d2: 81 30 cpi r24, 0x01 ; 1
24d4: 11 f4 brne .+4 ; 0x24da <display_data+0x94>
read_display(1);
24d6: 0e 94 f9 11 call 0x23f2 <read_display>
if (key == 0x02)
24da: 80 91 e6 04 lds r24, 0x04E6
24de: 82 30 cpi r24, 0x02 ; 2
24e0: 11 f4 brne .+4 ; 0x24e6 <display_data+0xa0>
read_display(2);
24e2: 0e 94 f9 11 call 0x23f2 <read_display>
}
}
24e6: 80 91 e6 04 lds r24, 0x04E6
24ea: 84 30 cpi r24, 0x04 ; 4
24ec: 09 f0 breq .+2 ; 0x24f0 <display_data+0xaa>
24ee: be cf rjmp .-132 ; 0x246c <display_data+0x26>
24f0: 2a 96 adiw r28, 0x0a ; 10
24f2: 0f b6 in r0, 0x3f ; 63
24f4: f8 94 cli
24f6: de bf out 0x3e, r29 ; 62
24f8: 0f be out 0x3f, r0 ; 63
24fa: cd bf out 0x3d, r28 ; 61
24fc: df 91 pop r29
24fe: cf 91 pop r28
2500: 1f 91 pop r17
2502: 0f 91 pop r16
2504: 08 95 ret
 
00002506 <motor_test>:
#include "base64.h"
 
void motor_test(void)
{
lcd_cls();
2506: 0e 94 36 07 call 0xe6c <lcd_cls>
 
while (key != 0x00);
250a: 60 91 e6 04 lds r22, 0x04E6
250e: 66 23 and r22, r22
2510: e1 f7 brne .-8 ; 0x250a <motor_test+0x4>
 
lcd_printp(PSTR("Taste drücken\r\n"),0);
2512: 8c ee ldi r24, 0xEC ; 236
2514: 9c e0 ldi r25, 0x0C ; 12
2516: 0e 94 aa 08 call 0x1154 <lcd_printp>
while (key == 0x00);
251a: 80 91 e6 04 lds r24, 0x04E6
251e: 88 23 and r24, r24
2520: e1 f3 breq .-8 ; 0x251a <motor_test+0x14>
if (key == 0x08) // nur, wenn die Bestätigungstaste gedrückt wird
2522: 80 91 e6 04 lds r24, 0x04E6
2526: 88 30 cpi r24, 0x08 ; 8
2528: c9 f4 brne .+50 ; 0x255c <motor_test+0x56>
{
p_buffer[0] = '#'; // Motoren einschalten
252a: 83 e2 ldi r24, 0x23 ; 35
252c: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
2530: 81 e6 ldi r24, 0x61 ; 97
2532: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = 't';
2536: 84 e7 ldi r24, 0x74 ; 116
2538: 80 93 65 04 sts 0x0465, r24
p_buffer[3] = 10;
253c: 8a e0 ldi r24, 0x0A ; 10
253e: 80 93 66 04 sts 0x0466, r24
p_buffer[4] = 10;
2542: 80 93 67 04 sts 0x0467, r24
p_buffer[5] = 10;
2546: 80 93 68 04 sts 0x0468, r24
p_buffer[6] = 10;
254a: 80 93 69 04 sts 0x0469, r24
p_buffer[7] = 0;
254e: 10 92 6a 04 sts 0x046A, r1
p_buffer[8] = 0;
2552: 10 92 6b 04 sts 0x046B, r1
 
base64_send(9);
2556: 89 e0 ldi r24, 0x09 ; 9
2558: 0e 94 bc 0c call 0x1978 <base64_send>
}
while (key != 0x00);
255c: 80 91 e6 04 lds r24, 0x04E6
2560: 88 23 and r24, r24
2562: e1 f7 brne .-8 ; 0x255c <motor_test+0x56>
while (key == 0x00);
2564: 80 91 e6 04 lds r24, 0x04E6
2568: 88 23 and r24, r24
256a: e1 f3 breq .-8 ; 0x2564 <motor_test+0x5e>
p_buffer[0] = '#'; // Motoren ausschalten
256c: 83 e2 ldi r24, 0x23 ; 35
256e: 80 93 63 04 sts 0x0463, r24
p_buffer[1] = 'a';
2572: 81 e6 ldi r24, 0x61 ; 97
2574: 80 93 64 04 sts 0x0464, r24
p_buffer[2] = 't';
2578: 84 e7 ldi r24, 0x74 ; 116
257a: 80 93 65 04 sts 0x0465, r24
p_buffer[3] = 0;
257e: 10 92 66 04 sts 0x0466, r1
p_buffer[4] = 0;
2582: 10 92 67 04 sts 0x0467, r1
p_buffer[5] = 0;
2586: 10 92 68 04 sts 0x0468, r1
p_buffer[6] = 0;
258a: 10 92 69 04 sts 0x0469, r1
p_buffer[7] = 0;
258e: 10 92 6a 04 sts 0x046A, r1
p_buffer[8] = 0;
2592: 10 92 6b 04 sts 0x046B, r1
 
base64_send(9);
2596: 89 e0 ldi r24, 0x09 ; 9
2598: 0e 94 bc 0c call 0x1978 <base64_send>
259c: 08 95 ret
 
0000259e <itoa>:
259e: fb 01 movw r30, r22
25a0: 9f 01 movw r18, r30
25a2: e8 94 clt
25a4: 42 30 cpi r20, 0x02 ; 2
25a6: c4 f0 brlt .+48 ; 0x25d8 <itoa+0x3a>
25a8: 45 32 cpi r20, 0x25 ; 37
25aa: b4 f4 brge .+44 ; 0x25d8 <itoa+0x3a>
25ac: 4a 30 cpi r20, 0x0A ; 10
25ae: 29 f4 brne .+10 ; 0x25ba <itoa+0x1c>
25b0: 97 fb bst r25, 7
25b2: 1e f4 brtc .+6 ; 0x25ba <itoa+0x1c>
25b4: 90 95 com r25
25b6: 81 95 neg r24
25b8: 9f 4f sbci r25, 0xFF ; 255
25ba: 64 2f mov r22, r20
25bc: 77 27 eor r23, r23
25be: 0e 94 22 13 call 0x2644 <__udivmodhi4>
25c2: 80 5d subi r24, 0xD0 ; 208
25c4: 8a 33 cpi r24, 0x3A ; 58
25c6: 0c f0 brlt .+2 ; 0x25ca <itoa+0x2c>
25c8: 89 5d subi r24, 0xD9 ; 217
25ca: 81 93 st Z+, r24
25cc: cb 01 movw r24, r22
25ce: 00 97 sbiw r24, 0x00 ; 0
25d0: a1 f7 brne .-24 ; 0x25ba <itoa+0x1c>
25d2: 16 f4 brtc .+4 ; 0x25d8 <itoa+0x3a>
25d4: 5d e2 ldi r21, 0x2D ; 45
25d6: 51 93 st Z+, r21
25d8: 10 82 st Z, r1
25da: c9 01 movw r24, r18
25dc: 0c 94 06 13 jmp 0x260c <strrev>
 
000025e0 <utoa>:
25e0: fb 01 movw r30, r22
25e2: 9f 01 movw r18, r30
25e4: 42 30 cpi r20, 0x02 ; 2
25e6: 74 f0 brlt .+28 ; 0x2604 <utoa+0x24>
25e8: 45 32 cpi r20, 0x25 ; 37
25ea: 64 f4 brge .+24 ; 0x2604 <utoa+0x24>
25ec: 64 2f mov r22, r20
25ee: 77 27 eor r23, r23
25f0: 0e 94 22 13 call 0x2644 <__udivmodhi4>
25f4: 80 5d subi r24, 0xD0 ; 208
25f6: 8a 33 cpi r24, 0x3A ; 58
25f8: 0c f0 brlt .+2 ; 0x25fc <utoa+0x1c>
25fa: 89 5d subi r24, 0xD9 ; 217
25fc: 81 93 st Z+, r24
25fe: cb 01 movw r24, r22
2600: 00 97 sbiw r24, 0x00 ; 0
2602: a1 f7 brne .-24 ; 0x25ec <utoa+0xc>
2604: 10 82 st Z, r1
2606: c9 01 movw r24, r18
2608: 0c 94 06 13 jmp 0x260c <strrev>
 
0000260c <strrev>:
260c: dc 01 movw r26, r24
260e: fc 01 movw r30, r24
2610: 01 90 ld r0, Z+
2612: 00 20 and r0, r0
2614: e9 f7 brne .-6 ; 0x2610 <strrev+0x4>
2616: 32 97 sbiw r30, 0x02 ; 2
2618: ae 17 cp r26, r30
261a: bf 07 cpc r27, r31
261c: 30 f4 brcc .+12 ; 0x262a <strrev+0x1e>
261e: 7c 91 ld r23, X
2620: 60 81 ld r22, Z
2622: 70 83 st Z, r23
2624: 31 97 sbiw r30, 0x01 ; 1
2626: 6d 93 st X+, r22
2628: f7 cf rjmp .-18 ; 0x2618 <strrev+0xc>
262a: 08 95 ret
 
0000262c <__udivmodqi4>:
262c: 99 1b sub r25, r25
262e: 79 e0 ldi r23, 0x09 ; 9
2630: 04 c0 rjmp .+8 ; 0x263a <__udivmodqi4_ep>
 
00002632 <__udivmodqi4_loop>:
2632: 99 1f adc r25, r25
2634: 96 17 cp r25, r22
2636: 08 f0 brcs .+2 ; 0x263a <__udivmodqi4_ep>
2638: 96 1b sub r25, r22
 
0000263a <__udivmodqi4_ep>:
263a: 88 1f adc r24, r24
263c: 7a 95 dec r23
263e: c9 f7 brne .-14 ; 0x2632 <__udivmodqi4_loop>
2640: 80 95 com r24
2642: 08 95 ret
 
00002644 <__udivmodhi4>:
2644: aa 1b sub r26, r26
2646: bb 1b sub r27, r27
2648: 51 e1 ldi r21, 0x11 ; 17
264a: 07 c0 rjmp .+14 ; 0x265a <__udivmodhi4_ep>
 
0000264c <__udivmodhi4_loop>:
264c: aa 1f adc r26, r26
264e: bb 1f adc r27, r27
2650: a6 17 cp r26, r22
2652: b7 07 cpc r27, r23
2654: 10 f0 brcs .+4 ; 0x265a <__udivmodhi4_ep>
2656: a6 1b sub r26, r22
2658: b7 0b sbc r27, r23
 
0000265a <__udivmodhi4_ep>:
265a: 88 1f adc r24, r24
265c: 99 1f adc r25, r25
265e: 5a 95 dec r21
2660: a9 f7 brne .-22 ; 0x264c <__udivmodhi4_loop>
2662: 80 95 com r24
2664: 90 95 com r25
2666: bc 01 movw r22, r24
2668: cd 01 movw r24, r26
266a: 08 95 ret