Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
111 | mikeljo | 1 | |
2 | main.elf: file format elf32-avr |
||
3 | |||
4 | Sections: |
||
5 | Idx Name Size VMA LMA File off Algn |
||
6 | |||
7 | CONTENTS, ALLOC, LOAD, READONLY, CODE |
||
8 | 1 .data 00000000 00800060 0000266c 00002700 2**0 |
||
9 | CONTENTS, ALLOC, LOAD, DATA |
||
10 | 2 .bss 00000527 00800060 00800060 00002700 2**0 |
||
11 | ALLOC |
||
12 | 3 .noinit 00000000 00800587 00800587 00002700 2**0 |
||
13 | CONTENTS |
||
14 | 4 .eeprom 00000000 00810000 00810000 00002700 2**0 |
||
15 | CONTENTS |
||
16 | 5 .stab 0000036c 00000000 00000000 00002700 2**2 |
||
17 | CONTENTS, READONLY, DEBUGGING |
||
18 | 6 .stabstr 00000084 00000000 00000000 00002a6c 2**0 |
||
19 | CONTENTS, READONLY, DEBUGGING |
||
20 | 7 .debug_aranges 000000c8 00000000 00000000 00002af0 2**0 |
||
21 | CONTENTS, READONLY, DEBUGGING |
||
22 | 8 .debug_pubnames 00000902 00000000 00000000 00002bb8 2**0 |
||
23 | CONTENTS, READONLY, DEBUGGING |
||
24 | 9 .debug_info 00001dfa 00000000 00000000 000034ba 2**0 |
||
25 | CONTENTS, READONLY, DEBUGGING |
||
26 | 10 .debug_abbrev 0000098e 00000000 00000000 000052b4 2**0 |
||
27 | CONTENTS, READONLY, DEBUGGING |
||
28 | 11 .debug_line 00001982 00000000 00000000 00005c42 2**0 |
||
29 | CONTENTS, READONLY, DEBUGGING |
||
30 | 12 .debug_str 000004dc 00000000 00000000 000075c4 2**0 |
||
31 | CONTENTS, READONLY, DEBUGGING |
||
32 | 13 .debug_ranges 0000000c 0000266c 0000266c 00007aa0 2**0 |
||
33 | CONTENTS, READONLY, DEBUGGING |
||
34 | Disassembly of section .text: |
||
35 | |||
36 | 00000000 <__vectors>: |
||
37 | 0: 0c 94 7e 06 jmp 0xcfc <__init> |
||
38 | 4: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
39 | 8: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
40 | c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
41 | 10: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
42 | 14: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
43 | 18: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
44 | 1c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
45 | 20: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
46 | 24: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
47 | 28: 0c 94 b5 06 jmp 0xd6a <__vector_10> |
||
48 | 2c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
49 | 30: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
50 | 34: 0c 94 f8 0b jmp 0x17f0 <__vector_13> |
||
51 | 38: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
52 | 3c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
53 | 40: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
54 | 44: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
55 | 48: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
56 | 4c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
57 | 50: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
||
58 | |||
59 | 00000054 <__ctors_end>: |
||
60 | 54: 00 00 nop |
||
61 | 56: 00 00 nop |
||
62 | 58: 00 00 nop |
||
63 | 5a: 3e 5b subi r19, 0xBE ; 190 |
||
64 | 5c: 4f 5b subi r20, 0xBF ; 191 |
||
65 | 5e: 3e 00 .word 0x003e ; ???? |
||
66 | 60: 3e 6b ori r19, 0xBE ; 190 |
||
67 | 62: 4f 6b ori r20, 0xBF ; 191 |
||
68 | 64: 3e 00 .word 0x003e ; ???? |
||
69 | 66: 1c 3e cpi r17, 0xEC ; 236 |
||
70 | 68: 7c 3e cpi r23, 0xEC ; 236 |
||
71 | 6a: 1c 00 .word 0x001c ; ???? |
||
72 | 6c: 18 3c cpi r17, 0xC8 ; 200 |
||
73 | 6e: 7e 3c cpi r23, 0xCE ; 206 |
||
74 | 70: 18 00 .word 0x0018 ; ???? |
||
75 | 72: 1c 57 subi r17, 0x7C ; 124 |
||
76 | 74: 7d 57 subi r23, 0x7D ; 125 |
||
77 | 76: 1c 00 .word 0x001c ; ???? |
||
78 | 78: 1c 5e subi r17, 0xEC ; 236 |
||
79 | 7a: 7f 5e subi r23, 0xEF ; 239 |
||
80 | 7c: 1c 00 .word 0x001c ; ???? |
||
81 | 7e: 00 18 sub r0, r0 |
||
82 | 80: 3c 18 sub r3, r12 |
||
83 | 82: 00 00 nop |
||
84 | 84: ff e7 ldi r31, 0x7F ; 127 |
||
85 | 86: c3 e7 ldi r28, 0x73 ; 115 |
||
86 | 88: ff 00 .word 0x00ff ; ???? |
||
87 | 8a: 00 18 sub r0, r0 |
||
88 | 8c: 24 18 sub r2, r4 |
||
89 | 8e: 00 00 nop |
||
90 | 90: ff e7 ldi r31, 0x7F ; 127 |
||
91 | 92: db e7 ldi r29, 0x7B ; 123 |
||
92 | 94: ff 00 .word 0x00ff ; ???? |
||
93 | 96: 30 48 sbci r19, 0x80 ; 128 |
||
94 | 98: 3a 06 cpc r3, r26 |
||
95 | 9a: 0e 00 .word 0x000e ; ???? |
||
96 | 9c: 26 29 or r18, r6 |
||
97 | 9e: 79 29 or r23, r9 |
||
98 | a0: 26 00 .word 0x0026 ; ???? |
||
99 | a2: 40 7f andi r20, 0xF0 ; 240 |
||
100 | a4: 05 05 cpc r16, r5 |
||
101 | a6: 07 00 .word 0x0007 ; ???? |
||
102 | a8: 40 7f andi r20, 0xF0 ; 240 |
||
103 | aa: 05 25 eor r16, r5 |
||
104 | ac: 3f 00 .word 0x003f ; ???? |
||
105 | ae: 5a 3c cpi r21, 0xCA ; 202 |
||
106 | b0: e7 3c cpi r30, 0xC7 ; 199 |
||
107 | b2: 5a 00 .word 0x005a ; ???? |
||
108 | b4: 7f 3e cpi r23, 0xEF ; 239 |
||
109 | b6: 1c 1c adc r1, r12 |
||
110 | b8: 08 00 .word 0x0008 ; ???? |
||
111 | ba: 08 1c adc r0, r8 |
||
112 | bc: 1c 3e cpi r17, 0xEC ; 236 |
||
113 | be: 7f 00 .word 0x007f ; ???? |
||
114 | c0: 14 22 and r1, r20 |
||
115 | c2: 7f 22 and r7, r31 |
||
116 | c4: 14 00 .word 0x0014 ; ???? |
||
117 | c6: 5f 5f subi r21, 0xFF ; 255 |
||
118 | c8: 00 5f subi r16, 0xF0 ; 240 |
||
119 | ca: 5f 00 .word 0x005f ; ???? |
||
120 | cc: 06 09 sbc r16, r6 |
||
121 | ce: 7f 01 movw r14, r30 |
||
122 | d0: 7f 00 .word 0x007f ; ???? |
||
123 | d2: 00 66 ori r16, 0x60 ; 96 |
||
124 | d4: 89 95 .word 0x9589 ; ???? |
||
125 | d6: 6a 00 .word 0x006a ; ???? |
||
126 | d8: 60 60 ori r22, 0x00 ; 0 |
||
127 | da: 60 60 ori r22, 0x00 ; 0 |
||
128 | dc: 60 60 ori r22, 0x00 ; 0 |
||
129 | de: 94 a2 std Z+36, r9 ; 0x24 |
||
130 | e0: ff a2 std Y+39, r15 ; 0x27 |
||
131 | e2: 94 00 .word 0x0094 ; ???? |
||
132 | e4: 08 04 cpc r0, r8 |
||
133 | e6: 7e 04 cpc r7, r14 |
||
134 | e8: 08 00 .word 0x0008 ; ???? |
||
135 | ea: 10 20 and r1, r0 |
||
136 | ec: 7e 20 and r7, r14 |
||
137 | ee: 10 00 .word 0x0010 ; ???? |
||
138 | f0: 08 08 sbc r0, r8 |
||
139 | f2: 2a 1c adc r2, r10 |
||
140 | f4: 08 00 .word 0x0008 ; ???? |
||
141 | f6: 08 1c adc r0, r8 |
||
142 | f8: 2a 08 sbc r2, r10 |
||
143 | fa: 08 00 .word 0x0008 ; ???? |
||
144 | fc: 1e 10 cpse r1, r14 |
||
145 | fe: 10 10 cpse r1, r0 |
||
146 | 100: 10 00 .word 0x0010 ; ???? |
||
147 | 102: 0c 1e adc r0, r28 |
||
148 | 104: 0c 1e adc r0, r28 |
||
149 | 106: 0c 00 .word 0x000c ; ???? |
||
150 | 108: 30 38 cpi r19, 0x80 ; 128 |
||
151 | 10a: 3e 38 cpi r19, 0x8E ; 142 |
||
152 | 10c: 30 00 .word 0x0030 ; ???? |
||
153 | 10e: 06 0e add r0, r22 |
||
154 | 110: 3e 0e add r3, r30 |
||
155 | 112: 06 00 .word 0x0006 ; ???? |
||
156 | ... |
||
157 | 11c: 5f 00 .word 0x005f ; ???? |
||
158 | 11e: 00 00 nop |
||
159 | 120: 00 07 cpc r16, r16 |
||
160 | 122: 00 07 cpc r16, r16 |
||
161 | 124: 00 00 nop |
||
162 | 126: 14 7f andi r17, 0xF4 ; 244 |
||
163 | 128: 14 7f andi r17, 0xF4 ; 244 |
||
164 | 12a: 14 00 .word 0x0014 ; ???? |
||
165 | 12c: 24 2a or r2, r20 |
||
166 | 12e: 7f 2a or r7, r31 |
||
167 | 130: 12 00 .word 0x0012 ; ???? |
||
168 | 132: 23 13 cpse r18, r19 |
||
169 | 134: 08 64 ori r16, 0x48 ; 72 |
||
170 | 136: 62 00 .word 0x0062 ; ???? |
||
171 | 138: 36 49 sbci r19, 0x96 ; 150 |
||
172 | 13a: 56 20 and r5, r6 |
||
173 | 13c: 50 00 .word 0x0050 ; ???? |
||
174 | 13e: 00 08 sbc r0, r0 |
||
175 | 140: 07 03 mulsu r16, r23 |
||
176 | 142: 00 00 nop |
||
177 | 144: 00 1c adc r0, r0 |
||
178 | 146: 22 41 sbci r18, 0x12 ; 18 |
||
179 | 148: 00 00 nop |
||
180 | 14a: 00 41 sbci r16, 0x10 ; 16 |
||
181 | 14c: 22 1c adc r2, r2 |
||
182 | 14e: 00 00 nop |
||
183 | 150: 2a 1c adc r2, r10 |
||
184 | 152: 7f 1c adc r7, r15 |
||
185 | 154: 2a 00 .word 0x002a ; ???? |
||
186 | 156: 08 08 sbc r0, r8 |
||
187 | 158: 3e 08 sbc r3, r14 |
||
188 | 15a: 08 00 .word 0x0008 ; ???? |
||
189 | 15c: 00 80 ld r0, Z |
||
190 | 15e: 70 30 cpi r23, 0x00 ; 0 |
||
191 | 160: 00 00 nop |
||
192 | 162: 08 08 sbc r0, r8 |
||
193 | 164: 08 08 sbc r0, r8 |
||
194 | 166: 08 00 .word 0x0008 ; ???? |
||
195 | 168: 00 00 nop |
||
196 | 16a: 60 60 ori r22, 0x00 ; 0 |
||
197 | 16c: 00 00 nop |
||
198 | 16e: 20 10 cpse r2, r0 |
||
199 | 170: 08 04 cpc r0, r8 |
||
200 | 172: 02 00 .word 0x0002 ; ???? |
||
201 | 174: 3e 51 subi r19, 0x1E ; 30 |
||
202 | 176: 49 45 sbci r20, 0x59 ; 89 |
||
203 | 178: 3e 00 .word 0x003e ; ???? |
||
204 | 17a: 00 42 sbci r16, 0x20 ; 32 |
||
205 | 17c: 7f 40 sbci r23, 0x0F ; 15 |
||
206 | 17e: 00 00 nop |
||
207 | 180: 72 49 sbci r23, 0x92 ; 146 |
||
208 | 182: 49 49 sbci r20, 0x99 ; 153 |
||
209 | 184: 46 00 .word 0x0046 ; ???? |
||
210 | 186: 21 41 sbci r18, 0x11 ; 17 |
||
211 | 188: 49 4d sbci r20, 0xD9 ; 217 |
||
212 | 18a: 33 00 .word 0x0033 ; ???? |
||
213 | 18c: 18 14 cp r1, r8 |
||
214 | 18e: 12 7f andi r17, 0xF2 ; 242 |
||
215 | 190: 10 00 .word 0x0010 ; ???? |
||
216 | 192: 27 45 sbci r18, 0x57 ; 87 |
||
217 | 194: 45 45 sbci r20, 0x55 ; 85 |
||
218 | 196: 39 00 .word 0x0039 ; ???? |
||
219 | 198: 3c 4a sbci r19, 0xAC ; 172 |
||
220 | 19a: 49 49 sbci r20, 0x99 ; 153 |
||
221 | 19c: 31 00 .word 0x0031 ; ???? |
||
222 | 19e: 41 21 and r20, r1 |
||
223 | 1a0: 11 09 sbc r17, r1 |
||
224 | 1a2: 07 00 .word 0x0007 ; ???? |
||
225 | 1a4: 36 49 sbci r19, 0x96 ; 150 |
||
226 | 1a6: 49 49 sbci r20, 0x99 ; 153 |
||
227 | 1a8: 36 00 .word 0x0036 ; ???? |
||
228 | 1aa: 46 49 sbci r20, 0x96 ; 150 |
||
229 | 1ac: 49 29 or r20, r9 |
||
230 | 1ae: 1e 00 .word 0x001e ; ???? |
||
231 | 1b0: 00 00 nop |
||
232 | 1b2: 14 00 .word 0x0014 ; ???? |
||
233 | 1b4: 00 00 nop |
||
234 | 1b6: 00 40 sbci r16, 0x00 ; 0 |
||
235 | 1b8: 34 00 .word 0x0034 ; ???? |
||
236 | 1ba: 00 00 nop |
||
237 | 1bc: 00 08 sbc r0, r0 |
||
238 | 1be: 14 22 and r1, r20 |
||
239 | 1c0: 41 00 .word 0x0041 ; ???? |
||
240 | 1c2: 14 14 cp r1, r4 |
||
241 | 1c4: 14 14 cp r1, r4 |
||
242 | 1c6: 14 00 .word 0x0014 ; ???? |
||
243 | 1c8: 00 41 sbci r16, 0x10 ; 16 |
||
244 | 1ca: 22 14 cp r2, r2 |
||
245 | 1cc: 08 00 .word 0x0008 ; ???? |
||
246 | 1ce: 02 01 movw r0, r4 |
||
247 | 1d0: 59 09 sbc r21, r9 |
||
248 | 1d2: 06 00 .word 0x0006 ; ???? |
||
249 | 1d4: 3e 41 sbci r19, 0x1E ; 30 |
||
250 | 1d6: 5d 59 subi r21, 0x9D ; 157 |
||
251 | 1d8: 4e 00 .word 0x004e ; ???? |
||
252 | 1da: 7c 12 cpse r7, r28 |
||
253 | 1dc: 11 12 cpse r1, r17 |
||
254 | 1de: 7c 00 .word 0x007c ; ???? |
||
255 | 1e0: 7f 49 sbci r23, 0x9F ; 159 |
||
256 | 1e2: 49 49 sbci r20, 0x99 ; 153 |
||
257 | 1e4: 36 00 .word 0x0036 ; ???? |
||
258 | 1e6: 3e 41 sbci r19, 0x1E ; 30 |
||
259 | 1e8: 41 41 sbci r20, 0x11 ; 17 |
||
260 | 1ea: 22 00 .word 0x0022 ; ???? |
||
261 | 1ec: 7f 41 sbci r23, 0x1F ; 31 |
||
262 | 1ee: 41 41 sbci r20, 0x11 ; 17 |
||
263 | 1f0: 3e 00 .word 0x003e ; ???? |
||
264 | 1f2: 7f 49 sbci r23, 0x9F ; 159 |
||
265 | 1f4: 49 49 sbci r20, 0x99 ; 153 |
||
266 | 1f6: 41 00 .word 0x0041 ; ???? |
||
267 | 1f8: 7f 09 sbc r23, r15 |
||
268 | 1fa: 09 09 sbc r16, r9 |
||
269 | 1fc: 01 00 .word 0x0001 ; ???? |
||
270 | 1fe: 3e 41 sbci r19, 0x1E ; 30 |
||
271 | 200: 41 51 subi r20, 0x11 ; 17 |
||
272 | 202: 73 00 .word 0x0073 ; ???? |
||
273 | 204: 7f 08 sbc r7, r15 |
||
274 | 206: 08 08 sbc r0, r8 |
||
275 | 208: 7f 00 .word 0x007f ; ???? |
||
276 | 20a: 00 41 sbci r16, 0x10 ; 16 |
||
277 | 20c: 7f 41 sbci r23, 0x1F ; 31 |
||
278 | 20e: 00 00 nop |
||
279 | 210: 20 40 sbci r18, 0x00 ; 0 |
||
280 | 212: 41 3f cpi r20, 0xF1 ; 241 |
||
281 | 214: 01 00 .word 0x0001 ; ???? |
||
282 | 216: 7f 08 sbc r7, r15 |
||
283 | 218: 14 22 and r1, r20 |
||
284 | 21a: 41 00 .word 0x0041 ; ???? |
||
285 | 21c: 7f 40 sbci r23, 0x0F ; 15 |
||
286 | 21e: 40 40 sbci r20, 0x00 ; 0 |
||
287 | 220: 40 00 .word 0x0040 ; ???? |
||
288 | 222: 7f 02 muls r23, r31 |
||
289 | 224: 1c 02 muls r17, r28 |
||
290 | 226: 7f 00 .word 0x007f ; ???? |
||
291 | 228: 7f 04 cpc r7, r15 |
||
292 | 22a: 08 10 cpse r0, r8 |
||
293 | 22c: 7f 00 .word 0x007f ; ???? |
||
294 | 22e: 3e 41 sbci r19, 0x1E ; 30 |
||
295 | 230: 41 41 sbci r20, 0x11 ; 17 |
||
296 | 232: 3e 00 .word 0x003e ; ???? |
||
297 | 234: 7f 09 sbc r23, r15 |
||
298 | 236: 09 09 sbc r16, r9 |
||
299 | 238: 06 00 .word 0x0006 ; ???? |
||
300 | 23a: 3e 41 sbci r19, 0x1E ; 30 |
||
301 | 23c: 51 21 and r21, r1 |
||
302 | 23e: 5e 00 .word 0x005e ; ???? |
||
303 | 240: 7f 09 sbc r23, r15 |
||
304 | 242: 19 29 or r17, r9 |
||
305 | 244: 46 00 .word 0x0046 ; ???? |
||
306 | 246: 26 49 sbci r18, 0x96 ; 150 |
||
307 | 248: 49 49 sbci r20, 0x99 ; 153 |
||
308 | 24a: 32 00 .word 0x0032 ; ???? |
||
309 | 24c: 03 01 movw r0, r6 |
||
310 | 24e: 7f 01 movw r14, r30 |
||
311 | 250: 03 00 .word 0x0003 ; ???? |
||
312 | 252: 3f 40 sbci r19, 0x0F ; 15 |
||
313 | 254: 40 40 sbci r20, 0x00 ; 0 |
||
314 | 256: 3f 00 .word 0x003f ; ???? |
||
315 | 258: 1f 20 and r1, r15 |
||
316 | 25a: 40 20 and r4, r0 |
||
317 | 25c: 1f 00 .word 0x001f ; ???? |
||
318 | 25e: 3f 40 sbci r19, 0x0F ; 15 |
||
319 | 260: 38 40 sbci r19, 0x08 ; 8 |
||
320 | 262: 3f 00 .word 0x003f ; ???? |
||
321 | 264: 63 14 cp r6, r3 |
||
322 | 266: 08 14 cp r0, r8 |
||
323 | 268: 63 00 .word 0x0063 ; ???? |
||
324 | 26a: 03 04 cpc r0, r3 |
||
325 | 26c: 78 04 cpc r7, r8 |
||
326 | 26e: 03 00 .word 0x0003 ; ???? |
||
327 | 270: 61 59 subi r22, 0x91 ; 145 |
||
328 | 272: 49 4d sbci r20, 0xD9 ; 217 |
||
329 | 274: 43 00 .word 0x0043 ; ???? |
||
330 | 276: 00 7f andi r16, 0xF0 ; 240 |
||
331 | 278: 41 41 sbci r20, 0x11 ; 17 |
||
332 | 27a: 41 00 .word 0x0041 ; ???? |
||
333 | 27c: 02 04 cpc r0, r2 |
||
334 | 27e: 08 10 cpse r0, r8 |
||
335 | 280: 20 00 .word 0x0020 ; ???? |
||
336 | 282: 00 41 sbci r16, 0x10 ; 16 |
||
337 | 284: 41 41 sbci r20, 0x11 ; 17 |
||
338 | 286: 7f 00 .word 0x007f ; ???? |
||
339 | 288: 04 02 muls r16, r20 |
||
340 | 28a: 01 02 muls r16, r17 |
||
341 | 28c: 04 00 .word 0x0004 ; ???? |
||
342 | 28e: 40 40 sbci r20, 0x00 ; 0 |
||
343 | 290: 40 40 sbci r20, 0x00 ; 0 |
||
344 | 292: 40 00 .word 0x0040 ; ???? |
||
345 | 294: 00 03 mulsu r16, r16 |
||
346 | 296: 07 08 sbc r0, r7 |
||
347 | 298: 00 00 nop |
||
348 | 29a: 20 54 subi r18, 0x40 ; 64 |
||
349 | 29c: 54 78 andi r21, 0x84 ; 132 |
||
350 | 29e: 40 00 .word 0x0040 ; ???? |
||
351 | 2a0: 7f 28 or r7, r15 |
||
352 | 2a2: 44 44 sbci r20, 0x44 ; 68 |
||
353 | 2a4: 38 00 .word 0x0038 ; ???? |
||
354 | 2a6: 38 44 sbci r19, 0x48 ; 72 |
||
355 | 2a8: 44 44 sbci r20, 0x44 ; 68 |
||
356 | 2aa: 28 00 .word 0x0028 ; ???? |
||
357 | 2ac: 38 44 sbci r19, 0x48 ; 72 |
||
358 | 2ae: 44 28 or r4, r4 |
||
359 | 2b0: 7f 00 .word 0x007f ; ???? |
||
360 | 2b2: 38 54 subi r19, 0x48 ; 72 |
||
361 | 2b4: 54 54 subi r21, 0x44 ; 68 |
||
362 | 2b6: 18 00 .word 0x0018 ; ???? |
||
363 | 2b8: 00 08 sbc r0, r0 |
||
364 | 2ba: 7e 09 sbc r23, r14 |
||
365 | 2bc: 02 00 .word 0x0002 ; ???? |
||
366 | 2be: 18 a4 ldd r1, Y+40 ; 0x28 |
||
367 | 2c0: a4 9c mul r10, r4 |
||
368 | 2c2: 78 00 .word 0x0078 ; ???? |
||
369 | 2c4: 7f 08 sbc r7, r15 |
||
370 | 2c6: 04 04 cpc r0, r4 |
||
371 | 2c8: 78 00 .word 0x0078 ; ???? |
||
372 | 2ca: 00 44 sbci r16, 0x40 ; 64 |
||
373 | 2cc: 7d 40 sbci r23, 0x0D ; 13 |
||
374 | 2ce: 00 00 nop |
||
375 | 2d0: 20 40 sbci r18, 0x00 ; 0 |
||
376 | 2d2: 40 3d cpi r20, 0xD0 ; 208 |
||
377 | 2d4: 00 00 nop |
||
378 | 2d6: 7f 10 cpse r7, r15 |
||
379 | 2d8: 28 44 sbci r18, 0x48 ; 72 |
||
380 | 2da: 00 00 nop |
||
381 | 2dc: 00 41 sbci r16, 0x10 ; 16 |
||
382 | 2de: 7f 40 sbci r23, 0x0F ; 15 |
||
383 | 2e0: 00 00 nop |
||
384 | 2e2: 7c 04 cpc r7, r12 |
||
385 | 2e4: 78 04 cpc r7, r8 |
||
386 | 2e6: 78 00 .word 0x0078 ; ???? |
||
387 | 2e8: 7c 08 sbc r7, r12 |
||
388 | 2ea: 04 04 cpc r0, r4 |
||
389 | 2ec: 78 00 .word 0x0078 ; ???? |
||
390 | 2ee: 38 44 sbci r19, 0x48 ; 72 |
||
391 | 2f0: 44 44 sbci r20, 0x44 ; 68 |
||
392 | 2f2: 38 00 .word 0x0038 ; ???? |
||
393 | 2f4: fc 18 sub r15, r12 |
||
394 | 2f6: 24 24 eor r2, r4 |
||
395 | 2f8: 18 00 .word 0x0018 ; ???? |
||
396 | 2fa: 18 24 eor r1, r8 |
||
397 | 2fc: 24 18 sub r2, r4 |
||
398 | 2fe: fc 00 .word 0x00fc ; ???? |
||
399 | 300: 7c 08 sbc r7, r12 |
||
400 | 302: 04 04 cpc r0, r4 |
||
401 | 304: 08 00 .word 0x0008 ; ???? |
||
402 | 306: 48 54 subi r20, 0x48 ; 72 |
||
403 | 308: 54 54 subi r21, 0x44 ; 68 |
||
404 | 30a: 24 00 .word 0x0024 ; ???? |
||
405 | 30c: 04 04 cpc r0, r4 |
||
406 | 30e: 3f 44 sbci r19, 0x4F ; 79 |
||
407 | 310: 24 00 .word 0x0024 ; ???? |
||
408 | 312: 3c 40 sbci r19, 0x0C ; 12 |
||
409 | 314: 40 20 and r4, r0 |
||
410 | 316: 7c 00 .word 0x007c ; ???? |
||
411 | 318: 1c 20 and r1, r12 |
||
412 | 31a: 40 20 and r4, r0 |
||
413 | 31c: 1c 00 .word 0x001c ; ???? |
||
414 | 31e: 3c 40 sbci r19, 0x0C ; 12 |
||
415 | 320: 30 40 sbci r19, 0x00 ; 0 |
||
416 | 322: 3c 00 .word 0x003c ; ???? |
||
417 | 324: 44 28 or r4, r4 |
||
418 | 326: 10 28 or r1, r0 |
||
419 | 328: 44 00 .word 0x0044 ; ???? |
||
420 | 32a: 4c 90 ld r4, X |
||
421 | 32c: 90 90 7c 00 lds r9, 0x007C |
||
422 | 330: 44 64 ori r20, 0x44 ; 68 |
||
423 | 332: 54 4c sbci r21, 0xC4 ; 196 |
||
424 | 334: 44 00 .word 0x0044 ; ???? |
||
425 | 336: 00 08 sbc r0, r0 |
||
426 | 338: 36 41 sbci r19, 0x16 ; 22 |
||
427 | 33a: 00 00 nop |
||
428 | 33c: 00 00 nop |
||
429 | 33e: 77 00 .word 0x0077 ; ???? |
||
430 | 340: 00 00 nop |
||
431 | 342: 00 41 sbci r16, 0x10 ; 16 |
||
432 | 344: 36 08 sbc r3, r6 |
||
433 | 346: 00 00 nop |
||
434 | 348: 02 01 movw r0, r4 |
||
435 | 34a: 02 04 cpc r0, r2 |
||
436 | 34c: 02 00 .word 0x0002 ; ???? |
||
437 | 34e: 3c 26 eor r3, r28 |
||
438 | 350: 23 26 eor r2, r19 |
||
439 | 352: 3c 00 .word 0x003c ; ???? |
||
440 | 354: 1e a1 ldd r17, Y+38 ; 0x26 |
||
441 | 356: a1 61 ori r26, 0x11 ; 17 |
||
442 | 358: 12 00 .word 0x0012 ; ???? |
||
443 | 35a: 3a 40 sbci r19, 0x0A ; 10 |
||
444 | 35c: 40 20 and r4, r0 |
||
445 | 35e: 7a 00 .word 0x007a ; ???? |
||
446 | 360: 38 54 subi r19, 0x48 ; 72 |
||
447 | 362: 54 55 subi r21, 0x54 ; 84 |
||
448 | 364: 59 00 .word 0x0059 ; ???? |
||
449 | 366: 21 55 subi r18, 0x51 ; 81 |
||
450 | 368: 55 79 andi r21, 0x95 ; 149 |
||
451 | 36a: 41 00 .word 0x0041 ; ???? |
||
452 | 36c: 21 54 subi r18, 0x41 ; 65 |
||
453 | 36e: 54 78 andi r21, 0x84 ; 132 |
||
454 | 370: 41 00 .word 0x0041 ; ???? |
||
455 | 372: 21 55 subi r18, 0x51 ; 81 |
||
456 | 374: 54 78 andi r21, 0x84 ; 132 |
||
457 | 376: 40 00 .word 0x0040 ; ???? |
||
458 | 378: 20 54 subi r18, 0x40 ; 64 |
||
459 | 37a: 55 79 andi r21, 0x95 ; 149 |
||
460 | 37c: 40 00 .word 0x0040 ; ???? |
||
461 | 37e: 0c 1e adc r0, r28 |
||
462 | 380: 52 72 andi r21, 0x22 ; 34 |
||
463 | 382: 12 00 .word 0x0012 ; ???? |
||
464 | 384: 39 55 subi r19, 0x59 ; 89 |
||
465 | 386: 55 55 subi r21, 0x55 ; 85 |
||
466 | 388: 59 00 .word 0x0059 ; ???? |
||
467 | 38a: 39 54 subi r19, 0x49 ; 73 |
||
468 | 38c: 54 54 subi r21, 0x44 ; 68 |
||
469 | 38e: 59 00 .word 0x0059 ; ???? |
||
470 | 390: 39 55 subi r19, 0x59 ; 89 |
||
471 | 392: 54 54 subi r21, 0x44 ; 68 |
||
472 | 394: 58 00 .word 0x0058 ; ???? |
||
473 | 396: 00 00 nop |
||
474 | 398: 45 7c andi r20, 0xC5 ; 197 |
||
475 | 39a: 41 00 .word 0x0041 ; ???? |
||
476 | 39c: 00 02 muls r16, r16 |
||
477 | 39e: 45 7d andi r20, 0xD5 ; 213 |
||
478 | 3a0: 42 00 .word 0x0042 ; ???? |
||
479 | 3a2: 00 01 movw r0, r0 |
||
480 | 3a4: 45 7c andi r20, 0xC5 ; 197 |
||
481 | 3a6: 40 00 .word 0x0040 ; ???? |
||
482 | 3a8: 79 14 cp r7, r9 |
||
483 | 3aa: 12 14 cp r1, r2 |
||
484 | 3ac: 79 00 .word 0x0079 ; ???? |
||
485 | 3ae: f0 28 or r15, r0 |
||
486 | 3b0: 25 28 or r2, r5 |
||
487 | 3b2: f0 00 .word 0x00f0 ; ???? |
||
488 | 3b4: 7c 54 subi r23, 0x4C ; 76 |
||
489 | 3b6: 55 45 sbci r21, 0x55 ; 85 |
||
490 | 3b8: 00 00 nop |
||
491 | 3ba: 20 54 subi r18, 0x40 ; 64 |
||
492 | 3bc: 54 7c andi r21, 0xC4 ; 196 |
||
493 | 3be: 54 44 sbci r21, 0x44 ; 68 |
||
494 | 3c0: 7c 0a sbc r7, r28 |
||
495 | 3c2: 09 7f andi r16, 0xF9 ; 249 |
||
496 | 3c4: 49 41 sbci r20, 0x19 ; 25 |
||
497 | 3c6: 32 49 sbci r19, 0x92 ; 146 |
||
498 | 3c8: 49 49 sbci r20, 0x99 ; 153 |
||
499 | 3ca: 32 00 .word 0x0032 ; ???? |
||
500 | 3cc: 32 48 sbci r19, 0x82 ; 130 |
||
501 | 3ce: 48 48 sbci r20, 0x88 ; 136 |
||
502 | 3d0: 32 00 .word 0x0032 ; ???? |
||
503 | 3d2: 32 4a sbci r19, 0xA2 ; 162 |
||
504 | 3d4: 48 48 sbci r20, 0x88 ; 136 |
||
505 | 3d6: 30 00 .word 0x0030 ; ???? |
||
506 | 3d8: 3a 41 sbci r19, 0x1A ; 26 |
||
507 | 3da: 41 21 and r20, r1 |
||
508 | 3dc: 7a 00 .word 0x007a ; ???? |
||
509 | 3de: 3a 42 sbci r19, 0x2A ; 42 |
||
510 | 3e0: 40 20 and r4, r0 |
||
511 | 3e2: 78 00 .word 0x0078 ; ???? |
||
512 | 3e4: 00 9d mul r16, r0 |
||
513 | 3e6: a0 a0 ldd r10, Z+32 ; 0x20 |
||
514 | 3e8: 7d 00 .word 0x007d ; ???? |
||
515 | 3ea: 39 44 sbci r19, 0x49 ; 73 |
||
516 | 3ec: 44 44 sbci r20, 0x44 ; 68 |
||
517 | 3ee: 39 00 .word 0x0039 ; ???? |
||
518 | 3f0: 3d 40 sbci r19, 0x0D ; 13 |
||
519 | 3f2: 40 40 sbci r20, 0x00 ; 0 |
||
520 | 3f4: 3d 00 .word 0x003d ; ???? |
||
521 | 3f6: 3c 24 eor r3, r12 |
||
522 | 3f8: ff 24 eor r15, r15 |
||
523 | 3fa: 24 00 .word 0x0024 ; ???? |
||
524 | 3fc: 48 7e andi r20, 0xE8 ; 232 |
||
525 | 3fe: 49 43 sbci r20, 0x39 ; 57 |
||
526 | 400: 66 00 .word 0x0066 ; ???? |
||
527 | 402: 2b 2f mov r18, r27 |
||
528 | 404: fc 2f mov r31, r28 |
||
529 | 406: 2b 00 .word 0x002b ; ???? |
||
530 | 408: ff 09 sbc r31, r15 |
||
531 | 40a: 29 f6 brne .-118 ; 0x396 <__ctors_end+0x342> |
||
532 | 40c: 20 00 .word 0x0020 ; ???? |
||
533 | 40e: c0 88 ldd r12, Z+16 ; 0x10 |
||
534 | 410: 7e 09 sbc r23, r14 |
||
535 | 412: 03 00 .word 0x0003 ; ???? |
||
536 | 414: 20 54 subi r18, 0x40 ; 64 |
||
537 | 416: 54 79 andi r21, 0x94 ; 148 |
||
538 | 418: 41 00 .word 0x0041 ; ???? |
||
539 | 41a: 00 00 nop |
||
540 | 41c: 44 7d andi r20, 0xD4 ; 212 |
||
541 | 41e: 41 00 .word 0x0041 ; ???? |
||
542 | 420: 30 48 sbci r19, 0x80 ; 128 |
||
543 | 422: 48 4a sbci r20, 0xA8 ; 168 |
||
544 | 424: 32 00 .word 0x0032 ; ???? |
||
545 | 426: 38 40 sbci r19, 0x08 ; 8 |
||
546 | 428: 40 22 and r4, r16 |
||
547 | 42a: 7a 00 .word 0x007a ; ???? |
||
548 | 42c: 00 7a andi r16, 0xA0 ; 160 |
||
549 | 42e: 0a 0a sbc r0, r26 |
||
550 | 430: 72 00 .word 0x0072 ; ???? |
||
551 | 432: 7d 0d add r23, r13 |
||
552 | 434: 19 31 cpi r17, 0x19 ; 25 |
||
553 | 436: 7d 00 .word 0x007d ; ???? |
||
554 | 438: 26 29 or r18, r6 |
||
555 | 43a: 29 2f mov r18, r25 |
||
556 | 43c: 28 00 .word 0x0028 ; ???? |
||
557 | 43e: 26 29 or r18, r6 |
||
558 | 440: 29 29 or r18, r9 |
||
559 | 442: 26 00 .word 0x0026 ; ???? |
||
560 | 444: 30 48 sbci r19, 0x80 ; 128 |
||
561 | 446: 4d 40 sbci r20, 0x0D ; 13 |
||
562 | 448: 20 00 .word 0x0020 ; ???? |
||
563 | 44a: 38 08 sbc r3, r8 |
||
564 | 44c: 08 08 sbc r0, r8 |
||
565 | 44e: 08 00 .word 0x0008 ; ???? |
||
566 | 450: 08 08 sbc r0, r8 |
||
567 | 452: 08 08 sbc r0, r8 |
||
568 | 454: 38 00 .word 0x0038 ; ???? |
||
569 | 456: 2f 10 cpse r2, r15 |
||
570 | 458: c8 ac ldd r12, Y+56 ; 0x38 |
||
571 | 45a: ba 00 .word 0x00ba ; ???? |
||
572 | 45c: 2f 10 cpse r2, r15 |
||
573 | 45e: 28 34 cpi r18, 0x48 ; 72 |
||
574 | 460: fa 00 .word 0x00fa ; ???? |
||
575 | 462: 00 00 nop |
||
576 | 464: 7b 00 .word 0x007b ; ???? |
||
577 | 466: 00 00 nop |
||
578 | 468: 08 14 cp r0, r8 |
||
579 | 46a: 2a 14 cp r2, r10 |
||
580 | 46c: 22 00 .word 0x0022 ; ???? |
||
581 | 46e: 22 14 cp r2, r2 |
||
582 | 470: 2a 14 cp r2, r10 |
||
583 | 472: 08 00 .word 0x0008 ; ???? |
||
584 | 474: aa 00 .word 0x00aa ; ???? |
||
585 | 476: 55 00 .word 0x0055 ; ???? |
||
586 | 478: aa 00 .word 0x00aa ; ???? |
||
587 | 47a: aa 55 subi r26, 0x5A ; 90 |
||
588 | 47c: aa 55 subi r26, 0x5A ; 90 |
||
589 | 47e: aa 55 subi r26, 0x5A ; 90 |
||
590 | 480: 55 aa std Z+53, r5 ; 0x35 |
||
591 | 482: 55 aa std Z+53, r5 ; 0x35 |
||
592 | 484: 55 aa std Z+53, r5 ; 0x35 |
||
593 | 486: 00 00 nop |
||
594 | 488: 00 ff sbrs r16, 0 |
||
595 | 48a: 00 00 nop |
||
596 | 48c: 10 10 cpse r1, r0 |
||
597 | 48e: 10 ff sbrs r17, 0 |
||
598 | 490: 00 00 nop |
||
599 | 492: 14 14 cp r1, r4 |
||
600 | 494: 14 ff sbrs r17, 4 |
||
601 | 496: 00 00 nop |
||
602 | 498: 10 10 cpse r1, r0 |
||
603 | 49a: ff 00 .word 0x00ff ; ???? |
||
604 | 49c: ff 00 .word 0x00ff ; ???? |
||
605 | 49e: 10 10 cpse r1, r0 |
||
606 | 4a0: f0 10 cpse r15, r0 |
||
607 | 4a2: f0 00 .word 0x00f0 ; ???? |
||
608 | 4a4: 14 14 cp r1, r4 |
||
609 | 4a6: 14 fc sbrc r1, 4 |
||
610 | 4a8: 00 00 nop |
||
611 | 4aa: 14 14 cp r1, r4 |
||
612 | 4ac: f7 00 .word 0x00f7 ; ???? |
||
613 | 4ae: ff 00 .word 0x00ff ; ???? |
||
614 | 4b0: 00 00 nop |
||
615 | 4b2: ff 00 .word 0x00ff ; ???? |
||
616 | 4b4: ff 00 .word 0x00ff ; ???? |
||
617 | 4b6: 14 14 cp r1, r4 |
||
618 | 4b8: f4 04 cpc r15, r4 |
||
619 | 4ba: fc 00 .word 0x00fc ; ???? |
||
620 | 4bc: 14 14 cp r1, r4 |
||
621 | 4be: 17 10 cpse r1, r7 |
||
622 | 4c0: 1f 00 .word 0x001f ; ???? |
||
623 | 4c2: 10 10 cpse r1, r0 |
||
624 | 4c4: 1f 10 cpse r1, r15 |
||
625 | 4c6: 1f 00 .word 0x001f ; ???? |
||
626 | 4c8: 14 14 cp r1, r4 |
||
627 | 4ca: 14 1f adc r17, r20 |
||
628 | 4cc: 00 00 nop |
||
629 | 4ce: 10 10 cpse r1, r0 |
||
630 | 4d0: 10 f0 brcs .+4 ; 0x4d6 <__ctors_end+0x482> |
||
631 | 4d2: 00 00 nop |
||
632 | 4d4: 00 00 nop |
||
633 | 4d6: 00 1f adc r16, r16 |
||
634 | 4d8: 10 10 cpse r1, r0 |
||
635 | 4da: 10 10 cpse r1, r0 |
||
636 | 4dc: 10 1f adc r17, r16 |
||
637 | 4de: 10 10 cpse r1, r0 |
||
638 | 4e0: 10 10 cpse r1, r0 |
||
639 | 4e2: 10 f0 brcs .+4 ; 0x4e8 <__ctors_end+0x494> |
||
640 | 4e4: 10 10 cpse r1, r0 |
||
641 | 4e6: 00 00 nop |
||
642 | 4e8: 00 ff sbrs r16, 0 |
||
643 | 4ea: 10 10 cpse r1, r0 |
||
644 | 4ec: 10 10 cpse r1, r0 |
||
645 | 4ee: 10 10 cpse r1, r0 |
||
646 | 4f0: 10 10 cpse r1, r0 |
||
647 | 4f2: 10 10 cpse r1, r0 |
||
648 | 4f4: 10 ff sbrs r17, 0 |
||
649 | 4f6: 10 10 cpse r1, r0 |
||
650 | 4f8: 00 00 nop |
||
651 | 4fa: 00 ff sbrs r16, 0 |
||
652 | 4fc: 14 14 cp r1, r4 |
||
653 | 4fe: 00 00 nop |
||
654 | 500: ff 00 .word 0x00ff ; ???? |
||
655 | 502: ff 10 cpse r15, r15 |
||
656 | 504: 00 00 nop |
||
657 | 506: 1f 10 cpse r1, r15 |
||
658 | 508: 17 14 cp r1, r7 |
||
659 | 50a: 00 00 nop |
||
660 | 50c: fc 04 cpc r15, r12 |
||
661 | 50e: f4 14 cp r15, r4 |
||
662 | 510: 14 14 cp r1, r4 |
||
663 | 512: 17 10 cpse r1, r7 |
||
664 | 514: 17 14 cp r1, r7 |
||
665 | 516: 14 14 cp r1, r4 |
||
666 | 518: f4 04 cpc r15, r4 |
||
667 | 51a: f4 14 cp r15, r4 |
||
668 | 51c: 00 00 nop |
||
669 | 51e: ff 00 .word 0x00ff ; ???? |
||
670 | 520: f7 14 cp r15, r7 |
||
671 | 522: 14 14 cp r1, r4 |
||
672 | 524: 14 14 cp r1, r4 |
||
673 | 526: 14 14 cp r1, r4 |
||
674 | 528: 14 14 cp r1, r4 |
||
675 | 52a: f7 00 .word 0x00f7 ; ???? |
||
676 | 52c: f7 14 cp r15, r7 |
||
677 | 52e: 14 14 cp r1, r4 |
||
678 | 530: 14 17 cp r17, r20 |
||
679 | 532: 14 14 cp r1, r4 |
||
680 | 534: 10 10 cpse r1, r0 |
||
681 | 536: 1f 10 cpse r1, r15 |
||
682 | 538: 1f 10 cpse r1, r15 |
||
683 | 53a: 14 14 cp r1, r4 |
||
684 | 53c: 14 f4 brge .+4 ; 0x542 <__ctors_end+0x4ee> |
||
685 | 53e: 14 14 cp r1, r4 |
||
686 | 540: 10 10 cpse r1, r0 |
||
687 | 542: f0 10 cpse r15, r0 |
||
688 | 544: f0 10 cpse r15, r0 |
||
689 | 546: 00 00 nop |
||
690 | 548: 1f 10 cpse r1, r15 |
||
691 | 54a: 1f 10 cpse r1, r15 |
||
692 | 54c: 00 00 nop |
||
693 | 54e: 00 1f adc r16, r16 |
||
694 | 550: 14 14 cp r1, r4 |
||
695 | 552: 00 00 nop |
||
696 | 554: 00 fc sbrc r0, 0 |
||
697 | 556: 14 14 cp r1, r4 |
||
698 | 558: 00 00 nop |
||
699 | 55a: f0 10 cpse r15, r0 |
||
700 | 55c: f0 10 cpse r15, r0 |
||
701 | 55e: 10 10 cpse r1, r0 |
||
702 | 560: ff 10 cpse r15, r15 |
||
703 | 562: ff 10 cpse r15, r15 |
||
704 | 564: 14 14 cp r1, r4 |
||
705 | 566: 14 ff sbrs r17, 4 |
||
706 | 568: 14 14 cp r1, r4 |
||
707 | 56a: 10 10 cpse r1, r0 |
||
708 | 56c: 10 1f adc r17, r16 |
||
709 | 56e: 00 00 nop |
||
710 | 570: 00 00 nop |
||
711 | 572: 00 f0 brcs .+0 ; 0x574 <__ctors_end+0x520> |
||
712 | 574: 10 10 cpse r1, r0 |
||
713 | 576: ff ff .word 0xffff ; ???? |
||
714 | 578: ff ff .word 0xffff ; ???? |
||
715 | 57a: ff ff .word 0xffff ; ???? |
||
716 | 57c: f0 f0 brcs .+60 ; 0x5ba <__ctors_end+0x566> |
||
717 | 57e: f0 f0 brcs .+60 ; 0x5bc <__ctors_end+0x568> |
||
718 | 580: f0 f0 brcs .+60 ; 0x5be <__ctors_end+0x56a> |
||
719 | 582: ff ff .word 0xffff ; ???? |
||
720 | 584: ff 00 .word 0x00ff ; ???? |
||
721 | 586: 00 00 nop |
||
722 | 588: 00 00 nop |
||
723 | 58a: 00 ff sbrs r16, 0 |
||
724 | 58c: ff ff .word 0xffff ; ???? |
||
725 | 58e: 0f 0f add r16, r31 |
||
726 | 590: 0f 0f add r16, r31 |
||
727 | 592: 0f 0f add r16, r31 |
||
728 | 594: 38 44 sbci r19, 0x48 ; 72 |
||
729 | 596: 44 38 cpi r20, 0x84 ; 132 |
||
730 | 598: 44 00 .word 0x0044 ; ???? |
||
731 | 59a: 7c 2a or r7, r28 |
||
732 | 59c: 2a 3e cpi r18, 0xEA ; 234 |
||
733 | 59e: 14 00 .word 0x0014 ; ???? |
||
734 | 5a0: 7e 02 muls r23, r30 |
||
735 | 5a2: 02 06 cpc r0, r18 |
||
736 | 5a4: 06 00 .word 0x0006 ; ???? |
||
737 | 5a6: 02 7e andi r16, 0xE2 ; 226 |
||
738 | 5a8: 02 7e andi r16, 0xE2 ; 226 |
||
739 | 5aa: 02 00 .word 0x0002 ; ???? |
||
740 | 5ac: 63 55 subi r22, 0x53 ; 83 |
||
741 | 5ae: 49 41 sbci r20, 0x19 ; 25 |
||
742 | 5b0: 63 00 .word 0x0063 ; ???? |
||
743 | 5b2: 38 44 sbci r19, 0x48 ; 72 |
||
744 | 5b4: 44 3c cpi r20, 0xC4 ; 196 |
||
745 | 5b6: 04 00 .word 0x0004 ; ???? |
||
746 | 5b8: 40 7e andi r20, 0xE0 ; 224 |
||
747 | 5ba: 20 1e adc r2, r16 |
||
748 | 5bc: 20 00 .word 0x0020 ; ???? |
||
749 | 5be: 06 02 muls r16, r22 |
||
750 | 5c0: 7e 02 muls r23, r30 |
||
751 | 5c2: 02 00 .word 0x0002 ; ???? |
||
752 | 5c4: 99 a5 ldd r25, Y+41 ; 0x29 |
||
753 | 5c6: e7 a5 ldd r30, Z+47 ; 0x2f |
||
754 | 5c8: 99 00 .word 0x0099 ; ???? |
||
755 | 5ca: 1c 2a or r1, r28 |
||
756 | 5cc: 49 2a or r4, r25 |
||
757 | 5ce: 1c 00 .word 0x001c ; ???? |
||
758 | 5d0: 4c 72 andi r20, 0x2C ; 44 |
||
759 | 5d2: 01 72 andi r16, 0x21 ; 33 |
||
760 | 5d4: 4c 00 .word 0x004c ; ???? |
||
761 | 5d6: 30 4a sbci r19, 0xA0 ; 160 |
||
762 | 5d8: 4d 4d sbci r20, 0xDD ; 221 |
||
763 | 5da: 30 00 .word 0x0030 ; ???? |
||
764 | 5dc: 30 48 sbci r19, 0x80 ; 128 |
||
765 | 5de: 78 48 sbci r23, 0x88 ; 136 |
||
766 | 5e0: 30 00 .word 0x0030 ; ???? |
||
767 | 5e2: bc 62 ori r27, 0x2C ; 44 |
||
768 | 5e4: 5a 46 sbci r21, 0x6A ; 106 |
||
769 | 5e6: 3d 00 .word 0x003d ; ???? |
||
770 | 5e8: 3e 49 sbci r19, 0x9E ; 158 |
||
771 | 5ea: 49 49 sbci r20, 0x99 ; 153 |
||
772 | 5ec: 00 00 nop |
||
773 | 5ee: 7e 01 movw r14, r28 |
||
774 | 5f0: 01 01 movw r0, r2 |
||
775 | 5f2: 7e 00 .word 0x007e ; ???? |
||
776 | 5f4: 2a 2a or r2, r26 |
||
777 | 5f6: 2a 2a or r2, r26 |
||
778 | 5f8: 2a 00 .word 0x002a ; ???? |
||
779 | 5fa: 44 44 sbci r20, 0x44 ; 68 |
||
780 | 5fc: 5f 44 sbci r21, 0x4F ; 79 |
||
781 | 5fe: 44 00 .word 0x0044 ; ???? |
||
782 | 600: 40 51 subi r20, 0x10 ; 16 |
||
783 | 602: 4a 44 sbci r20, 0x4A ; 74 |
||
784 | 604: 40 00 .word 0x0040 ; ???? |
||
785 | 606: 40 44 sbci r20, 0x40 ; 64 |
||
786 | 608: 4a 51 subi r20, 0x1A ; 26 |
||
787 | 60a: 40 00 .word 0x0040 ; ???? |
||
788 | 60c: 00 00 nop |
||
789 | 60e: ff 01 movw r30, r30 |
||
790 | 610: 03 00 .word 0x0003 ; ???? |
||
791 | 612: e0 80 ld r14, Z |
||
792 | 614: ff 00 .word 0x00ff ; ???? |
||
793 | 616: 00 00 nop |
||
794 | 618: 08 08 sbc r0, r8 |
||
795 | 61a: 6b 6b ori r22, 0xBB ; 187 |
||
796 | 61c: 08 08 sbc r0, r8 |
||
797 | 61e: 36 12 cpse r3, r22 |
||
798 | 620: 36 24 eor r3, r6 |
||
799 | 622: 36 00 .word 0x0036 ; ???? |
||
800 | 624: 06 0f add r16, r22 |
||
801 | 626: 09 0f add r16, r25 |
||
802 | 628: 06 00 .word 0x0006 ; ???? |
||
803 | 62a: 00 00 nop |
||
804 | 62c: 18 18 sub r1, r8 |
||
805 | 62e: 00 00 nop |
||
806 | 630: 00 00 nop |
||
807 | 632: 10 10 cpse r1, r0 |
||
808 | 634: 00 00 nop |
||
809 | 636: 30 40 sbci r19, 0x00 ; 0 |
||
810 | 638: ff 01 movw r30, r30 |
||
811 | 63a: 01 00 .word 0x0001 ; ???? |
||
812 | 63c: 00 1f adc r16, r16 |
||
813 | 63e: 01 01 movw r0, r2 |
||
814 | 640: 1e 00 .word 0x001e ; ???? |
||
815 | 642: 00 19 sub r16, r0 |
||
816 | 644: 1d 17 cp r17, r29 |
||
817 | 646: 12 00 .word 0x0012 ; ???? |
||
818 | 648: 00 3c cpi r16, 0xC0 ; 192 |
||
819 | 64a: 3c 3c cpi r19, 0xCC ; 204 |
||
820 | 64c: 3c 00 .word 0x003c ; ???? |
||
821 | 64e: 00 00 nop |
||
822 | 650: 00 00 nop |
||
823 | ... |
||
824 | |||
825 | 00000654 <__c.0>: |
||
826 | 654: 20 20 20 20 20 20 00 . |
||
827 | |||
828 | 0000065b <parameter>: |
||
829 | 65b: 4e 69 63 6b 20 20 20 20 20 20 20 20 20 20 20 00 Nick . |
||
830 | 66b: 52 6f 6c 6c 20 20 20 20 20 20 20 20 20 20 20 00 Roll . |
||
831 | 67b: 47 61 73 20 20 20 20 20 20 20 20 20 20 20 20 00 Gas . |
||
832 | 68b: 47 69 65 72 09 09 09 00 00 00 00 00 00 00 00 00 Gier............ |
||
833 | 69b: 50 6f 74 69 31 09 09 09 00 00 00 00 00 00 00 00 Poti1........... |
||
834 | 6ab: 50 6f 74 69 32 09 09 09 00 00 00 00 00 00 00 00 Poti2........... |
||
835 | 6bb: 50 6f 74 69 33 09 09 09 00 00 00 00 00 00 00 00 Poti3........... |
||
836 | 6cb: 50 6f 74 69 34 09 09 09 00 00 00 00 00 00 00 00 Poti4........... |
||
837 | 6db: 43 6f 6e 66 69 67 09 09 09 00 00 00 00 00 00 00 Config.......... |
||
838 | 6eb: 48 6f 65 68 65 5f 4d 69 6e 47 61 73 20 20 20 00 Hoehe_MinGas . |
||
839 | 6fb: 4c 75 66 74 64 72 75 63 6b 5f 44 20 20 20 20 00 Luftdruck_D . |
||
840 | 70b: 4d 61 78 48 6f 65 68 65 20 20 20 20 20 20 20 00 MaxHoehe . |
||
841 | 71b: 48 6f 65 68 65 5f 50 20 20 20 20 20 20 20 20 00 Hoehe_P . |
||
842 | 72b: 48 6f 65 68 65 5f 56 65 72 73 74 61 65 72 6b 00 Hoehe_Verstaerk. |
||
843 | 73b: 48 6f 65 68 65 5f 41 43 43 5f 57 69 72 6b 2e 00 Hoehe_ACC_Wirk.. |
||
844 | 74b: 53 74 69 63 6b 5f 50 20 20 20 20 20 20 20 20 00 Stick_P . |
||
845 | 75b: 53 74 69 63 6b 5f 44 20 20 20 20 20 20 20 20 00 Stick_D . |
||
846 | 76b: 47 69 65 72 5f 50 20 20 20 20 20 20 20 20 20 00 Gier_P . |
||
847 | 77b: 47 61 73 5f 4d 69 6e 20 20 20 20 20 20 20 20 00 Gas_Min . |
||
848 | 78b: 47 61 73 5f 4d 61 78 20 20 20 20 20 20 20 20 00 Gas_Max . |
||
849 | 79b: 47 79 72 6f 41 63 63 46 61 6b 74 6f 72 09 00 00 GyroAccFaktor... |
||
850 | 7ab: 4b 6f 6d 70 61 73 73 57 69 72 6b 75 6e 67 20 00 KompassWirkung . |
||
851 | 7bb: 47 79 72 6f 5f 50 20 09 09 00 00 00 00 00 00 00 Gyro_P ......... |
||
852 | 7cb: 47 79 72 6f 5f 49 09 09 09 00 00 00 00 00 00 00 Gyro_I.......... |
||
853 | 7db: 55 6e 74 65 72 73 70 61 6e 6e 75 6e 67 20 20 00 Unterspannung . |
||
854 | 7eb: 4e 6f 74 47 61 73 09 09 09 00 00 00 00 00 00 00 NotGas.......... |
||
855 | 7fb: 4e 6f 74 47 61 73 5a 65 69 74 20 20 20 20 20 00 NotGasZeit . |
||
856 | 80b: 55 66 6f 41 75 73 72 69 63 68 74 75 6e 67 20 00 UfoAusrichtung . |
||
857 | 81b: 49 5f 46 61 6b 74 6f 72 20 20 20 20 20 20 20 00 I_Faktor . |
||
858 | 82b: 55 73 65 72 50 61 72 61 6d 31 09 09 00 00 00 00 UserParam1...... |
||
859 | 83b: 55 73 65 72 50 61 72 61 6d 32 09 09 00 00 00 00 UserParam2...... |
||
860 | 84b: 55 73 65 72 50 61 72 61 6d 33 09 09 00 00 00 00 UserParam3...... |
||
861 | 85b: 55 73 65 72 50 61 72 61 6d 34 09 09 00 00 00 00 UserParam4...... |
||
862 | 86b: 53 65 72 76 6f 4e 69 63 6b 43 74 72 6c 09 00 00 ServoNickCtrl... |
||
863 | 87b: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 09 00 00 ServoNickComp... |
||
864 | 88b: 53 65 72 76 6f 4e 69 63 6b 4d 69 6e 09 00 00 00 ServoNickMin.... |
||
865 | 89b: 53 65 72 76 6f 4e 69 63 6b 4d 61 78 09 00 00 00 ServoNickMax.... |
||
866 | 8ab: 53 65 72 76 6f 4e 69 63 6b 52 65 66 72 73 68 00 ServoNickRefrsh. |
||
867 | 8bb: 4c 6f 6f 70 47 61 73 4c 69 6d 69 74 09 00 00 00 LoopGasLimit.... |
||
868 | 8cb: 4c 6f 6f 70 54 68 72 65 73 68 6f 6c 64 09 00 00 LoopThreshold... |
||
869 | 8db: 4c 6f 6f 70 48 79 73 74 65 72 65 73 65 09 00 00 LoopHysterese... |
||
870 | 8eb: 41 63 68 73 4b 6f 70 70 6c 75 6e 67 09 00 00 00 AchsKopplung.... |
||
871 | 8fb: 41 63 68 73 47 65 67 65 6e 4b 6f 70 70 6c 2e 00 AchsGegenKoppl.. |
||
872 | 90b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 4e 69 63 6b 00 WinklUmschlNick. |
||
873 | 91b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 52 6f 6c 6c 00 WinklUmschlRoll. |
||
874 | 92b: 47 79 72 6f 41 63 63 41 62 67 6c 65 69 63 68 00 GyroAccAbgleich. |
||
875 | 93b: 44 72 69 66 74 6b 6f 6d 70 09 09 00 00 00 00 00 Driftkomp....... |
||
876 | 94b: 44 79 6e 61 6d 69 63 53 74 61 62 69 6c 69 74 00 DynamicStabilit. |
||
877 | 95b: 55 73 65 72 50 61 72 61 6d 35 09 09 00 00 00 00 UserParam5...... |
||
878 | 96b: 55 73 65 72 50 61 72 61 6d 36 09 09 00 00 00 00 UserParam6...... |
||
879 | 97b: 55 73 65 72 50 61 72 61 6d 37 09 09 00 00 00 00 UserParam7...... |
||
880 | 98b: 55 73 65 72 50 61 72 61 6d 38 09 09 00 00 00 00 UserParam8...... |
||
881 | 99b: 4c 6f 6f 70 43 6f 6e 66 69 67 09 09 00 00 00 00 LoopConfig...... |
||
882 | 9ab: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 49 6e 00 ServoNickCompIn. |
||
883 | |||
884 | 000009bb <bin_parameter>: |
||
885 | 9bb: 4c 6f 6f 70 20 75 70 20 20 20 20 20 20 20 20 00 Loop up . |
||
886 | 9cb: 4c 6f 6f 70 20 64 6f 77 6e 09 20 20 20 20 00 00 Loop down. .. |
||
887 | 9db: 4c 6f 6f 70 20 6c 65 66 74 20 20 20 20 20 20 00 Loop left . |
||
888 | 9eb: 4c 6f 6f 70 20 72 69 67 68 74 20 20 20 20 20 00 Loop right . |
||
889 | 9fb: 48 f6 68 65 6e 72 65 67 6c 65 72 20 20 20 20 00 H.henregler . |
||
890 | a0b: 48 f6 68 65 6e 73 63 68 61 6c 74 65 72 20 20 00 H.henschalter . |
||
891 | a1b: 48 65 61 64 68 6f 6c 64 09 09 00 00 00 00 00 00 Headhold........ |
||
892 | a2b: 4b 6f 6d 70 61 73 73 09 09 00 00 00 00 00 00 00 Kompass......... |
||
893 | a3b: 4b 6f 6d 70 61 73 73 46 69 78 09 09 00 00 00 00 KompassFix...... |
||
894 | a4b: 47 50 53 09 09 09 00 00 00 00 00 00 00 00 00 00 GPS............. |
||
895 | a5b: 41 63 68 73 65 6e 6b 6f 70 70 6c 75 6e 67 20 00 Achsenkopplung . |
||
896 | a6b: 44 72 65 68 72 61 74 65 09 09 00 00 00 00 00 00 Drehrate........ |
||
897 | |||
898 | 00000a7b <p_limits>: |
||
899 | a7b: 01 08 02 01 08 02 01 08 02 01 08 02 01 08 02 01 ................ |
||
900 | a8b: 08 02 01 08 02 01 08 02 00 00 00 00 ff 04 00 ff ................ |
||
901 | a9b: 04 00 ff 04 00 ff 04 00 32 04 00 ff 04 00 06 03 ........2....... |
||
902 | aab: 00 40 03 00 14 03 00 20 08 21 fa 08 00 32 08 00 .@..... .!...2.. |
||
903 | abb: ff 08 00 00 05 00 00 05 00 fa 08 00 fa 08 00 fa ................ |
||
904 | acb: 08 00 01 00 00 ff 05 00 ff 09 00 ff 09 00 ff 09 ................ |
||
905 | adb: 00 ff 09 00 ff 07 00 fa 07 00 fa 07 00 fa 07 00 ................ |
||
906 | aeb: 19 07 00 ff 06 00 fa 06 00 fa 06 00 ff 0a 00 ff ................ |
||
907 | afb: 0a 00 fa 06 00 fa 06 00 fa 05 00 fa 05 00 ff 05 ................ |
||
908 | b0b: 00 ff 09 00 ff 09 00 ff 09 00 ff 09 00 00 01 00 ................ |
||
909 | b1b: 01 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
||
910 | ... |
||
911 | |||
912 | 00000b42 <p_menu_number>: |
||
913 | b42: 02 02 02 02 02 02 02 02 00 04 04 04 04 04 04 03 ................ |
||
914 | b52: 03 03 08 08 08 08 05 05 08 08 08 00 05 09 09 09 ................ |
||
915 | b62: 09 07 07 07 07 07 07 06 06 06 0a 0a 06 06 05 05 ................ |
||
916 | b72: 05 09 09 09 09 00 07 0b 0b 0b 0b 0c 0c 0c 0c 0c ................ |
||
917 | b82: 0c 0c 0c ... |
||
918 | |||
919 | 00000b85 <p_menus>: |
||
920 | b85: 43 6f 6e 66 69 67 20 20 20 20 00 43 68 61 6e 6e Config .Chann |
||
921 | b95: 65 6c 73 20 20 00 53 74 69 63 6b 20 20 20 20 20 els .Stick |
||
922 | ba5: 00 48 6f 65 68 65 20 20 20 20 20 00 47 79 72 6f .Hoehe .Gyro |
||
923 | bb5: 20 20 20 20 20 20 00 4c 6f 6f 70 69 6e 67 20 20 .Looping |
||
924 | bc5: 20 00 43 61 6d 65 72 61 20 20 20 20 00 53 6f 6e .Camera .Son |
||
925 | bd5: 73 74 69 67 65 73 20 00 55 73 65 72 20 20 20 20 stiges .User |
||
926 | be5: 20 20 00 43 6f 75 70 6c 69 6e 67 20 20 00 43 6f .Coupling .Co |
||
927 | bf5: 6e 66 69 67 28 32 29 20 00 4c 6f 6f 70 69 6e 67 nfig(2) .Looping |
||
928 | c05: 73 65 74 00 set. |
||
929 | |||
930 | 00000c09 <__c.11>: |
||
931 | c09: 2d 00 -. |
||
932 | |||
933 | 00000c0b <__c.12>: |
||
934 | c0b: 2d 00 -. |
||
935 | |||
936 | 00000c0d <__c.13>: |
||
937 | c0d: 2d 00 -. |
||
938 | |||
939 | 00000c0f <__c.0>: |
||
940 | c0f: 4c 61 64 65 20 50 61 72 61 6d 65 74 65 72 0d 0a Lade Parameter.. |
||
941 | ... |
||
942 | |||
943 | 00000c20 <__c.1>: |
||
944 | c20: 20 31 3a 0d 0a 00 1:... |
||
945 | |||
946 | 00000c26 <__c.2>: |
||
947 | c26: 20 32 3a 0d 0a 00 2:... |
||
948 | |||
949 | 00000c2c <__c.3>: |
||
950 | c2c: 20 33 3a 0d 0a 00 3:... |
||
951 | |||
952 | 00000c32 <__c.4>: |
||
953 | c32: 20 34 3a 0d 0a 00 4:... |
||
954 | |||
955 | 00000c38 <__c.5>: |
||
956 | c38: 20 35 3a 0d 0a 00 5:... |
||
957 | |||
958 | 00000c3e <__c.6>: |
||
959 | c3e: 54 69 6d 65 6f 75 74 00 Timeout. |
||
960 | |||
961 | 00000c46 <__c.7>: |
||
962 | c46: 50 61 72 61 6d 65 74 65 72 20 73 70 65 69 63 68 Parameter speich |
||
963 | c56: 65 72 6e 3f 0d 0a 20 20 6a 61 0d 0a 20 20 6e 65 ern?.. ja.. ne |
||
964 | c66: 69 6e 00 in. |
||
965 | |||
966 | 00000c69 <__c.8>: |
||
967 | c69: 0d 0a 2d 2d 2d 3e 00 ..--->. |
||
968 | |||
969 | 00000c70 <__c.9>: |
||
970 | c70: 0d 0a 50 61 72 61 6d 65 74 65 72 20 67 65 73 70 ..Parameter gesp |
||
971 | c80: 65 69 63 68 65 72 74 00 eichert. |
||
972 | |||
973 | 00000c88 <__c.10>: |
||
974 | c88: 0d 0a 4e 69 63 68 74 20 67 65 73 70 65 69 63 68 ..Nicht gespeich |
||
975 | c98: 65 72 74 00 ert. |
||
976 | |||
977 | 00000c9c <__c.4>: |
||
978 | c9c: 20 00 . |
||
979 | |||
980 | 00000c9e <__c.5>: |
||
981 | c9e: 2a 00 *. |
||
982 | |||
983 | 00000ca0 <__c.0>: |
||
984 | ca0: 48 61 75 70 74 6d 65 6e fc 28 42 45 54 41 20 56 Hauptmen.(BETA V |
||
985 | cb0: 30 2e 31 29 0d 0a 00 0.1)... |
||
986 | |||
987 | 00000cb7 <__c.1>: |
||
988 | cb7: 0d 0a 44 69 73 70 6c 61 79 0d 0a 00 ..Display... |
||
989 | |||
990 | 00000cc3 <__c.2>: |
||
991 | cc3: 50 61 72 61 6d 65 74 65 72 0d 0a 00 Parameter... |
||
992 | |||
993 | 00000ccf <__c.3>: |
||
994 | ccf: 4d 6f 74 6f 72 74 65 73 74 00 Motortest. |
||
995 | |||
996 | 00000cd9 <__c.0>: |
||
997 | cd9: 44 69 73 70 6c 61 79 00 Display. |
||
998 | |||
999 | 00000ce1 <__c.1>: |
||
1000 | ce1: 0d 0a 54 69 6d 65 6f 75 74 21 00 ..Timeout!. |
||
1001 | |||
1002 | 00000cec <__c.0>: |
||
1003 | cec: 54 61 73 74 65 20 64 72 fc 63 6b 65 6e 0d 0a 00 Taste dr.cken... |
||
1004 | |||
1005 | 00000cfc <__init>: |
||
1006 | cfc: 11 24 eor r1, r1 |
||
1007 | cfe: 1f be out 0x3f, r1 ; 63 |
||
1008 | d00: cf e5 ldi r28, 0x5F ; 95 |
||
1009 | d02: d8 e0 ldi r29, 0x08 ; 8 |
||
1010 | d04: de bf out 0x3e, r29 ; 62 |
||
1011 | d06: cd bf out 0x3d, r28 ; 61 |
||
1012 | |||
1013 | 00000d08 <__do_copy_data>: |
||
1014 | d08: 10 e0 ldi r17, 0x00 ; 0 |
||
1015 | d0a: a0 e6 ldi r26, 0x60 ; 96 |
||
1016 | d0c: b0 e0 ldi r27, 0x00 ; 0 |
||
1017 | d0e: ec e6 ldi r30, 0x6C ; 108 |
||
1018 | d10: f6 e2 ldi r31, 0x26 ; 38 |
||
1019 | d12: 02 c0 rjmp .+4 ; 0xd18 <.do_copy_data_start> |
||
1020 | |||
1021 | 00000d14 <.do_copy_data_loop>: |
||
1022 | d14: 05 90 lpm r0, Z+ |
||
1023 | d16: 0d 92 st X+, r0 |
||
1024 | |||
1025 | 00000d18 <.do_copy_data_start>: |
||
1026 | d18: a0 36 cpi r26, 0x60 ; 96 |
||
1027 | d1a: b1 07 cpc r27, r17 |
||
1028 | d1c: d9 f7 brne .-10 ; 0xd14 <.do_copy_data_loop> |
||
1029 | |||
1030 | 00000d1e <__do_clear_bss>: |
||
1031 | d1e: 15 e0 ldi r17, 0x05 ; 5 |
||
1032 | d20: a0 e6 ldi r26, 0x60 ; 96 |
||
1033 | d22: b0 e0 ldi r27, 0x00 ; 0 |
||
1034 | d24: 01 c0 rjmp .+2 ; 0xd28 <.do_clear_bss_start> |
||
1035 | |||
1036 | 00000d26 <.do_clear_bss_loop>: |
||
1037 | d26: 1d 92 st X+, r1 |
||
1038 | |||
1039 | 00000d28 <.do_clear_bss_start>: |
||
1040 | d28: a7 38 cpi r26, 0x87 ; 135 |
||
1041 | d2a: b1 07 cpc r27, r17 |
||
1042 | d2c: e1 f7 brne .-8 ; 0xd26 <.do_clear_bss_loop> |
||
1043 | d2e: 0c 94 9b 06 jmp 0xd36 <main> |
||
1044 | |||
1045 | 00000d32 <__bad_interrupt>: |
||
1046 | d32: 0c 94 00 00 jmp 0x0 <__vectors> |
||
1047 | |||
1048 | 00000d36 <main>: |
||
1049 | #include "timer.h" |
||
1050 | |||
1051 | |||
1052 | int main (void) |
||
1053 | { |
||
1054 | d36: cf e5 ldi r28, 0x5F ; 95 |
||
1055 | d38: d8 e0 ldi r29, 0x08 ; 8 |
||
1056 | d3a: de bf out 0x3e, r29 ; 62 |
||
1057 | d3c: cd bf out 0x3d, r28 ; 61 |
||
1058 | PORTA = 0xFF; // unbenutzte Pins auf Pull-Up |
||
1059 | d3e: 8f ef ldi r24, 0xFF ; 255 |
||
1060 | d40: 8b bb out 0x1b, r24 ; 27 |
||
1061 | PORTB = 0x43; |
||
1062 | d42: 83 e4 ldi r24, 0x43 ; 67 |
||
1063 | d44: 88 bb out 0x18, r24 ; 24 |
||
1064 | PORTC = 0xFC; |
||
1065 | d46: 8c ef ldi r24, 0xFC ; 252 |
||
1066 | d48: 85 bb out 0x15, r24 ; 21 |
||
1067 | PORTD = 0x7C; |
||
1068 | d4a: 8c e7 ldi r24, 0x7C ; 124 |
||
1069 | d4c: 82 bb out 0x12, r24 ; 18 |
||
1070 | |||
1071 | DDRC = 0x03; // Pins für Beleuchtung auf Ausgang |
||
1072 | d4e: 83 e0 ldi r24, 0x03 ; 3 |
||
1073 | d50: 84 bb out 0x14, r24 ; 20 |
||
1074 | DDRD = 0x80; |
||
1075 | d52: 80 e8 ldi r24, 0x80 ; 128 |
||
1076 | d54: 81 bb out 0x11, r24 ; 17 |
||
1077 | |||
1078 | lcd_init(); |
||
1079 | d56: 0e 94 53 07 call 0xea6 <lcd_init> |
||
1080 | RS232_init(); |
||
1081 | d5a: 0e 94 1a 0c call 0x1834 <RS232_init> |
||
1082 | timer_init(); |
||
1083 | d5e: 0e 94 f4 06 call 0xde8 <timer_init> |
||
1084 | |||
1085 | sei(); |
||
1086 | d62: 78 94 sei |
||
1087 | |||
1088 | for (;;) |
||
1089 | main_menu(); |
||
1090 | d64: 0e 94 c8 11 call 0x2390 <main_menu> |
||
1091 | d68: fd cf rjmp .-6 ; 0xd64 <main+0x2e> |
||
1092 | |||
1093 | 00000d6a <__vector_10>: |
||
1094 | volatile uint8_t rs232_timer; |
||
1095 | |||
1096 | |||
1097 | ISR(SIG_OUTPUT_COMPARE0) // Timer-Interrupt (100 Hz) |
||
1098 | { |
||
1099 | d6a: 1f 92 push r1 |
||
1100 | d6c: 0f 92 push r0 |
||
1101 | d6e: 0f b6 in r0, 0x3f ; 63 |
||
1102 | d70: 0f 92 push r0 |
||
1103 | d72: 11 24 eor r1, r1 |
||
1104 | d74: 8f 93 push r24 |
||
1105 | d76: 9f 93 push r25 |
||
1106 | if (counter > 0) |
||
1107 | d78: 80 91 e4 04 lds r24, 0x04E4 |
||
1108 | d7c: 88 23 and r24, r24 |
||
1109 | d7e: 31 f0 breq .+12 ; 0xd8c <__vector_10+0x22> |
||
1110 | counter --; |
||
1111 | d80: 80 91 e4 04 lds r24, 0x04E4 |
||
1112 | d84: 81 50 subi r24, 0x01 ; 1 |
||
1113 | d86: 80 93 e4 04 sts 0x04E4, r24 |
||
1114 | d8a: 15 c0 rjmp .+42 ; 0xdb6 <__vector_10+0x4c> |
||
1115 | else |
||
1116 | { |
||
1117 | counter = 10; |
||
1118 | d8c: 8a e0 ldi r24, 0x0A ; 10 |
||
1119 | d8e: 80 93 e4 04 sts 0x04E4, r24 |
||
1120 | key = (~PINA >> 4) & 0x0F; |
||
1121 | d92: 89 b3 in r24, 0x19 ; 25 |
||
1122 | d94: 99 27 eor r25, r25 |
||
1123 | d96: 80 95 com r24 |
||
1124 | d98: 90 95 com r25 |
||
1125 | d9a: 68 94 set |
||
1126 | d9c: 13 f8 bld r1, 3 |
||
1127 | d9e: 95 95 asr r25 |
||
1128 | da0: 87 95 ror r24 |
||
1129 | da2: 16 94 lsr r1 |
||
1130 | da4: e1 f7 brne .-8 ; 0xd9e <__vector_10+0x34> |
||
1131 | da6: 8f 70 andi r24, 0x0F ; 15 |
||
1132 | da8: 80 93 e6 04 sts 0x04E6, r24 |
||
1133 | counter2 ++; |
||
1134 | dac: 80 91 69 05 lds r24, 0x0569 |
||
1135 | db0: 8f 5f subi r24, 0xFF ; 255 |
||
1136 | db2: 80 93 69 05 sts 0x0569, r24 |
||
1137 | } |
||
1138 | |||
1139 | if (timer > 0) |
||
1140 | db6: 80 91 61 00 lds r24, 0x0061 |
||
1141 | dba: 88 23 and r24, r24 |
||
1142 | dbc: 29 f0 breq .+10 ; 0xdc8 <__vector_10+0x5e> |
||
1143 | timer --; |
||
1144 | dbe: 80 91 61 00 lds r24, 0x0061 |
||
1145 | dc2: 81 50 subi r24, 0x01 ; 1 |
||
1146 | dc4: 80 93 61 00 sts 0x0061, r24 |
||
1147 | |||
1148 | if (rs232_timer > 0) |
||
1149 | dc8: 80 91 e5 04 lds r24, 0x04E5 |
||
1150 | dcc: 88 23 and r24, r24 |
||
1151 | dce: 29 f0 breq .+10 ; 0xdda <__vector_10+0x70> |
||
1152 | rs232_timer --; |
||
1153 | dd0: 80 91 e5 04 lds r24, 0x04E5 |
||
1154 | dd4: 81 50 subi r24, 0x01 ; 1 |
||
1155 | dd6: 80 93 e5 04 sts 0x04E5, r24 |
||
1156 | dda: 9f 91 pop r25 |
||
1157 | ddc: 8f 91 pop r24 |
||
1158 | dde: 0f 90 pop r0 |
||
1159 | de0: 0f be out 0x3f, r0 ; 63 |
||
1160 | de2: 0f 90 pop r0 |
||
1161 | de4: 1f 90 pop r1 |
||
1162 | de6: 18 95 reti |
||
1163 | |||
1164 | 00000de8 <timer_init>: |
||
1165 | |||
1166 | } |
||
1167 | |||
1168 | void timer_init (void) |
||
1169 | { |
||
1170 | TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024 |
||
1171 | de8: 8d e0 ldi r24, 0x0D ; 13 |
||
1172 | dea: 83 bf out 0x33, r24 ; 51 |
||
1173 | OCR0 = 72; // Interrupt 100Hz für 7,372800 MHz-Quarz |
||
1174 | dec: 88 e4 ldi r24, 0x48 ; 72 |
||
1175 | dee: 8c bf out 0x3c, r24 ; 60 |
||
1176 | TIMSK |= (1<<OCIE0); // Interrupt freigeben für OCR |
||
1177 | df0: 89 b7 in r24, 0x39 ; 57 |
||
1178 | df2: 82 60 ori r24, 0x02 ; 2 |
||
1179 | df4: 89 bf out 0x39, r24 ; 57 |
||
1180 | df6: 08 95 ret |
||
1181 | |||
1182 | 00000df8 <send_byte>: |
||
1183 | |||
1184 | |||
1185 | void send_byte (uint8_t data) |
||
1186 | { |
||
1187 | clr_cs(); |
||
1188 | df8: c4 98 cbi 0x18, 4 ; 24 |
||
1189 | SPDR = data; |
||
1190 | dfa: 8f b9 out 0x0f, r24 ; 15 |
||
1191 | while(!(SPSR & (1<<SPIF))); |
||
1192 | dfc: 77 9b sbis 0x0e, 7 ; 14 |
||
1193 | dfe: fe cf rjmp .-4 ; 0xdfc <send_byte+0x4> |
||
1194 | SPSR = SPSR; |
||
1195 | e00: 8e b1 in r24, 0x0e ; 14 |
||
1196 | e02: 8e b9 out 0x0e, r24 ; 14 |
||
1197 | set_cs(); |
||
1198 | e04: c4 9a sbi 0x18, 4 ; 24 |
||
1199 | e06: 08 95 ret |
||
1200 | |||
1201 | 00000e08 <cls>: |
||
1202 | } |
||
1203 | |||
1204 | void cls (void) |
||
1205 | { |
||
1206 | e08: 0f 93 push r16 |
||
1207 | e0a: 1f 93 push r17 |
||
1208 | e0c: cf 93 push r28 |
||
1209 | e0e: df 93 push r29 |
||
1210 | e10: 82 e6 ldi r24, 0x62 ; 98 |
||
1211 | e12: 90 e0 ldi r25, 0x00 ; 0 |
||
1212 | e14: fc 01 movw r30, r24 |
||
1213 | uint16_t i,j; |
||
1214 | |||
1215 | for (i=0;i<1024;i++) |
||
1216 | display_buffer[i] = 0x00; |
||
1217 | e16: 11 92 st Z+, r1 |
||
1218 | e18: 01 96 adiw r24, 0x01 ; 1 |
||
1219 | e1a: 24 e0 ldi r18, 0x04 ; 4 |
||
1220 | e1c: 81 36 cpi r24, 0x61 ; 97 |
||
1221 | e1e: 92 07 cpc r25, r18 |
||
1222 | e20: d1 f3 breq .-12 ; 0xe16 <cls+0xe> |
||
1223 | e22: c8 f3 brcs .-14 ; 0xe16 <cls+0xe> |
||
1224 | |||
1225 | for (i=0;i<8;i++) |
||
1226 | e24: 00 e0 ldi r16, 0x00 ; 0 |
||
1227 | e26: 10 e0 ldi r17, 0x00 ; 0 |
||
1228 | { |
||
1229 | clr_A0(); |
||
1230 | e28: c3 98 cbi 0x18, 3 ; 24 |
||
1231 | send_byte(0xB0+i); |
||
1232 | e2a: 80 2f mov r24, r16 |
||
1233 | e2c: 80 55 subi r24, 0x50 ; 80 |
||
1234 | e2e: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1235 | send_byte(0x10); |
||
1236 | e32: 80 e1 ldi r24, 0x10 ; 16 |
||
1237 | e34: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1238 | send_byte(0x04); |
||
1239 | e38: 84 e0 ldi r24, 0x04 ; 4 |
||
1240 | e3a: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1241 | |||
1242 | set_A0(); |
||
1243 | e3e: c3 9a sbi 0x18, 3 ; 24 |
||
1244 | e40: cf e7 ldi r28, 0x7F ; 127 |
||
1245 | e42: d0 e0 ldi r29, 0x00 ; 0 |
||
1246 | for (j=0;j<128;j++) |
||
1247 | send_byte(0x00); |
||
1248 | e44: 80 e0 ldi r24, 0x00 ; 0 |
||
1249 | e46: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1250 | e4a: 21 97 sbiw r28, 0x01 ; 1 |
||
1251 | e4c: d7 ff sbrs r29, 7 |
||
1252 | e4e: fa cf rjmp .-12 ; 0xe44 <cls+0x3c> |
||
1253 | e50: 0f 5f subi r16, 0xFF ; 255 |
||
1254 | e52: 1f 4f sbci r17, 0xFF ; 255 |
||
1255 | e54: 08 30 cpi r16, 0x08 ; 8 |
||
1256 | e56: 11 05 cpc r17, r1 |
||
1257 | e58: 38 f3 brcs .-50 ; 0xe28 <cls+0x20> |
||
1258 | } |
||
1259 | |||
1260 | lcd_xpos = 0; |
||
1261 | e5a: 10 92 6a 05 sts 0x056A, r1 |
||
1262 | lcd_ypos = 0; |
||
1263 | e5e: 10 92 6b 05 sts 0x056B, r1 |
||
1264 | e62: df 91 pop r29 |
||
1265 | e64: cf 91 pop r28 |
||
1266 | e66: 1f 91 pop r17 |
||
1267 | e68: 0f 91 pop r16 |
||
1268 | e6a: 08 95 ret |
||
1269 | |||
1270 | 00000e6c <lcd_cls>: |
||
1271 | } |
||
1272 | |||
1273 | void lcd_cls (void) |
||
1274 | { |
||
1275 | cls(); |
||
1276 | e6c: 0e 94 04 07 call 0xe08 <cls> |
||
1277 | e70: 08 95 ret |
||
1278 | |||
1279 | 00000e72 <wait_1ms>: |
||
1280 | __ticks = 1; |
||
1281 | else if (__tmp > 65535) |
||
1282 | __ticks = 0; /* i.e. 65536 */ |
||
1283 | else |
||
1284 | __ticks = (uint16_t)__tmp; |
||
1285 | e72: 83 e3 ldi r24, 0x33 ; 51 |
||
1286 | e74: 97 e0 ldi r25, 0x07 ; 7 |
||
1287 | e76: 01 97 sbiw r24, 0x01 ; 1 |
||
1288 | e78: f1 f7 brne .-4 ; 0xe76 <wait_1ms+0x4> |
||
1289 | e7a: 08 95 ret |
||
1290 | |||
1291 | 00000e7c <wait_ms>: |
||
1292 | } |
||
1293 | |||
1294 | void wait_1ms(void) |
||
1295 | { |
||
1296 | _delay_ms (1.0); |
||
1297 | } |
||
1298 | |||
1299 | void wait_ms (uint16_t time) |
||
1300 | { |
||
1301 | e7c: 0f 93 push r16 |
||
1302 | e7e: 1f 93 push r17 |
||
1303 | e80: cf 93 push r28 |
||
1304 | e82: df 93 push r29 |
||
1305 | e84: 8c 01 movw r16, r24 |
||
1306 | uint16_t i; |
||
1307 | |||
1308 | for (i=0; i<time; i++) |
||
1309 | e86: c0 e0 ldi r28, 0x00 ; 0 |
||
1310 | e88: d0 e0 ldi r29, 0x00 ; 0 |
||
1311 | e8a: c8 17 cp r28, r24 |
||
1312 | e8c: d9 07 cpc r29, r25 |
||
1313 | e8e: 30 f4 brcc .+12 ; 0xe9c <wait_ms+0x20> |
||
1314 | wait_1ms(); |
||
1315 | e90: 0e 94 39 07 call 0xe72 <wait_1ms> |
||
1316 | e94: 21 96 adiw r28, 0x01 ; 1 |
||
1317 | e96: c0 17 cp r28, r16 |
||
1318 | e98: d1 07 cpc r29, r17 |
||
1319 | e9a: d0 f3 brcs .-12 ; 0xe90 <wait_ms+0x14> |
||
1320 | e9c: df 91 pop r29 |
||
1321 | e9e: cf 91 pop r28 |
||
1322 | ea0: 1f 91 pop r17 |
||
1323 | ea2: 0f 91 pop r16 |
||
1324 | ea4: 08 95 ret |
||
1325 | |||
1326 | 00000ea6 <lcd_init>: |
||
1327 | } |
||
1328 | |||
1329 | void lcd_init (void) |
||
1330 | { |
||
1331 | lcd_xpos = 0; |
||
1332 | ea6: 10 92 6a 05 sts 0x056A, r1 |
||
1333 | lcd_ypos = 0; |
||
1334 | eaa: 10 92 6b 05 sts 0x056B, r1 |
||
1335 | |||
1336 | DDRB = 0xFF; |
||
1337 | eae: 8f ef ldi r24, 0xFF ; 255 |
||
1338 | eb0: 87 bb out 0x17, r24 ; 23 |
||
1339 | |||
1340 | SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1); |
||
1341 | eb2: 8e e5 ldi r24, 0x5E ; 94 |
||
1342 | eb4: 8d b9 out 0x0d, r24 ; 13 |
||
1343 | |||
1344 | set_cs(); |
||
1345 | eb6: c4 9a sbi 0x18, 4 ; 24 |
||
1346 | clr_reset(); |
||
1347 | eb8: c2 98 cbi 0x18, 2 ; 24 |
||
1348 | wait_ms(10); |
||
1349 | eba: 8a e0 ldi r24, 0x0A ; 10 |
||
1350 | ebc: 90 e0 ldi r25, 0x00 ; 0 |
||
1351 | ebe: 0e 94 3e 07 call 0xe7c <wait_ms> |
||
1352 | set_reset(); |
||
1353 | ec2: c2 9a sbi 0x18, 2 ; 24 |
||
1354 | |||
1355 | clr_cs(); |
||
1356 | ec4: c4 98 cbi 0x18, 4 ; 24 |
||
1357 | clr_A0(); |
||
1358 | ec6: c3 98 cbi 0x18, 3 ; 24 |
||
1359 | |||
1360 | send_byte(0x40); |
||
1361 | ec8: 80 e4 ldi r24, 0x40 ; 64 |
||
1362 | eca: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1363 | send_byte(0xA0); // A1 |
||
1364 | ece: 80 ea ldi r24, 0xA0 ; 160 |
||
1365 | ed0: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1366 | send_byte(0xC8); // C0 |
||
1367 | ed4: 88 ec ldi r24, 0xC8 ; 200 |
||
1368 | ed6: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1369 | send_byte(0xA6); |
||
1370 | eda: 86 ea ldi r24, 0xA6 ; 166 |
||
1371 | edc: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1372 | send_byte(0xA2); |
||
1373 | ee0: 82 ea ldi r24, 0xA2 ; 162 |
||
1374 | ee2: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1375 | send_byte(0x2F); |
||
1376 | ee6: 8f e2 ldi r24, 0x2F ; 47 |
||
1377 | ee8: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1378 | send_byte(0xF8); |
||
1379 | eec: 88 ef ldi r24, 0xF8 ; 248 |
||
1380 | eee: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1381 | send_byte(0x00); |
||
1382 | ef2: 80 e0 ldi r24, 0x00 ; 0 |
||
1383 | ef4: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1384 | send_byte(0x27); |
||
1385 | ef8: 87 e2 ldi r24, 0x27 ; 39 |
||
1386 | efa: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1387 | send_byte(0x81); |
||
1388 | efe: 81 e8 ldi r24, 0x81 ; 129 |
||
1389 | f00: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1390 | send_byte(0x16); |
||
1391 | f04: 86 e1 ldi r24, 0x16 ; 22 |
||
1392 | f06: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1393 | send_byte(0xAC); |
||
1394 | f0a: 8c ea ldi r24, 0xAC ; 172 |
||
1395 | f0c: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1396 | send_byte(0x00); |
||
1397 | f10: 80 e0 ldi r24, 0x00 ; 0 |
||
1398 | f12: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1399 | send_byte(0xAF); |
||
1400 | f16: 8f ea ldi r24, 0xAF ; 175 |
||
1401 | f18: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1402 | |||
1403 | cls(); |
||
1404 | f1c: 0e 94 04 07 call 0xe08 <cls> |
||
1405 | f20: 08 95 ret |
||
1406 | |||
1407 | 00000f22 <set_adress>: |
||
1408 | |||
1409 | } |
||
1410 | |||
1411 | void set_adress (uint16_t adress, uint8_t data) |
||
1412 | { |
||
1413 | f22: ff 92 push r15 |
||
1414 | f24: 0f 93 push r16 |
||
1415 | f26: 1f 93 push r17 |
||
1416 | f28: 8c 01 movw r16, r24 |
||
1417 | f2a: f6 2e mov r15, r22 |
||
1418 | uint8_t page; |
||
1419 | uint8_t column; |
||
1420 | |||
1421 | page = adress >> 7; |
||
1422 | f2c: 88 0f add r24, r24 |
||
1423 | f2e: 89 2f mov r24, r25 |
||
1424 | f30: 88 1f adc r24, r24 |
||
1425 | f32: 99 0b sbc r25, r25 |
||
1426 | f34: 91 95 neg r25 |
||
1427 | |||
1428 | clr_A0(); |
||
1429 | f36: c3 98 cbi 0x18, 3 ; 24 |
||
1430 | send_byte(0xB0 + page); |
||
1431 | f38: 80 55 subi r24, 0x50 ; 80 |
||
1432 | f3a: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1433 | |||
1434 | column = (adress & 0x7F) + 4; |
||
1435 | f3e: 10 2f mov r17, r16 |
||
1436 | f40: 1f 77 andi r17, 0x7F ; 127 |
||
1437 | f42: 1c 5f subi r17, 0xFC ; 252 |
||
1438 | |||
1439 | send_byte(0x10 + (column >> 4)); |
||
1440 | f44: 81 2f mov r24, r17 |
||
1441 | f46: 82 95 swap r24 |
||
1442 | f48: 8f 70 andi r24, 0x0F ; 15 |
||
1443 | f4a: 80 5f subi r24, 0xF0 ; 240 |
||
1444 | f4c: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1445 | send_byte(column & 0x0F); |
||
1446 | f50: 81 2f mov r24, r17 |
||
1447 | f52: 8f 70 andi r24, 0x0F ; 15 |
||
1448 | f54: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1449 | |||
1450 | set_A0(); |
||
1451 | f58: c3 9a sbi 0x18, 3 ; 24 |
||
1452 | send_byte(data); |
||
1453 | f5a: 8f 2d mov r24, r15 |
||
1454 | f5c: 0e 94 fc 06 call 0xdf8 <send_byte> |
||
1455 | f60: 1f 91 pop r17 |
||
1456 | f62: 0f 91 pop r16 |
||
1457 | f64: ff 90 pop r15 |
||
1458 | f66: 08 95 ret |
||
1459 | |||
1460 | 00000f68 <scroll>: |
||
1461 | } |
||
1462 | |||
1463 | void scroll (void) |
||
1464 | { |
||
1465 | f68: ef 92 push r14 |
||
1466 | f6a: ff 92 push r15 |
||
1467 | f6c: 0f 93 push r16 |
||
1468 | f6e: 1f 93 push r17 |
||
1469 | f70: cf 93 push r28 |
||
1470 | f72: df 93 push r29 |
||
1471 | uint16_t adress; |
||
1472 | |||
1473 | for (adress=0;adress<896;adress++) |
||
1474 | f74: c0 e0 ldi r28, 0x00 ; 0 |
||
1475 | f76: d0 e0 ldi r29, 0x00 ; 0 |
||
1476 | f78: 32 ee ldi r19, 0xE2 ; 226 |
||
1477 | f7a: e3 2e mov r14, r19 |
||
1478 | f7c: 30 e0 ldi r19, 0x00 ; 0 |
||
1479 | f7e: f3 2e mov r15, r19 |
||
1480 | f80: 87 01 movw r16, r14 |
||
1481 | f82: 00 58 subi r16, 0x80 ; 128 |
||
1482 | f84: 10 40 sbci r17, 0x00 ; 0 |
||
1483 | { |
||
1484 | display_buffer[adress] = display_buffer[adress+128]; |
||
1485 | f86: f7 01 movw r30, r14 |
||
1486 | f88: 81 91 ld r24, Z+ |
||
1487 | f8a: 7f 01 movw r14, r30 |
||
1488 | f8c: f8 01 movw r30, r16 |
||
1489 | f8e: 80 83 st Z, r24 |
||
1490 | set_adress(adress,display_buffer[adress]); |
||
1491 | f90: 61 91 ld r22, Z+ |
||
1492 | f92: 8f 01 movw r16, r30 |
||
1493 | f94: ce 01 movw r24, r28 |
||
1494 | f96: 0e 94 91 07 call 0xf22 <set_adress> |
||
1495 | f9a: 21 96 adiw r28, 0x01 ; 1 |
||
1496 | f9c: f3 e0 ldi r31, 0x03 ; 3 |
||
1497 | f9e: c0 38 cpi r28, 0x80 ; 128 |
||
1498 | fa0: df 07 cpc r29, r31 |
||
1499 | fa2: 88 f3 brcs .-30 ; 0xf86 <scroll+0x1e> |
||
1500 | fa4: c0 e8 ldi r28, 0x80 ; 128 |
||
1501 | fa6: d3 e0 ldi r29, 0x03 ; 3 |
||
1502 | fa8: 02 ee ldi r16, 0xE2 ; 226 |
||
1503 | faa: 13 e0 ldi r17, 0x03 ; 3 |
||
1504 | } |
||
1505 | for (adress=896;adress<1024;adress++) |
||
1506 | { |
||
1507 | display_buffer[adress] = 0; |
||
1508 | fac: f8 01 movw r30, r16 |
||
1509 | fae: 11 92 st Z+, r1 |
||
1510 | fb0: 8f 01 movw r16, r30 |
||
1511 | set_adress(adress,0); |
||
1512 | fb2: 60 e0 ldi r22, 0x00 ; 0 |
||
1513 | fb4: ce 01 movw r24, r28 |
||
1514 | fb6: 0e 94 91 07 call 0xf22 <set_adress> |
||
1515 | fba: 21 96 adiw r28, 0x01 ; 1 |
||
1516 | fbc: f4 e0 ldi r31, 0x04 ; 4 |
||
1517 | fbe: c0 30 cpi r28, 0x00 ; 0 |
||
1518 | fc0: df 07 cpc r29, r31 |
||
1519 | fc2: a0 f3 brcs .-24 ; 0xfac <scroll+0x44> |
||
1520 | fc4: df 91 pop r29 |
||
1521 | fc6: cf 91 pop r28 |
||
1522 | fc8: 1f 91 pop r17 |
||
1523 | fca: 0f 91 pop r16 |
||
1524 | fcc: ff 90 pop r15 |
||
1525 | fce: ef 90 pop r14 |
||
1526 | fd0: 08 95 ret |
||
1527 | |||
1528 | 00000fd2 <put_char>: |
||
1529 | } |
||
1530 | } |
||
1531 | |||
1532 | // |
||
1533 | // x,y = character-Pos. ! |
||
1534 | // |
||
1535 | // mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete |
||
1536 | void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode) |
||
1537 | { |
||
1538 | fd2: bf 92 push r11 |
||
1539 | fd4: cf 92 push r12 |
||
1540 | fd6: df 92 push r13 |
||
1541 | fd8: ef 92 push r14 |
||
1542 | fda: ff 92 push r15 |
||
1543 | fdc: 0f 93 push r16 |
||
1544 | fde: 1f 93 push r17 |
||
1545 | fe0: cf 93 push r28 |
||
1546 | fe2: df 93 push r29 |
||
1547 | fe4: 38 2f mov r19, r24 |
||
1548 | fe6: f4 2e mov r15, r20 |
||
1549 | fe8: b2 2e mov r11, r18 |
||
1550 | uint8_t ch; |
||
1551 | uint8_t i; |
||
1552 | uint16_t adress; |
||
1553 | |||
1554 | switch(c) |
||
1555 | fea: 84 2f mov r24, r20 |
||
1556 | fec: 99 27 eor r25, r25 |
||
1557 | fee: 8f 3d cpi r24, 0xDF ; 223 |
||
1558 | ff0: 91 05 cpc r25, r1 |
||
1559 | ff2: 89 f1 breq .+98 ; 0x1056 <put_char+0x84> |
||
1560 | ff4: 80 3e cpi r24, 0xE0 ; 224 |
||
1561 | ff6: 91 05 cpc r25, r1 |
||
1562 | ff8: 74 f4 brge .+28 ; 0x1016 <put_char+0x44> |
||
1563 | ffa: 86 3d cpi r24, 0xD6 ; 214 |
||
1564 | ffc: 91 05 cpc r25, r1 |
||
1565 | ffe: 29 f1 breq .+74 ; 0x104a <put_char+0x78> |
||
1566 | 1000: 87 3d cpi r24, 0xD7 ; 215 |
||
1567 | 1002: 91 05 cpc r25, r1 |
||
1568 | 1004: 24 f4 brge .+8 ; 0x100e <put_char+0x3c> |
||
1569 | 1006: 84 3c cpi r24, 0xC4 ; 196 |
||
1570 | 1008: 91 05 cpc r25, r1 |
||
1571 | 100a: e1 f0 breq .+56 ; 0x1044 <put_char+0x72> |
||
1572 | 100c: 26 c0 rjmp .+76 ; 0x105a <put_char+0x88> |
||
1573 | 100e: 8c 3d cpi r24, 0xDC ; 220 |
||
1574 | 1010: 91 05 cpc r25, r1 |
||
1575 | 1012: f1 f0 breq .+60 ; 0x1050 <put_char+0x7e> |
||
1576 | 1014: 22 c0 rjmp .+68 ; 0x105a <put_char+0x88> |
||
1577 | 1016: 86 3f cpi r24, 0xF6 ; 246 |
||
1578 | 1018: 91 05 cpc r25, r1 |
||
1579 | 101a: 71 f0 breq .+28 ; 0x1038 <put_char+0x66> |
||
1580 | 101c: 87 3f cpi r24, 0xF7 ; 247 |
||
1581 | 101e: 91 05 cpc r25, r1 |
||
1582 | 1020: 24 f4 brge .+8 ; 0x102a <put_char+0x58> |
||
1583 | 1022: 84 3e cpi r24, 0xE4 ; 228 |
||
1584 | 1024: 91 05 cpc r25, r1 |
||
1585 | 1026: 29 f0 breq .+10 ; 0x1032 <put_char+0x60> |
||
1586 | 1028: 18 c0 rjmp .+48 ; 0x105a <put_char+0x88> |
||
1587 | 102a: 8c 3f cpi r24, 0xFC ; 252 |
||
1588 | 102c: 91 05 cpc r25, r1 |
||
1589 | 102e: 39 f0 breq .+14 ; 0x103e <put_char+0x6c> |
||
1590 | 1030: 14 c0 rjmp .+40 ; 0x105a <put_char+0x88> |
||
1591 | { |
||
1592 | case 'ä': |
||
1593 | c = 0x84; |
||
1594 | 1032: 14 e8 ldi r17, 0x84 ; 132 |
||
1595 | 1034: f1 2e mov r15, r17 |
||
1596 | break; |
||
1597 | 1036: 11 c0 rjmp .+34 ; 0x105a <put_char+0x88> |
||
1598 | case 'ö': |
||
1599 | c = 0x94; |
||
1600 | 1038: c4 e9 ldi r28, 0x94 ; 148 |
||
1601 | 103a: fc 2e mov r15, r28 |
||
1602 | break; |
||
1603 | 103c: 0e c0 rjmp .+28 ; 0x105a <put_char+0x88> |
||
1604 | case 'ü': |
||
1605 | c = 0x81; |
||
1606 | 103e: b1 e8 ldi r27, 0x81 ; 129 |
||
1607 | 1040: fb 2e mov r15, r27 |
||
1608 | break; |
||
1609 | 1042: 0b c0 rjmp .+22 ; 0x105a <put_char+0x88> |
||
1610 | case 'Ä': |
||
1611 | c = 0x8E; |
||
1612 | 1044: ae e8 ldi r26, 0x8E ; 142 |
||
1613 | 1046: fa 2e mov r15, r26 |
||
1614 | break; |
||
1615 | 1048: 08 c0 rjmp .+16 ; 0x105a <put_char+0x88> |
||
1616 | case 'Ö': |
||
1617 | c = 0x99; |
||
1618 | 104a: f9 e9 ldi r31, 0x99 ; 153 |
||
1619 | 104c: ff 2e mov r15, r31 |
||
1620 | break; |
||
1621 | 104e: 05 c0 rjmp .+10 ; 0x105a <put_char+0x88> |
||
1622 | case 'Ü': |
||
1623 | c = 0x9A; |
||
1624 | 1050: ea e9 ldi r30, 0x9A ; 154 |
||
1625 | 1052: fe 2e mov r15, r30 |
||
1626 | break; |
||
1627 | 1054: 02 c0 rjmp .+4 ; 0x105a <put_char+0x88> |
||
1628 | case 'ß': |
||
1629 | c = 0xE1; |
||
1630 | 1056: 71 ee ldi r23, 0xE1 ; 225 |
||
1631 | 1058: f7 2e mov r15, r23 |
||
1632 | break; |
||
1633 | } |
||
1634 | |||
1635 | adress = y*128 + x*6; |
||
1636 | 105a: c6 2f mov r28, r22 |
||
1637 | 105c: dd 27 eor r29, r29 |
||
1638 | 105e: d6 95 lsr r29 |
||
1639 | 1060: dc 2f mov r29, r28 |
||
1640 | 1062: cc 27 eor r28, r28 |
||
1641 | 1064: d7 95 ror r29 |
||
1642 | 1066: c7 95 ror r28 |
||
1643 | 1068: 86 e0 ldi r24, 0x06 ; 6 |
||
1644 | 106a: 38 9f mul r19, r24 |
||
1645 | 106c: c0 01 movw r24, r0 |
||
1646 | 106e: 11 24 eor r1, r1 |
||
1647 | 1070: c8 0f add r28, r24 |
||
1648 | 1072: d9 1f adc r29, r25 |
||
1649 | adress &= 0x3FF; |
||
1650 | 1074: d3 70 andi r29, 0x03 ; 3 |
||
1651 | 1076: 6e 01 movw r12, r28 |
||
1652 | 1078: 00 e0 ldi r16, 0x00 ; 0 |
||
1653 | 107a: 10 e0 ldi r17, 0x00 ; 0 |
||
1654 | 107c: 45 e0 ldi r20, 0x05 ; 5 |
||
1655 | 107e: e4 2e mov r14, r20 |
||
1656 | |||
1657 | for (i=0;i<6;i++) |
||
1658 | { |
||
1659 | ch = pgm_read_byte (&f8x6[0][0] + i + c * 6); |
||
1660 | 1080: 86 e0 ldi r24, 0x06 ; 6 |
||
1661 | 1082: f8 9e mul r15, r24 |
||
1662 | 1084: f0 01 movw r30, r0 |
||
1663 | 1086: 11 24 eor r1, r1 |
||
1664 | 1088: e0 0f add r30, r16 |
||
1665 | 108a: f1 1f adc r31, r17 |
||
1666 | 108c: ec 5a subi r30, 0xAC ; 172 |
||
1667 | 108e: ff 4f sbci r31, 0xFF ; 255 |
||
1668 | 1090: 24 91 lpm r18, Z |
||
1669 | |||
1670 | switch (mode) |
||
1671 | 1092: 8b 2d mov r24, r11 |
||
1672 | 1094: 99 27 eor r25, r25 |
||
1673 | 1096: 82 30 cpi r24, 0x02 ; 2 |
||
1674 | 1098: 91 05 cpc r25, r1 |
||
1675 | 109a: e9 f0 breq .+58 ; 0x10d6 <put_char+0x104> |
||
1676 | 109c: 83 30 cpi r24, 0x03 ; 3 |
||
1677 | 109e: 91 05 cpc r25, r1 |
||
1678 | 10a0: 2c f4 brge .+10 ; 0x10ac <put_char+0xda> |
||
1679 | 10a2: 00 97 sbiw r24, 0x00 ; 0 |
||
1680 | 10a4: 49 f0 breq .+18 ; 0x10b8 <put_char+0xe6> |
||
1681 | 10a6: 01 97 sbiw r24, 0x01 ; 1 |
||
1682 | 10a8: 71 f0 breq .+28 ; 0x10c6 <put_char+0xf4> |
||
1683 | 10aa: 2c c0 rjmp .+88 ; 0x1104 <put_char+0x132> |
||
1684 | 10ac: 83 30 cpi r24, 0x03 ; 3 |
||
1685 | 10ae: 91 05 cpc r25, r1 |
||
1686 | 10b0: d1 f0 breq .+52 ; 0x10e6 <put_char+0x114> |
||
1687 | 10b2: 04 97 sbiw r24, 0x04 ; 4 |
||
1688 | 10b4: f1 f0 breq .+60 ; 0x10f2 <put_char+0x120> |
||
1689 | 10b6: 26 c0 rjmp .+76 ; 0x1104 <put_char+0x132> |
||
1690 | { |
||
1691 | case 0: |
||
1692 | display_buffer[adress+i] = ch; |
||
1693 | 10b8: fe 01 movw r30, r28 |
||
1694 | 10ba: ee 59 subi r30, 0x9E ; 158 |
||
1695 | 10bc: ff 4f sbci r31, 0xFF ; 255 |
||
1696 | 10be: e0 0f add r30, r16 |
||
1697 | 10c0: f1 1f adc r31, r17 |
||
1698 | 10c2: 20 83 st Z, r18 |
||
1699 | break; |
||
1700 | 10c4: 1f c0 rjmp .+62 ; 0x1104 <put_char+0x132> |
||
1701 | case 1: |
||
1702 | display_buffer[adress+i] |= ch; |
||
1703 | 10c6: fe 01 movw r30, r28 |
||
1704 | 10c8: ee 59 subi r30, 0x9E ; 158 |
||
1705 | 10ca: ff 4f sbci r31, 0xFF ; 255 |
||
1706 | 10cc: e0 0f add r30, r16 |
||
1707 | 10ce: f1 1f adc r31, r17 |
||
1708 | 10d0: 80 81 ld r24, Z |
||
1709 | 10d2: 82 2b or r24, r18 |
||
1710 | 10d4: 16 c0 rjmp .+44 ; 0x1102 <put_char+0x130> |
||
1711 | break; |
||
1712 | case 2: |
||
1713 | display_buffer[adress+i] ^= ch; |
||
1714 | 10d6: fe 01 movw r30, r28 |
||
1715 | 10d8: ee 59 subi r30, 0x9E ; 158 |
||
1716 | 10da: ff 4f sbci r31, 0xFF ; 255 |
||
1717 | 10dc: e0 0f add r30, r16 |
||
1718 | 10de: f1 1f adc r31, r17 |
||
1719 | 10e0: 80 81 ld r24, Z |
||
1720 | 10e2: 82 27 eor r24, r18 |
||
1721 | 10e4: 0e c0 rjmp .+28 ; 0x1102 <put_char+0x130> |
||
1722 | break; |
||
1723 | case 3: |
||
1724 | display_buffer[adress+i] &= ch; |
||
1725 | 10e6: fe 01 movw r30, r28 |
||
1726 | 10e8: ee 59 subi r30, 0x9E ; 158 |
||
1727 | 10ea: ff 4f sbci r31, 0xFF ; 255 |
||
1728 | 10ec: e0 0f add r30, r16 |
||
1729 | 10ee: f1 1f adc r31, r17 |
||
1730 | 10f0: 06 c0 rjmp .+12 ; 0x10fe <put_char+0x12c> |
||
1731 | break; |
||
1732 | case 4: |
||
1733 | display_buffer[adress+i] &= ~ch; |
||
1734 | 10f2: fe 01 movw r30, r28 |
||
1735 | 10f4: ee 59 subi r30, 0x9E ; 158 |
||
1736 | 10f6: ff 4f sbci r31, 0xFF ; 255 |
||
1737 | 10f8: e0 0f add r30, r16 |
||
1738 | 10fa: f1 1f adc r31, r17 |
||
1739 | 10fc: 20 95 com r18 |
||
1740 | 10fe: 80 81 ld r24, Z |
||
1741 | 1100: 82 23 and r24, r18 |
||
1742 | 1102: 80 83 st Z, r24 |
||
1743 | break; |
||
1744 | } |
||
1745 | |||
1746 | set_adress(adress+i,display_buffer[adress+i]); |
||
1747 | 1104: fe 01 movw r30, r28 |
||
1748 | 1106: ee 59 subi r30, 0x9E ; 158 |
||
1749 | 1108: ff 4f sbci r31, 0xFF ; 255 |
||
1750 | 110a: e0 0f add r30, r16 |
||
1751 | 110c: f1 1f adc r31, r17 |
||
1752 | 110e: 60 81 ld r22, Z |
||
1753 | 1110: c6 01 movw r24, r12 |
||
1754 | 1112: 0e 94 91 07 call 0xf22 <set_adress> |
||
1755 | 1116: ea 94 dec r14 |
||
1756 | 1118: 0f 5f subi r16, 0xFF ; 255 |
||
1757 | 111a: 1f 4f sbci r17, 0xFF ; 255 |
||
1758 | 111c: 08 94 sec |
||
1759 | 111e: c1 1c adc r12, r1 |
||
1760 | 1120: d1 1c adc r13, r1 |
||
1761 | 1122: e7 fe sbrs r14, 7 |
||
1762 | 1124: ad cf rjmp .-166 ; 0x1080 <put_char+0xae> |
||
1763 | 1126: df 91 pop r29 |
||
1764 | 1128: cf 91 pop r28 |
||
1765 | 112a: 1f 91 pop r17 |
||
1766 | 112c: 0f 91 pop r16 |
||
1767 | 112e: ff 90 pop r15 |
||
1768 | 1130: ef 90 pop r14 |
||
1769 | 1132: df 90 pop r13 |
||
1770 | 1134: cf 90 pop r12 |
||
1771 | 1136: bf 90 pop r11 |
||
1772 | 1138: 08 95 ret |
||
1773 | |||
1774 | 0000113a <new_line>: |
||
1775 | } |
||
1776 | } |
||
1777 | |||
1778 | void new_line (void) |
||
1779 | { |
||
1780 | lcd_ypos++; |
||
1781 | 113a: 80 91 6b 05 lds r24, 0x056B |
||
1782 | 113e: 8f 5f subi r24, 0xFF ; 255 |
||
1783 | 1140: 80 93 6b 05 sts 0x056B, r24 |
||
1784 | |||
1785 | if (lcd_ypos > 7) |
||
1786 | 1144: 88 30 cpi r24, 0x08 ; 8 |
||
1787 | 1146: 28 f0 brcs .+10 ; 0x1152 <new_line+0x18> |
||
1788 | { |
||
1789 | scroll(); |
||
1790 | 1148: 0e 94 b4 07 call 0xf68 <scroll> |
||
1791 | lcd_ypos = 7; |
||
1792 | 114c: 87 e0 ldi r24, 0x07 ; 7 |
||
1793 | 114e: 80 93 6b 05 sts 0x056B, r24 |
||
1794 | 1152: 08 95 ret |
||
1795 | |||
1796 | 00001154 <lcd_printp>: |
||
1797 | } |
||
1798 | } |
||
1799 | |||
1800 | |||
1801 | void lcd_printp (const char *text, uint8_t mode) |
||
1802 | { |
||
1803 | 1154: 1f 93 push r17 |
||
1804 | 1156: cf 93 push r28 |
||
1805 | 1158: df 93 push r29 |
||
1806 | 115a: ec 01 movw r28, r24 |
||
1807 | 115c: 16 2f mov r17, r22 |
||
1808 | while (pgm_read_byte(text)) |
||
1809 | { |
||
1810 | if (pgm_read_byte(text) > 0x1F) |
||
1811 | { |
||
1812 | put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode); |
||
1813 | |||
1814 | lcd_xpos++; |
||
1815 | if (lcd_xpos > 20) |
||
1816 | { |
||
1817 | lcd_xpos = 0; |
||
1818 | new_line(); |
||
1819 | } |
||
1820 | } |
||
1821 | else |
||
1822 | { |
||
1823 | switch (pgm_read_byte(text)) |
||
1824 | { |
||
1825 | case 0x0D: |
||
1826 | lcd_xpos = 0; |
||
1827 | break; |
||
1828 | case 0x0A: |
||
1829 | new_line(); |
||
1830 | break; |
||
1831 | } |
||
1832 | text++; |
||
1833 | 115e: fc 01 movw r30, r24 |
||
1834 | 1160: 84 91 lpm r24, Z |
||
1835 | 1162: 88 23 and r24, r24 |
||
1836 | 1164: 51 f1 breq .+84 ; 0x11ba <lcd_printp+0x66> |
||
1837 | 1166: fe 01 movw r30, r28 |
||
1838 | 1168: 84 91 lpm r24, Z |
||
1839 | 116a: 80 32 cpi r24, 0x20 ; 32 |
||
1840 | 116c: b0 f0 brcs .+44 ; 0x119a <lcd_printp+0x46> |
||
1841 | 116e: 21 96 adiw r28, 0x01 ; 1 |
||
1842 | 1170: 84 91 lpm r24, Z |
||
1843 | 1172: 21 2f mov r18, r17 |
||
1844 | 1174: 48 2f mov r20, r24 |
||
1845 | 1176: 60 91 6b 05 lds r22, 0x056B |
||
1846 | 117a: 80 91 6a 05 lds r24, 0x056A |
||
1847 | 117e: 0e 94 e9 07 call 0xfd2 <put_char> |
||
1848 | 1182: 80 91 6a 05 lds r24, 0x056A |
||
1849 | 1186: 8f 5f subi r24, 0xFF ; 255 |
||
1850 | 1188: 80 93 6a 05 sts 0x056A, r24 |
||
1851 | 118c: 85 31 cpi r24, 0x15 ; 21 |
||
1852 | 118e: 88 f0 brcs .+34 ; 0x11b2 <lcd_printp+0x5e> |
||
1853 | 1190: 10 92 6a 05 sts 0x056A, r1 |
||
1854 | 1194: 0e 94 9d 08 call 0x113a <new_line> |
||
1855 | 1198: 0c c0 rjmp .+24 ; 0x11b2 <lcd_printp+0x5e> |
||
1856 | 119a: 99 27 eor r25, r25 |
||
1857 | 119c: 8a 30 cpi r24, 0x0A ; 10 |
||
1858 | 119e: 91 05 cpc r25, r1 |
||
1859 | 11a0: 29 f0 breq .+10 ; 0x11ac <lcd_printp+0x58> |
||
1860 | 11a2: 0d 97 sbiw r24, 0x0d ; 13 |
||
1861 | 11a4: 29 f4 brne .+10 ; 0x11b0 <lcd_printp+0x5c> |
||
1862 | 11a6: 10 92 6a 05 sts 0x056A, r1 |
||
1863 | 11aa: 02 c0 rjmp .+4 ; 0x11b0 <lcd_printp+0x5c> |
||
1864 | 11ac: 0e 94 9d 08 call 0x113a <new_line> |
||
1865 | 11b0: 21 96 adiw r28, 0x01 ; 1 |
||
1866 | 11b2: fe 01 movw r30, r28 |
||
1867 | 11b4: 84 91 lpm r24, Z |
||
1868 | 11b6: 88 23 and r24, r24 |
||
1869 | 11b8: b1 f6 brne .-84 ; 0x1166 <lcd_printp+0x12> |
||
1870 | 11ba: df 91 pop r29 |
||
1871 | 11bc: cf 91 pop r28 |
||
1872 | 11be: 1f 91 pop r17 |
||
1873 | 11c0: 08 95 ret |
||
1874 | |||
1875 | 000011c2 <lcd_print_atp>: |
||
1876 | } |
||
1877 | } |
||
1878 | } |
||
1879 | |||
1880 | void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode) |
||
1881 | { |
||
1882 | lcd_xpos = x; |
||
1883 | 11c2: 80 93 6a 05 sts 0x056A, r24 |
||
1884 | lcd_ypos = y; |
||
1885 | 11c6: 60 93 6b 05 sts 0x056B, r22 |
||
1886 | lcd_printp (text, mode); |
||
1887 | 11ca: 62 2f mov r22, r18 |
||
1888 | 11cc: ca 01 movw r24, r20 |
||
1889 | 11ce: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
1890 | 11d2: 08 95 ret |
||
1891 | |||
1892 | 000011d4 <lcd_print>: |
||
1893 | } |
||
1894 | |||
1895 | |||
1896 | void lcd_print (uint8_t *text, uint8_t mode) |
||
1897 | { |
||
1898 | 11d4: 1f 93 push r17 |
||
1899 | 11d6: cf 93 push r28 |
||
1900 | 11d8: df 93 push r29 |
||
1901 | 11da: ec 01 movw r28, r24 |
||
1902 | 11dc: 16 2f mov r17, r22 |
||
1903 | while (*text) |
||
1904 | { |
||
1905 | if (*text > 0x1F) |
||
1906 | { |
||
1907 | put_char(lcd_xpos,lcd_ypos,*text++,mode); |
||
1908 | |||
1909 | lcd_xpos++; |
||
1910 | if (lcd_xpos > 20) |
||
1911 | { |
||
1912 | lcd_xpos = 0; |
||
1913 | new_line(); |
||
1914 | } |
||
1915 | } |
||
1916 | else |
||
1917 | { |
||
1918 | switch (*text) |
||
1919 | { |
||
1920 | case 0x0D: |
||
1921 | lcd_xpos = 0; |
||
1922 | break; |
||
1923 | case 0x0A: |
||
1924 | new_line(); |
||
1925 | break; |
||
1926 | } |
||
1927 | text++; |
||
1928 | 11de: 88 81 ld r24, Y |
||
1929 | 11e0: 88 23 and r24, r24 |
||
1930 | 11e2: 39 f1 breq .+78 ; 0x1232 <lcd_print+0x5e> |
||
1931 | 11e4: 48 81 ld r20, Y |
||
1932 | 11e6: 40 32 cpi r20, 0x20 ; 32 |
||
1933 | 11e8: a0 f0 brcs .+40 ; 0x1212 <lcd_print+0x3e> |
||
1934 | 11ea: 21 96 adiw r28, 0x01 ; 1 |
||
1935 | 11ec: 21 2f mov r18, r17 |
||
1936 | 11ee: 60 91 6b 05 lds r22, 0x056B |
||
1937 | 11f2: 80 91 6a 05 lds r24, 0x056A |
||
1938 | 11f6: 0e 94 e9 07 call 0xfd2 <put_char> |
||
1939 | 11fa: 80 91 6a 05 lds r24, 0x056A |
||
1940 | 11fe: 8f 5f subi r24, 0xFF ; 255 |
||
1941 | 1200: 80 93 6a 05 sts 0x056A, r24 |
||
1942 | 1204: 85 31 cpi r24, 0x15 ; 21 |
||
1943 | 1206: 90 f0 brcs .+36 ; 0x122c <lcd_print+0x58> |
||
1944 | 1208: 10 92 6a 05 sts 0x056A, r1 |
||
1945 | 120c: 0e 94 9d 08 call 0x113a <new_line> |
||
1946 | 1210: 0d c0 rjmp .+26 ; 0x122c <lcd_print+0x58> |
||
1947 | 1212: 55 27 eor r21, r21 |
||
1948 | 1214: 4a 30 cpi r20, 0x0A ; 10 |
||
1949 | 1216: 51 05 cpc r21, r1 |
||
1950 | 1218: 31 f0 breq .+12 ; 0x1226 <lcd_print+0x52> |
||
1951 | 121a: 4d 30 cpi r20, 0x0D ; 13 |
||
1952 | 121c: 51 05 cpc r21, r1 |
||
1953 | 121e: 29 f4 brne .+10 ; 0x122a <lcd_print+0x56> |
||
1954 | 1220: 10 92 6a 05 sts 0x056A, r1 |
||
1955 | 1224: 02 c0 rjmp .+4 ; 0x122a <lcd_print+0x56> |
||
1956 | 1226: 0e 94 9d 08 call 0x113a <new_line> |
||
1957 | 122a: 21 96 adiw r28, 0x01 ; 1 |
||
1958 | 122c: 88 81 ld r24, Y |
||
1959 | 122e: 88 23 and r24, r24 |
||
1960 | 1230: c9 f6 brne .-78 ; 0x11e4 <lcd_print+0x10> |
||
1961 | 1232: df 91 pop r29 |
||
1962 | 1234: cf 91 pop r28 |
||
1963 | 1236: 1f 91 pop r17 |
||
1964 | 1238: 08 95 ret |
||
1965 | |||
1966 | 0000123a <lcd_print_at>: |
||
1967 | } |
||
1968 | } |
||
1969 | } |
||
1970 | |||
1971 | void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode) |
||
1972 | { |
||
1973 | lcd_xpos = x; |
||
1974 | 123a: 80 93 6a 05 sts 0x056A, r24 |
||
1975 | lcd_ypos = y; |
||
1976 | 123e: 60 93 6b 05 sts 0x056B, r22 |
||
1977 | lcd_print(text, mode); |
||
1978 | 1242: 62 2f mov r22, r18 |
||
1979 | 1244: ca 01 movw r24, r20 |
||
1980 | 1246: 0e 94 ea 08 call 0x11d4 <lcd_print> |
||
1981 | 124a: 08 95 ret |
||
1982 | |||
1983 | 0000124c <lcd_plot>: |
||
1984 | } |
||
1985 | |||
1986 | |||
1987 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
1988 | // + Plot (set one Pixel) |
||
1989 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
1990 | // mode: |
||
1991 | // 0=Clear, 1=Set, 2=XOR |
||
1992 | void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode) |
||
1993 | { |
||
1994 | 124c: 98 2f mov r25, r24 |
||
1995 | uint16_t adress; |
||
1996 | uint8_t mask; |
||
1997 | |||
1998 | if ((xpos < 128) && (ypos < 64)) |
||
1999 | 124e: 87 fd sbrc r24, 7 |
||
2000 | 1250: 45 c0 rjmp .+138 ; 0x12dc <lcd_plot+0x90> |
||
2001 | 1252: 60 34 cpi r22, 0x40 ; 64 |
||
2002 | 1254: 08 f0 brcs .+2 ; 0x1258 <lcd_plot+0xc> |
||
2003 | 1256: 42 c0 rjmp .+132 ; 0x12dc <lcd_plot+0x90> |
||
2004 | { |
||
2005 | adress = (ypos/8) * 128 + xpos; // adress = 0/8 * 128 + 0 = 0 |
||
2006 | 1258: 86 2f mov r24, r22 |
||
2007 | 125a: 86 95 lsr r24 |
||
2008 | 125c: 86 95 lsr r24 |
||
2009 | 125e: 86 95 lsr r24 |
||
2010 | 1260: a8 2f mov r26, r24 |
||
2011 | 1262: bb 27 eor r27, r27 |
||
2012 | 1264: b6 95 lsr r27 |
||
2013 | 1266: ba 2f mov r27, r26 |
||
2014 | 1268: aa 27 eor r26, r26 |
||
2015 | 126a: b7 95 ror r27 |
||
2016 | 126c: a7 95 ror r26 |
||
2017 | 126e: a9 0f add r26, r25 |
||
2018 | 1270: b1 1d adc r27, r1 |
||
2019 | mask = 1<<(ypos & 0x07); // mask = 1<<0 = 1 |
||
2020 | 1272: 26 2f mov r18, r22 |
||
2021 | 1274: 33 27 eor r19, r19 |
||
2022 | 1276: 27 70 andi r18, 0x07 ; 7 |
||
2023 | 1278: 30 70 andi r19, 0x00 ; 0 |
||
2024 | 127a: 81 e0 ldi r24, 0x01 ; 1 |
||
2025 | 127c: 90 e0 ldi r25, 0x00 ; 0 |
||
2026 | 127e: 02 c0 rjmp .+4 ; 0x1284 <lcd_plot+0x38> |
||
2027 | 1280: 88 0f add r24, r24 |
||
2028 | 1282: 99 1f adc r25, r25 |
||
2029 | 1284: 2a 95 dec r18 |
||
2030 | 1286: e2 f7 brpl .-8 ; 0x1280 <lcd_plot+0x34> |
||
2031 | 1288: 98 2f mov r25, r24 |
||
2032 | |||
2033 | adress &= 0x3FF; |
||
2034 | 128a: b3 70 andi r27, 0x03 ; 3 |
||
2035 | |||
2036 | switch (mode) |
||
2037 | 128c: 55 27 eor r21, r21 |
||
2038 | 128e: 41 30 cpi r20, 0x01 ; 1 |
||
2039 | 1290: 51 05 cpc r21, r1 |
||
2040 | 1292: 89 f0 breq .+34 ; 0x12b6 <lcd_plot+0x6a> |
||
2041 | 1294: 42 30 cpi r20, 0x02 ; 2 |
||
2042 | 1296: 51 05 cpc r21, r1 |
||
2043 | 1298: 1c f4 brge .+6 ; 0x12a0 <lcd_plot+0x54> |
||
2044 | 129a: 45 2b or r20, r21 |
||
2045 | 129c: 29 f0 breq .+10 ; 0x12a8 <lcd_plot+0x5c> |
||
2046 | 129e: 17 c0 rjmp .+46 ; 0x12ce <lcd_plot+0x82> |
||
2047 | 12a0: 42 30 cpi r20, 0x02 ; 2 |
||
2048 | 12a2: 51 05 cpc r21, r1 |
||
2049 | 12a4: 71 f0 breq .+28 ; 0x12c2 <lcd_plot+0x76> |
||
2050 | 12a6: 13 c0 rjmp .+38 ; 0x12ce <lcd_plot+0x82> |
||
2051 | { |
||
2052 | case 0: |
||
2053 | display_buffer[adress] &=~mask; |
||
2054 | 12a8: fd 01 movw r30, r26 |
||
2055 | 12aa: ee 59 subi r30, 0x9E ; 158 |
||
2056 | 12ac: ff 4f sbci r31, 0xFF ; 255 |
||
2057 | 12ae: 90 95 com r25 |
||
2058 | 12b0: 80 81 ld r24, Z |
||
2059 | 12b2: 89 23 and r24, r25 |
||
2060 | 12b4: 0b c0 rjmp .+22 ; 0x12cc <lcd_plot+0x80> |
||
2061 | break; |
||
2062 | case 1: |
||
2063 | display_buffer[adress] |= mask; |
||
2064 | 12b6: fd 01 movw r30, r26 |
||
2065 | 12b8: ee 59 subi r30, 0x9E ; 158 |
||
2066 | 12ba: ff 4f sbci r31, 0xFF ; 255 |
||
2067 | 12bc: 80 81 ld r24, Z |
||
2068 | 12be: 89 2b or r24, r25 |
||
2069 | 12c0: 05 c0 rjmp .+10 ; 0x12cc <lcd_plot+0x80> |
||
2070 | break; |
||
2071 | case 2: |
||
2072 | display_buffer[adress] ^= mask; |
||
2073 | 12c2: fd 01 movw r30, r26 |
||
2074 | 12c4: ee 59 subi r30, 0x9E ; 158 |
||
2075 | 12c6: ff 4f sbci r31, 0xFF ; 255 |
||
2076 | 12c8: 80 81 ld r24, Z |
||
2077 | 12ca: 89 27 eor r24, r25 |
||
2078 | 12cc: 80 83 st Z, r24 |
||
2079 | break; |
||
2080 | } |
||
2081 | |||
2082 | set_adress(adress,display_buffer[adress]); |
||
2083 | 12ce: fd 01 movw r30, r26 |
||
2084 | 12d0: ee 59 subi r30, 0x9E ; 158 |
||
2085 | 12d2: ff 4f sbci r31, 0xFF ; 255 |
||
2086 | 12d4: 60 81 ld r22, Z |
||
2087 | 12d6: cd 01 movw r24, r26 |
||
2088 | 12d8: 0e 94 91 07 call 0xf22 <set_adress> |
||
2089 | 12dc: 08 95 ret |
||
2090 | |||
2091 | 000012de <lcd_line>: |
||
2092 | } |
||
2093 | } |
||
2094 | |||
2095 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2096 | // + Line (draws a line from x1,y1 to x2,y2 |
||
2097 | // + Based on Bresenham line-Algorithm |
||
2098 | // + found in the internet, modified by thkais 2007 |
||
2099 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2100 | |||
2101 | void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode) |
||
2102 | |||
2103 | { |
||
2104 | 12de: 2f 92 push r2 |
||
2105 | 12e0: 3f 92 push r3 |
||
2106 | 12e2: 4f 92 push r4 |
||
2107 | 12e4: 5f 92 push r5 |
||
2108 | 12e6: 6f 92 push r6 |
||
2109 | 12e8: 7f 92 push r7 |
||
2110 | 12ea: 8f 92 push r8 |
||
2111 | 12ec: 9f 92 push r9 |
||
2112 | 12ee: af 92 push r10 |
||
2113 | 12f0: bf 92 push r11 |
||
2114 | 12f2: cf 92 push r12 |
||
2115 | 12f4: df 92 push r13 |
||
2116 | 12f6: ef 92 push r14 |
||
2117 | 12f8: ff 92 push r15 |
||
2118 | 12fa: 0f 93 push r16 |
||
2119 | 12fc: 1f 93 push r17 |
||
2120 | 12fe: cf 93 push r28 |
||
2121 | 1300: df 93 push r29 |
||
2122 | 1302: cd b7 in r28, 0x3d ; 61 |
||
2123 | 1304: de b7 in r29, 0x3e ; 62 |
||
2124 | 1306: 23 97 sbiw r28, 0x03 ; 3 |
||
2125 | 1308: 0f b6 in r0, 0x3f ; 63 |
||
2126 | 130a: f8 94 cli |
||
2127 | 130c: de bf out 0x3e, r29 ; 62 |
||
2128 | 130e: 0f be out 0x3f, r0 ; 63 |
||
2129 | 1310: cd bf out 0x3d, r28 ; 61 |
||
2130 | 1312: 09 83 std Y+1, r16 ; 0x01 |
||
2131 | int x,y,count,xs,ys,xm,ym; |
||
2132 | |||
2133 | x=(int)x1; |
||
2134 | 1314: a8 2e mov r10, r24 |
||
2135 | 1316: bb 24 eor r11, r11 |
||
2136 | y=(int)y1; |
||
2137 | 1318: c6 2e mov r12, r22 |
||
2138 | 131a: dd 24 eor r13, r13 |
||
2139 | xs=(int)x2 - (int)x1; |
||
2140 | 131c: 64 2e mov r6, r20 |
||
2141 | 131e: 77 24 eor r7, r7 |
||
2142 | 1320: 73 01 movw r14, r6 |
||
2143 | 1322: ea 18 sub r14, r10 |
||
2144 | 1324: fb 08 sbc r15, r11 |
||
2145 | ys=(int)y2 - (int)y1; |
||
2146 | 1326: 82 2e mov r8, r18 |
||
2147 | 1328: 99 24 eor r9, r9 |
||
2148 | 132a: 84 01 movw r16, r8 |
||
2149 | 132c: 0c 19 sub r16, r12 |
||
2150 | 132e: 1d 09 sbc r17, r13 |
||
2151 | if(xs < 0) |
||
2152 | 1330: f7 fe sbrs r15, 7 |
||
2153 | 1332: 04 c0 rjmp .+8 ; 0x133c <lcd_line+0x5e> |
||
2154 | xm= -1; |
||
2155 | 1334: 7f ef ldi r23, 0xFF ; 255 |
||
2156 | 1336: 27 2e mov r2, r23 |
||
2157 | 1338: 37 2e mov r3, r23 |
||
2158 | 133a: 09 c0 rjmp .+18 ; 0x134e <lcd_line+0x70> |
||
2159 | else |
||
2160 | if(xs > 0) |
||
2161 | 133c: 1e 14 cp r1, r14 |
||
2162 | 133e: 1f 04 cpc r1, r15 |
||
2163 | 1340: 24 f4 brge .+8 ; 0x134a <lcd_line+0x6c> |
||
2164 | xm= 1; |
||
2165 | 1342: 61 e0 ldi r22, 0x01 ; 1 |
||
2166 | 1344: 26 2e mov r2, r22 |
||
2167 | 1346: 31 2c mov r3, r1 |
||
2168 | 1348: 02 c0 rjmp .+4 ; 0x134e <lcd_line+0x70> |
||
2169 | else |
||
2170 | xm= 0; |
||
2171 | 134a: 22 24 eor r2, r2 |
||
2172 | 134c: 33 24 eor r3, r3 |
||
2173 | if(ys < 0) |
||
2174 | 134e: 17 ff sbrs r17, 7 |
||
2175 | 1350: 04 c0 rjmp .+8 ; 0x135a <lcd_line+0x7c> |
||
2176 | ym= -1; |
||
2177 | 1352: 5f ef ldi r21, 0xFF ; 255 |
||
2178 | 1354: 45 2e mov r4, r21 |
||
2179 | 1356: 55 2e mov r5, r21 |
||
2180 | 1358: 09 c0 rjmp .+18 ; 0x136c <lcd_line+0x8e> |
||
2181 | else |
||
2182 | if(ys > 0) |
||
2183 | 135a: 10 16 cp r1, r16 |
||
2184 | 135c: 11 06 cpc r1, r17 |
||
2185 | 135e: 24 f4 brge .+8 ; 0x1368 <lcd_line+0x8a> |
||
2186 | ym= 1; |
||
2187 | 1360: 41 e0 ldi r20, 0x01 ; 1 |
||
2188 | 1362: 44 2e mov r4, r20 |
||
2189 | 1364: 51 2c mov r5, r1 |
||
2190 | 1366: 02 c0 rjmp .+4 ; 0x136c <lcd_line+0x8e> |
||
2191 | else |
||
2192 | ym= 0; |
||
2193 | 1368: 44 24 eor r4, r4 |
||
2194 | 136a: 55 24 eor r5, r5 |
||
2195 | if(xs < 0) |
||
2196 | 136c: f7 fe sbrs r15, 7 |
||
2197 | 136e: 04 c0 rjmp .+8 ; 0x1378 <lcd_line+0x9a> |
||
2198 | xs= -xs; |
||
2199 | 1370: f0 94 com r15 |
||
2200 | 1372: e1 94 neg r14 |
||
2201 | 1374: f1 08 sbc r15, r1 |
||
2202 | 1376: f3 94 inc r15 |
||
2203 | if(ys < 0) |
||
2204 | 1378: 17 ff sbrs r17, 7 |
||
2205 | 137a: 03 c0 rjmp .+6 ; 0x1382 <lcd_line+0xa4> |
||
2206 | ys= -ys; |
||
2207 | 137c: 10 95 com r17 |
||
2208 | 137e: 01 95 neg r16 |
||
2209 | 1380: 1f 4f sbci r17, 0xFF ; 255 |
||
2210 | |||
2211 | lcd_plot((unsigned char)x, (unsigned char)y, mode); |
||
2212 | 1382: 49 81 ldd r20, Y+1 ; 0x01 |
||
2213 | 1384: 6c 2d mov r22, r12 |
||
2214 | 1386: 8a 2d mov r24, r10 |
||
2215 | 1388: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2216 | |||
2217 | if(xs > ys) // Flat Line <45 degrees |
||
2218 | 138c: 0e 15 cp r16, r14 |
||
2219 | 138e: 1f 05 cpc r17, r15 |
||
2220 | 1390: 4c f5 brge .+82 ; 0x13e4 <lcd_line+0x106> |
||
2221 | { |
||
2222 | count= -(xs / 2); |
||
2223 | 1392: c7 01 movw r24, r14 |
||
2224 | 1394: f7 fc sbrc r15, 7 |
||
2225 | 1396: 01 96 adiw r24, 0x01 ; 1 |
||
2226 | 1398: 95 95 asr r25 |
||
2227 | 139a: 87 95 ror r24 |
||
2228 | 139c: 22 27 eor r18, r18 |
||
2229 | 139e: 33 27 eor r19, r19 |
||
2230 | 13a0: 28 1b sub r18, r24 |
||
2231 | 13a2: 39 0b sbc r19, r25 |
||
2232 | 13a4: 3b 83 std Y+3, r19 ; 0x03 |
||
2233 | 13a6: 2a 83 std Y+2, r18 ; 0x02 |
||
2234 | while(x != x2) |
||
2235 | { |
||
2236 | count= count + ys; |
||
2237 | x= x + xm; |
||
2238 | if(count > 0) |
||
2239 | { |
||
2240 | y= y + ym; |
||
2241 | count= count - xs; |
||
2242 | } |
||
2243 | lcd_plot((unsigned char)x, (unsigned char)y, mode); |
||
2244 | 13a8: a6 14 cp r10, r6 |
||
2245 | 13aa: b7 04 cpc r11, r7 |
||
2246 | 13ac: 09 f4 brne .+2 ; 0x13b0 <lcd_line+0xd2> |
||
2247 | 13ae: 41 c0 rjmp .+130 ; 0x1432 <lcd_line+0x154> |
||
2248 | 13b0: 8a 81 ldd r24, Y+2 ; 0x02 |
||
2249 | 13b2: 9b 81 ldd r25, Y+3 ; 0x03 |
||
2250 | 13b4: 80 0f add r24, r16 |
||
2251 | 13b6: 91 1f adc r25, r17 |
||
2252 | 13b8: 9b 83 std Y+3, r25 ; 0x03 |
||
2253 | 13ba: 8a 83 std Y+2, r24 ; 0x02 |
||
2254 | 13bc: a2 0c add r10, r2 |
||
2255 | 13be: b3 1c adc r11, r3 |
||
2256 | 13c0: 18 16 cp r1, r24 |
||
2257 | 13c2: 19 06 cpc r1, r25 |
||
2258 | 13c4: 34 f4 brge .+12 ; 0x13d2 <lcd_line+0xf4> |
||
2259 | 13c6: c4 0c add r12, r4 |
||
2260 | 13c8: d5 1c adc r13, r5 |
||
2261 | 13ca: 8e 19 sub r24, r14 |
||
2262 | 13cc: 9f 09 sbc r25, r15 |
||
2263 | 13ce: 9b 83 std Y+3, r25 ; 0x03 |
||
2264 | 13d0: 8a 83 std Y+2, r24 ; 0x02 |
||
2265 | 13d2: 49 81 ldd r20, Y+1 ; 0x01 |
||
2266 | 13d4: 6c 2d mov r22, r12 |
||
2267 | 13d6: 8a 2d mov r24, r10 |
||
2268 | 13d8: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2269 | 13dc: a6 14 cp r10, r6 |
||
2270 | 13de: b7 04 cpc r11, r7 |
||
2271 | 13e0: 39 f7 brne .-50 ; 0x13b0 <lcd_line+0xd2> |
||
2272 | 13e2: 27 c0 rjmp .+78 ; 0x1432 <lcd_line+0x154> |
||
2273 | } |
||
2274 | } |
||
2275 | else // Line >=45 degrees |
||
2276 | { |
||
2277 | count=- (ys / 2); |
||
2278 | 13e4: c8 01 movw r24, r16 |
||
2279 | 13e6: 17 fd sbrc r17, 7 |
||
2280 | 13e8: 01 96 adiw r24, 0x01 ; 1 |
||
2281 | 13ea: 95 95 asr r25 |
||
2282 | 13ec: 87 95 ror r24 |
||
2283 | 13ee: ee 27 eor r30, r30 |
||
2284 | 13f0: ff 27 eor r31, r31 |
||
2285 | 13f2: e8 1b sub r30, r24 |
||
2286 | 13f4: f9 0b sbc r31, r25 |
||
2287 | 13f6: fb 83 std Y+3, r31 ; 0x03 |
||
2288 | 13f8: ea 83 std Y+2, r30 ; 0x02 |
||
2289 | while(y != y2) |
||
2290 | { |
||
2291 | count= count + xs; |
||
2292 | y= y + ym; |
||
2293 | if(count > 0) |
||
2294 | { |
||
2295 | x= x + xm; |
||
2296 | count= count - ys; |
||
2297 | } |
||
2298 | lcd_plot((unsigned char)x, (unsigned char)y, mode); |
||
2299 | 13fa: c8 14 cp r12, r8 |
||
2300 | 13fc: d9 04 cpc r13, r9 |
||
2301 | 13fe: c9 f0 breq .+50 ; 0x1432 <lcd_line+0x154> |
||
2302 | 1400: 2a 81 ldd r18, Y+2 ; 0x02 |
||
2303 | 1402: 3b 81 ldd r19, Y+3 ; 0x03 |
||
2304 | 1404: 2e 0d add r18, r14 |
||
2305 | 1406: 3f 1d adc r19, r15 |
||
2306 | 1408: 3b 83 std Y+3, r19 ; 0x03 |
||
2307 | 140a: 2a 83 std Y+2, r18 ; 0x02 |
||
2308 | 140c: c4 0c add r12, r4 |
||
2309 | 140e: d5 1c adc r13, r5 |
||
2310 | 1410: 12 16 cp r1, r18 |
||
2311 | 1412: 13 06 cpc r1, r19 |
||
2312 | 1414: 34 f4 brge .+12 ; 0x1422 <lcd_line+0x144> |
||
2313 | 1416: a2 0c add r10, r2 |
||
2314 | 1418: b3 1c adc r11, r3 |
||
2315 | 141a: 20 1b sub r18, r16 |
||
2316 | 141c: 31 0b sbc r19, r17 |
||
2317 | 141e: 3b 83 std Y+3, r19 ; 0x03 |
||
2318 | 1420: 2a 83 std Y+2, r18 ; 0x02 |
||
2319 | 1422: 49 81 ldd r20, Y+1 ; 0x01 |
||
2320 | 1424: 6c 2d mov r22, r12 |
||
2321 | 1426: 8a 2d mov r24, r10 |
||
2322 | 1428: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2323 | 142c: c8 14 cp r12, r8 |
||
2324 | 142e: d9 04 cpc r13, r9 |
||
2325 | 1430: 39 f7 brne .-50 ; 0x1400 <lcd_line+0x122> |
||
2326 | 1432: 23 96 adiw r28, 0x03 ; 3 |
||
2327 | 1434: 0f b6 in r0, 0x3f ; 63 |
||
2328 | 1436: f8 94 cli |
||
2329 | 1438: de bf out 0x3e, r29 ; 62 |
||
2330 | 143a: 0f be out 0x3f, r0 ; 63 |
||
2331 | 143c: cd bf out 0x3d, r28 ; 61 |
||
2332 | 143e: df 91 pop r29 |
||
2333 | 1440: cf 91 pop r28 |
||
2334 | 1442: 1f 91 pop r17 |
||
2335 | 1444: 0f 91 pop r16 |
||
2336 | 1446: ff 90 pop r15 |
||
2337 | 1448: ef 90 pop r14 |
||
2338 | 144a: df 90 pop r13 |
||
2339 | 144c: cf 90 pop r12 |
||
2340 | 144e: bf 90 pop r11 |
||
2341 | 1450: af 90 pop r10 |
||
2342 | 1452: 9f 90 pop r9 |
||
2343 | 1454: 8f 90 pop r8 |
||
2344 | 1456: 7f 90 pop r7 |
||
2345 | 1458: 6f 90 pop r6 |
||
2346 | 145a: 5f 90 pop r5 |
||
2347 | 145c: 4f 90 pop r4 |
||
2348 | 145e: 3f 90 pop r3 |
||
2349 | 1460: 2f 90 pop r2 |
||
2350 | 1462: 08 95 ret |
||
2351 | |||
2352 | 00001464 <lcd_frect>: |
||
2353 | } |
||
2354 | } |
||
2355 | } |
||
2356 | |||
2357 | |||
2358 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2359 | // + Filled rectangle |
||
2360 | // + x1, y1 = upper left corner |
||
2361 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2362 | |||
2363 | void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
||
2364 | { |
||
2365 | 1464: bf 92 push r11 |
||
2366 | 1466: cf 92 push r12 |
||
2367 | 1468: df 92 push r13 |
||
2368 | 146a: ef 92 push r14 |
||
2369 | 146c: ff 92 push r15 |
||
2370 | 146e: 0f 93 push r16 |
||
2371 | 1470: 1f 93 push r17 |
||
2372 | 1472: cf 93 push r28 |
||
2373 | 1474: df 93 push r29 |
||
2374 | 1476: 18 2f mov r17, r24 |
||
2375 | 1478: 82 2f mov r24, r18 |
||
2376 | 147a: b0 2e mov r11, r16 |
||
2377 | uint16_t x2, y2; |
||
2378 | uint16_t i; |
||
2379 | |||
2380 | if (x1 >= DISP_W) |
||
2381 | 147c: 17 fd sbrc r17, 7 |
||
2382 | x1 = DISP_W - 1; |
||
2383 | 147e: 1f e7 ldi r17, 0x7F ; 127 |
||
2384 | if (y1 >= DISP_H) |
||
2385 | 1480: 60 34 cpi r22, 0x40 ; 64 |
||
2386 | 1482: 08 f0 brcs .+2 ; 0x1486 <lcd_frect+0x22> |
||
2387 | y1 = DISP_H - 1; |
||
2388 | 1484: 6f e3 ldi r22, 0x3F ; 63 |
||
2389 | x2 = x1 + widthx; |
||
2390 | 1486: 21 2f mov r18, r17 |
||
2391 | 1488: 24 0f add r18, r20 |
||
2392 | 148a: 31 2d mov r19, r1 |
||
2393 | 148c: 31 1d adc r19, r1 |
||
2394 | 148e: 69 01 movw r12, r18 |
||
2395 | y2 = y1 + widthy; |
||
2396 | 1490: 26 2f mov r18, r22 |
||
2397 | 1492: 33 27 eor r19, r19 |
||
2398 | 1494: 79 01 movw r14, r18 |
||
2399 | 1496: e8 0e add r14, r24 |
||
2400 | 1498: f1 1c adc r15, r1 |
||
2401 | |||
2402 | if (x2 > DISP_W) |
||
2403 | 149a: 81 e8 ldi r24, 0x81 ; 129 |
||
2404 | 149c: c8 16 cp r12, r24 |
||
2405 | 149e: d1 04 cpc r13, r1 |
||
2406 | 14a0: 18 f0 brcs .+6 ; 0x14a8 <lcd_frect+0x44> |
||
2407 | x2 = DISP_W; |
||
2408 | 14a2: f0 e8 ldi r31, 0x80 ; 128 |
||
2409 | 14a4: cf 2e mov r12, r31 |
||
2410 | 14a6: d1 2c mov r13, r1 |
||
2411 | if (y2 > DISP_H) |
||
2412 | 14a8: 81 e4 ldi r24, 0x41 ; 65 |
||
2413 | 14aa: e8 16 cp r14, r24 |
||
2414 | 14ac: f1 04 cpc r15, r1 |
||
2415 | 14ae: 18 f0 brcs .+6 ; 0x14b6 <lcd_frect+0x52> |
||
2416 | y2 = DISP_H; |
||
2417 | 14b0: e0 e4 ldi r30, 0x40 ; 64 |
||
2418 | 14b2: ee 2e mov r14, r30 |
||
2419 | 14b4: f1 2c mov r15, r1 |
||
2420 | |||
2421 | for (i=y1;i<=y2;i++) |
||
2422 | 14b6: e9 01 movw r28, r18 |
||
2423 | 14b8: e2 16 cp r14, r18 |
||
2424 | 14ba: f3 06 cpc r15, r19 |
||
2425 | 14bc: 58 f0 brcs .+22 ; 0x14d4 <lcd_frect+0x70> |
||
2426 | { |
||
2427 | lcd_line(x1,i,x2,i,mode); |
||
2428 | 14be: 0b 2d mov r16, r11 |
||
2429 | 14c0: 2c 2f mov r18, r28 |
||
2430 | 14c2: 4c 2d mov r20, r12 |
||
2431 | 14c4: 6c 2f mov r22, r28 |
||
2432 | 14c6: 81 2f mov r24, r17 |
||
2433 | 14c8: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2434 | 14cc: 21 96 adiw r28, 0x01 ; 1 |
||
2435 | 14ce: ec 16 cp r14, r28 |
||
2436 | 14d0: fd 06 cpc r15, r29 |
||
2437 | 14d2: a8 f7 brcc .-22 ; 0x14be <lcd_frect+0x5a> |
||
2438 | 14d4: df 91 pop r29 |
||
2439 | 14d6: cf 91 pop r28 |
||
2440 | 14d8: 1f 91 pop r17 |
||
2441 | 14da: 0f 91 pop r16 |
||
2442 | 14dc: ff 90 pop r15 |
||
2443 | 14de: ef 90 pop r14 |
||
2444 | 14e0: df 90 pop r13 |
||
2445 | 14e2: cf 90 pop r12 |
||
2446 | 14e4: bf 90 pop r11 |
||
2447 | 14e6: 08 95 ret |
||
2448 | |||
2449 | 000014e8 <lcd_rect>: |
||
2450 | } |
||
2451 | |||
2452 | } |
||
2453 | |||
2454 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2455 | // + outline of rectangle |
||
2456 | // + x1, y1 = upper left corner |
||
2457 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2458 | |||
2459 | void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
||
2460 | { |
||
2461 | 14e8: cf 92 push r12 |
||
2462 | 14ea: df 92 push r13 |
||
2463 | 14ec: ef 92 push r14 |
||
2464 | 14ee: ff 92 push r15 |
||
2465 | 14f0: 0f 93 push r16 |
||
2466 | 14f2: 1f 93 push r17 |
||
2467 | 14f4: cf 93 push r28 |
||
2468 | 14f6: df 93 push r29 |
||
2469 | 14f8: d8 2e mov r13, r24 |
||
2470 | 14fa: 16 2f mov r17, r22 |
||
2471 | 14fc: c0 2e mov r12, r16 |
||
2472 | uint16_t x2, y2; |
||
2473 | |||
2474 | if (x1 >= DISP_W) |
||
2475 | 14fe: 87 ff sbrs r24, 7 |
||
2476 | 1500: 02 c0 rjmp .+4 ; 0x1506 <lcd_rect+0x1e> |
||
2477 | x1 = DISP_W - 1; |
||
2478 | 1502: bf e7 ldi r27, 0x7F ; 127 |
||
2479 | 1504: db 2e mov r13, r27 |
||
2480 | if (y1 >= DISP_H) |
||
2481 | 1506: 10 34 cpi r17, 0x40 ; 64 |
||
2482 | 1508: 08 f0 brcs .+2 ; 0x150c <lcd_rect+0x24> |
||
2483 | y1 = DISP_H - 1; |
||
2484 | 150a: 1f e3 ldi r17, 0x3F ; 63 |
||
2485 | x2 = x1 + widthx; |
||
2486 | 150c: 8d 2d mov r24, r13 |
||
2487 | 150e: 84 0f add r24, r20 |
||
2488 | 1510: 91 2d mov r25, r1 |
||
2489 | 1512: 91 1d adc r25, r1 |
||
2490 | 1514: ec 01 movw r28, r24 |
||
2491 | y2 = y1 + widthy; |
||
2492 | 1516: 81 2f mov r24, r17 |
||
2493 | 1518: 82 0f add r24, r18 |
||
2494 | 151a: 91 2d mov r25, r1 |
||
2495 | 151c: 91 1d adc r25, r1 |
||
2496 | 151e: 7c 01 movw r14, r24 |
||
2497 | |||
2498 | if (x2 > DISP_W) |
||
2499 | 1520: c1 38 cpi r28, 0x81 ; 129 |
||
2500 | 1522: d1 05 cpc r29, r1 |
||
2501 | 1524: 10 f0 brcs .+4 ; 0x152a <lcd_rect+0x42> |
||
2502 | x2 = DISP_W; |
||
2503 | 1526: c0 e8 ldi r28, 0x80 ; 128 |
||
2504 | 1528: d0 e0 ldi r29, 0x00 ; 0 |
||
2505 | if (y2 > DISP_H) |
||
2506 | 152a: 91 e4 ldi r25, 0x41 ; 65 |
||
2507 | 152c: e9 16 cp r14, r25 |
||
2508 | 152e: f1 04 cpc r15, r1 |
||
2509 | 1530: 18 f0 brcs .+6 ; 0x1538 <lcd_rect+0x50> |
||
2510 | y2 = DISP_H; |
||
2511 | 1532: a0 e4 ldi r26, 0x40 ; 64 |
||
2512 | 1534: ea 2e mov r14, r26 |
||
2513 | 1536: f1 2c mov r15, r1 |
||
2514 | |||
2515 | lcd_line (x1, y1, x2, y1, mode); |
||
2516 | 1538: 0c 2d mov r16, r12 |
||
2517 | 153a: 21 2f mov r18, r17 |
||
2518 | 153c: 4c 2f mov r20, r28 |
||
2519 | 153e: 61 2f mov r22, r17 |
||
2520 | 1540: 8d 2d mov r24, r13 |
||
2521 | 1542: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2522 | lcd_line (x2, y1, x2, y2, mode); |
||
2523 | 1546: 2e 2d mov r18, r14 |
||
2524 | 1548: 4c 2f mov r20, r28 |
||
2525 | 154a: 61 2f mov r22, r17 |
||
2526 | 154c: 8c 2f mov r24, r28 |
||
2527 | 154e: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2528 | lcd_line (x2, y2, x1, y2, mode); |
||
2529 | 1552: 2e 2d mov r18, r14 |
||
2530 | 1554: 4d 2d mov r20, r13 |
||
2531 | 1556: 6e 2d mov r22, r14 |
||
2532 | 1558: 8c 2f mov r24, r28 |
||
2533 | 155a: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2534 | lcd_line (x1, y2, x1, y1, mode); |
||
2535 | 155e: 21 2f mov r18, r17 |
||
2536 | 1560: 4d 2d mov r20, r13 |
||
2537 | 1562: 6e 2d mov r22, r14 |
||
2538 | 1564: 8d 2d mov r24, r13 |
||
2539 | 1566: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2540 | 156a: df 91 pop r29 |
||
2541 | 156c: cf 91 pop r28 |
||
2542 | 156e: 1f 91 pop r17 |
||
2543 | 1570: 0f 91 pop r16 |
||
2544 | 1572: ff 90 pop r15 |
||
2545 | 1574: ef 90 pop r14 |
||
2546 | 1576: df 90 pop r13 |
||
2547 | 1578: cf 90 pop r12 |
||
2548 | 157a: 08 95 ret |
||
2549 | |||
2550 | 0000157c <draw_circle>: |
||
2551 | } |
||
2552 | |||
2553 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2554 | // + outline of a circle |
||
2555 | // + Based on Bresenham-algorithm found in wikipedia |
||
2556 | // + modified by thkais (2007) |
||
2557 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2558 | |||
2559 | |||
2560 | void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode) |
||
2561 | { |
||
2562 | 157c: 2f 92 push r2 |
||
2563 | 157e: 3f 92 push r3 |
||
2564 | 1580: 4f 92 push r4 |
||
2565 | 1582: 5f 92 push r5 |
||
2566 | 1584: 6f 92 push r6 |
||
2567 | 1586: 7f 92 push r7 |
||
2568 | 1588: 8f 92 push r8 |
||
2569 | 158a: 9f 92 push r9 |
||
2570 | 158c: af 92 push r10 |
||
2571 | 158e: bf 92 push r11 |
||
2572 | 1590: cf 92 push r12 |
||
2573 | 1592: df 92 push r13 |
||
2574 | 1594: ef 92 push r14 |
||
2575 | 1596: ff 92 push r15 |
||
2576 | 1598: 0f 93 push r16 |
||
2577 | 159a: 1f 93 push r17 |
||
2578 | 159c: cf 93 push r28 |
||
2579 | 159e: df 93 push r29 |
||
2580 | 15a0: 5c 01 movw r10, r24 |
||
2581 | 15a2: 6b 01 movw r12, r22 |
||
2582 | 15a4: e2 2e mov r14, r18 |
||
2583 | int16_t f = 1 - radius; |
||
2584 | 15a6: c1 e0 ldi r28, 0x01 ; 1 |
||
2585 | 15a8: 8c 2e mov r8, r28 |
||
2586 | 15aa: 91 2c mov r9, r1 |
||
2587 | 15ac: 84 1a sub r8, r20 |
||
2588 | 15ae: 95 0a sbc r9, r21 |
||
2589 | int16_t ddF_x = 0; |
||
2590 | 15b0: 22 24 eor r2, r2 |
||
2591 | 15b2: 33 24 eor r3, r3 |
||
2592 | int16_t ddF_y = -2 * radius; |
||
2593 | 15b4: 8e ef ldi r24, 0xFE ; 254 |
||
2594 | 15b6: 9f ef ldi r25, 0xFF ; 255 |
||
2595 | 15b8: 48 9f mul r20, r24 |
||
2596 | 15ba: 20 01 movw r4, r0 |
||
2597 | 15bc: 49 9f mul r20, r25 |
||
2598 | 15be: 50 0c add r5, r0 |
||
2599 | 15c0: 58 9f mul r21, r24 |
||
2600 | 15c2: 50 0c add r5, r0 |
||
2601 | 15c4: 11 24 eor r1, r1 |
||
2602 | int16_t x = 0; |
||
2603 | 15c6: 31 01 movw r6, r2 |
||
2604 | int16_t y = radius; |
||
2605 | 15c8: ea 01 movw r28, r20 |
||
2606 | |||
2607 | lcd_plot(x0, y0 + radius, mode); |
||
2608 | 15ca: 86 2f mov r24, r22 |
||
2609 | 15cc: 84 0f add r24, r20 |
||
2610 | 15ce: 42 2f mov r20, r18 |
||
2611 | 15d0: 68 2f mov r22, r24 |
||
2612 | 15d2: 8a 2d mov r24, r10 |
||
2613 | 15d4: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2614 | lcd_plot(x0, y0 - radius, mode); |
||
2615 | 15d8: 8c 2d mov r24, r12 |
||
2616 | 15da: 8c 1b sub r24, r28 |
||
2617 | 15dc: 4e 2d mov r20, r14 |
||
2618 | 15de: 68 2f mov r22, r24 |
||
2619 | 15e0: 8a 2d mov r24, r10 |
||
2620 | 15e2: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2621 | lcd_plot(x0 + radius, y0, mode); |
||
2622 | 15e6: 4e 2d mov r20, r14 |
||
2623 | 15e8: 6c 2d mov r22, r12 |
||
2624 | 15ea: 8a 2d mov r24, r10 |
||
2625 | 15ec: 8c 0f add r24, r28 |
||
2626 | 15ee: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2627 | lcd_plot(x0 - radius, y0, mode); |
||
2628 | 15f2: 4e 2d mov r20, r14 |
||
2629 | 15f4: 6c 2d mov r22, r12 |
||
2630 | 15f6: 8a 2d mov r24, r10 |
||
2631 | 15f8: 8c 1b sub r24, r28 |
||
2632 | 15fa: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2633 | |||
2634 | while(x < y) |
||
2635 | { |
||
2636 | if(f >= 0) |
||
2637 | { |
||
2638 | y --; |
||
2639 | ddF_y += 2; |
||
2640 | f += ddF_y; |
||
2641 | } |
||
2642 | x ++; |
||
2643 | ddF_x += 2; |
||
2644 | f += ddF_x + 1; |
||
2645 | |||
2646 | lcd_plot(x0 + x, y0 + y, mode); |
||
2647 | lcd_plot(x0 - x, y0 + y, mode); |
||
2648 | |||
2649 | lcd_plot(x0 + x, y0 - y, mode); |
||
2650 | lcd_plot(x0 - x, y0 - y, mode); |
||
2651 | |||
2652 | lcd_plot(x0 + y, y0 + x, mode); |
||
2653 | lcd_plot(x0 - y, y0 + x, mode); |
||
2654 | |||
2655 | lcd_plot(x0 + y, y0 - x, mode); |
||
2656 | lcd_plot(x0 - y, y0 - x, mode); |
||
2657 | 15fe: 2c 16 cp r2, r28 |
||
2658 | 1600: 3d 06 cpc r3, r29 |
||
2659 | 1602: 0c f0 brlt .+2 ; 0x1606 <draw_circle+0x8a> |
||
2660 | 1604: 51 c0 rjmp .+162 ; 0x16a8 <draw_circle+0x12c> |
||
2661 | 1606: 97 fc sbrc r9, 7 |
||
2662 | 1608: 07 c0 rjmp .+14 ; 0x1618 <draw_circle+0x9c> |
||
2663 | 160a: 21 97 sbiw r28, 0x01 ; 1 |
||
2664 | 160c: 82 e0 ldi r24, 0x02 ; 2 |
||
2665 | 160e: 90 e0 ldi r25, 0x00 ; 0 |
||
2666 | 1610: 48 0e add r4, r24 |
||
2667 | 1612: 59 1e adc r5, r25 |
||
2668 | 1614: 84 0c add r8, r4 |
||
2669 | 1616: 95 1c adc r9, r5 |
||
2670 | 1618: 08 94 sec |
||
2671 | 161a: 61 1c adc r6, r1 |
||
2672 | 161c: 71 1c adc r7, r1 |
||
2673 | 161e: 82 e0 ldi r24, 0x02 ; 2 |
||
2674 | 1620: 90 e0 ldi r25, 0x00 ; 0 |
||
2675 | 1622: 28 0e add r2, r24 |
||
2676 | 1624: 39 1e adc r3, r25 |
||
2677 | 1626: 82 0c add r8, r2 |
||
2678 | 1628: 93 1c adc r9, r3 |
||
2679 | 162a: 08 94 sec |
||
2680 | 162c: 81 1c adc r8, r1 |
||
2681 | 162e: 91 1c adc r9, r1 |
||
2682 | 1630: 1c 2d mov r17, r12 |
||
2683 | 1632: 1c 0f add r17, r28 |
||
2684 | 1634: fa 2c mov r15, r10 |
||
2685 | 1636: f6 0c add r15, r6 |
||
2686 | 1638: 4e 2d mov r20, r14 |
||
2687 | 163a: 61 2f mov r22, r17 |
||
2688 | 163c: 8f 2d mov r24, r15 |
||
2689 | 163e: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2690 | 1642: 0a 2d mov r16, r10 |
||
2691 | 1644: 06 19 sub r16, r6 |
||
2692 | 1646: 4e 2d mov r20, r14 |
||
2693 | 1648: 61 2f mov r22, r17 |
||
2694 | 164a: 80 2f mov r24, r16 |
||
2695 | 164c: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2696 | 1650: 1c 2d mov r17, r12 |
||
2697 | 1652: 1c 1b sub r17, r28 |
||
2698 | 1654: 4e 2d mov r20, r14 |
||
2699 | 1656: 61 2f mov r22, r17 |
||
2700 | 1658: 8f 2d mov r24, r15 |
||
2701 | 165a: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2702 | 165e: 4e 2d mov r20, r14 |
||
2703 | 1660: 61 2f mov r22, r17 |
||
2704 | 1662: 80 2f mov r24, r16 |
||
2705 | 1664: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2706 | 1668: 1c 2d mov r17, r12 |
||
2707 | 166a: 16 0d add r17, r6 |
||
2708 | 166c: fa 2c mov r15, r10 |
||
2709 | 166e: fc 0e add r15, r28 |
||
2710 | 1670: 4e 2d mov r20, r14 |
||
2711 | 1672: 61 2f mov r22, r17 |
||
2712 | 1674: 8f 2d mov r24, r15 |
||
2713 | 1676: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2714 | 167a: 0a 2d mov r16, r10 |
||
2715 | 167c: 0c 1b sub r16, r28 |
||
2716 | 167e: 4e 2d mov r20, r14 |
||
2717 | 1680: 61 2f mov r22, r17 |
||
2718 | 1682: 80 2f mov r24, r16 |
||
2719 | 1684: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2720 | 1688: 1c 2d mov r17, r12 |
||
2721 | 168a: 16 19 sub r17, r6 |
||
2722 | 168c: 4e 2d mov r20, r14 |
||
2723 | 168e: 61 2f mov r22, r17 |
||
2724 | 1690: 8f 2d mov r24, r15 |
||
2725 | 1692: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2726 | 1696: 4e 2d mov r20, r14 |
||
2727 | 1698: 61 2f mov r22, r17 |
||
2728 | 169a: 80 2f mov r24, r16 |
||
2729 | 169c: 0e 94 26 09 call 0x124c <lcd_plot> |
||
2730 | 16a0: 6c 16 cp r6, r28 |
||
2731 | 16a2: 7d 06 cpc r7, r29 |
||
2732 | 16a4: 0c f4 brge .+2 ; 0x16a8 <draw_circle+0x12c> |
||
2733 | 16a6: af cf rjmp .-162 ; 0x1606 <draw_circle+0x8a> |
||
2734 | 16a8: df 91 pop r29 |
||
2735 | 16aa: cf 91 pop r28 |
||
2736 | 16ac: 1f 91 pop r17 |
||
2737 | 16ae: 0f 91 pop r16 |
||
2738 | 16b0: ff 90 pop r15 |
||
2739 | 16b2: ef 90 pop r14 |
||
2740 | 16b4: df 90 pop r13 |
||
2741 | 16b6: cf 90 pop r12 |
||
2742 | 16b8: bf 90 pop r11 |
||
2743 | 16ba: af 90 pop r10 |
||
2744 | 16bc: 9f 90 pop r9 |
||
2745 | 16be: 8f 90 pop r8 |
||
2746 | 16c0: 7f 90 pop r7 |
||
2747 | 16c2: 6f 90 pop r6 |
||
2748 | 16c4: 5f 90 pop r5 |
||
2749 | 16c6: 4f 90 pop r4 |
||
2750 | 16c8: 3f 90 pop r3 |
||
2751 | 16ca: 2f 90 pop r2 |
||
2752 | 16cc: 08 95 ret |
||
2753 | |||
2754 | 000016ce <draw_fcircle>: |
||
2755 | } |
||
2756 | } |
||
2757 | |||
2758 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2759 | // + filled Circle |
||
2760 | // + modified circle-algorithm thkais (2007) |
||
2761 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2762 | |||
2763 | void draw_fcircle(int16_t x0, int16_t y0, int16_t radius) |
||
2764 | { |
||
2765 | 16ce: 2f 92 push r2 |
||
2766 | 16d0: 3f 92 push r3 |
||
2767 | 16d2: 4f 92 push r4 |
||
2768 | 16d4: 5f 92 push r5 |
||
2769 | 16d6: 6f 92 push r6 |
||
2770 | 16d8: 7f 92 push r7 |
||
2771 | 16da: 8f 92 push r8 |
||
2772 | 16dc: 9f 92 push r9 |
||
2773 | 16de: af 92 push r10 |
||
2774 | 16e0: bf 92 push r11 |
||
2775 | 16e2: cf 92 push r12 |
||
2776 | 16e4: df 92 push r13 |
||
2777 | 16e6: ff 92 push r15 |
||
2778 | 16e8: 0f 93 push r16 |
||
2779 | 16ea: 1f 93 push r17 |
||
2780 | 16ec: cf 93 push r28 |
||
2781 | 16ee: df 93 push r29 |
||
2782 | 16f0: 5c 01 movw r10, r24 |
||
2783 | 16f2: 6b 01 movw r12, r22 |
||
2784 | int16_t f = 1 - radius; |
||
2785 | 16f4: 11 e0 ldi r17, 0x01 ; 1 |
||
2786 | 16f6: 61 2e mov r6, r17 |
||
2787 | 16f8: 71 2c mov r7, r1 |
||
2788 | 16fa: 64 1a sub r6, r20 |
||
2789 | 16fc: 75 0a sbc r7, r21 |
||
2790 | int16_t ddF_x = 0; |
||
2791 | 16fe: 22 24 eor r2, r2 |
||
2792 | 1700: 33 24 eor r3, r3 |
||
2793 | int16_t ddF_y = -2 * radius; |
||
2794 | 1702: 8e ef ldi r24, 0xFE ; 254 |
||
2795 | 1704: 9f ef ldi r25, 0xFF ; 255 |
||
2796 | 1706: 48 9f mul r20, r24 |
||
2797 | 1708: 20 01 movw r4, r0 |
||
2798 | 170a: 49 9f mul r20, r25 |
||
2799 | 170c: 50 0c add r5, r0 |
||
2800 | 170e: 58 9f mul r21, r24 |
||
2801 | 1710: 50 0c add r5, r0 |
||
2802 | 1712: 11 24 eor r1, r1 |
||
2803 | int16_t x = 0; |
||
2804 | 1714: 41 01 movw r8, r2 |
||
2805 | int16_t y = radius; |
||
2806 | 1716: ea 01 movw r28, r20 |
||
2807 | |||
2808 | lcd_line(x0, y0 + radius,x0, y0 - radius,1); |
||
2809 | 1718: 86 2f mov r24, r22 |
||
2810 | 171a: 84 1b sub r24, r20 |
||
2811 | 171c: 96 2f mov r25, r22 |
||
2812 | 171e: 94 0f add r25, r20 |
||
2813 | 1720: 01 e0 ldi r16, 0x01 ; 1 |
||
2814 | 1722: 28 2f mov r18, r24 |
||
2815 | 1724: 4a 2d mov r20, r10 |
||
2816 | 1726: 69 2f mov r22, r25 |
||
2817 | 1728: 8a 2d mov r24, r10 |
||
2818 | 172a: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2819 | |||
2820 | lcd_line(x0 + radius, y0,x0 - radius, y0,1); |
||
2821 | 172e: 8a 2d mov r24, r10 |
||
2822 | 1730: 8c 1b sub r24, r28 |
||
2823 | 1732: 2c 2d mov r18, r12 |
||
2824 | 1734: 48 2f mov r20, r24 |
||
2825 | 1736: 6c 2d mov r22, r12 |
||
2826 | 1738: 8a 2d mov r24, r10 |
||
2827 | 173a: 8c 0f add r24, r28 |
||
2828 | 173c: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2829 | |||
2830 | while(x < y) |
||
2831 | { |
||
2832 | if(f >= 0) |
||
2833 | { |
||
2834 | y--; |
||
2835 | ddF_y += 2; |
||
2836 | f += ddF_y; |
||
2837 | } |
||
2838 | x++; |
||
2839 | ddF_x += 2; |
||
2840 | f += ddF_x + 1; |
||
2841 | |||
2842 | lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1); |
||
2843 | lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1); |
||
2844 | lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1); |
||
2845 | lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1); |
||
2846 | 1740: 2c 16 cp r2, r28 |
||
2847 | 1742: 3d 06 cpc r3, r29 |
||
2848 | 1744: 0c f0 brlt .+2 ; 0x1748 <draw_fcircle+0x7a> |
||
2849 | 1746: 42 c0 rjmp .+132 ; 0x17cc <draw_fcircle+0xfe> |
||
2850 | 1748: 77 fc sbrc r7, 7 |
||
2851 | 174a: 07 c0 rjmp .+14 ; 0x175a <draw_fcircle+0x8c> |
||
2852 | 174c: 21 97 sbiw r28, 0x01 ; 1 |
||
2853 | 174e: 82 e0 ldi r24, 0x02 ; 2 |
||
2854 | 1750: 90 e0 ldi r25, 0x00 ; 0 |
||
2855 | 1752: 48 0e add r4, r24 |
||
2856 | 1754: 59 1e adc r5, r25 |
||
2857 | 1756: 64 0c add r6, r4 |
||
2858 | 1758: 75 1c adc r7, r5 |
||
2859 | 175a: 08 94 sec |
||
2860 | 175c: 81 1c adc r8, r1 |
||
2861 | 175e: 91 1c adc r9, r1 |
||
2862 | 1760: 82 e0 ldi r24, 0x02 ; 2 |
||
2863 | 1762: 90 e0 ldi r25, 0x00 ; 0 |
||
2864 | 1764: 28 0e add r2, r24 |
||
2865 | 1766: 39 1e adc r3, r25 |
||
2866 | 1768: 62 0c add r6, r2 |
||
2867 | 176a: 73 1c adc r7, r3 |
||
2868 | 176c: 08 94 sec |
||
2869 | 176e: 61 1c adc r6, r1 |
||
2870 | 1770: 71 1c adc r7, r1 |
||
2871 | 1772: 8c 2d mov r24, r12 |
||
2872 | 1774: 8c 0f add r24, r28 |
||
2873 | 1776: 1a 2d mov r17, r10 |
||
2874 | 1778: 18 19 sub r17, r8 |
||
2875 | 177a: fa 2c mov r15, r10 |
||
2876 | 177c: f8 0c add r15, r8 |
||
2877 | 177e: 01 e0 ldi r16, 0x01 ; 1 |
||
2878 | 1780: 28 2f mov r18, r24 |
||
2879 | 1782: 41 2f mov r20, r17 |
||
2880 | 1784: 68 2f mov r22, r24 |
||
2881 | 1786: 8f 2d mov r24, r15 |
||
2882 | 1788: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2883 | 178c: 8c 2d mov r24, r12 |
||
2884 | 178e: 8c 1b sub r24, r28 |
||
2885 | 1790: 28 2f mov r18, r24 |
||
2886 | 1792: 41 2f mov r20, r17 |
||
2887 | 1794: 68 2f mov r22, r24 |
||
2888 | 1796: 8f 2d mov r24, r15 |
||
2889 | 1798: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2890 | 179c: 8c 2d mov r24, r12 |
||
2891 | 179e: 88 0d add r24, r8 |
||
2892 | 17a0: 1a 2d mov r17, r10 |
||
2893 | 17a2: 1c 1b sub r17, r28 |
||
2894 | 17a4: fa 2c mov r15, r10 |
||
2895 | 17a6: fc 0e add r15, r28 |
||
2896 | 17a8: 28 2f mov r18, r24 |
||
2897 | 17aa: 41 2f mov r20, r17 |
||
2898 | 17ac: 68 2f mov r22, r24 |
||
2899 | 17ae: 8f 2d mov r24, r15 |
||
2900 | 17b0: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2901 | 17b4: 8c 2d mov r24, r12 |
||
2902 | 17b6: 88 19 sub r24, r8 |
||
2903 | 17b8: 28 2f mov r18, r24 |
||
2904 | 17ba: 41 2f mov r20, r17 |
||
2905 | 17bc: 68 2f mov r22, r24 |
||
2906 | 17be: 8f 2d mov r24, r15 |
||
2907 | 17c0: 0e 94 6f 09 call 0x12de <lcd_line> |
||
2908 | 17c4: 8c 16 cp r8, r28 |
||
2909 | 17c6: 9d 06 cpc r9, r29 |
||
2910 | 17c8: 0c f4 brge .+2 ; 0x17cc <draw_fcircle+0xfe> |
||
2911 | 17ca: be cf rjmp .-132 ; 0x1748 <draw_fcircle+0x7a> |
||
2912 | 17cc: df 91 pop r29 |
||
2913 | 17ce: cf 91 pop r28 |
||
2914 | 17d0: 1f 91 pop r17 |
||
2915 | 17d2: 0f 91 pop r16 |
||
2916 | 17d4: ff 90 pop r15 |
||
2917 | 17d6: df 90 pop r13 |
||
2918 | 17d8: cf 90 pop r12 |
||
2919 | 17da: bf 90 pop r11 |
||
2920 | 17dc: af 90 pop r10 |
||
2921 | 17de: 9f 90 pop r9 |
||
2922 | 17e0: 8f 90 pop r8 |
||
2923 | 17e2: 7f 90 pop r7 |
||
2924 | 17e4: 6f 90 pop r6 |
||
2925 | 17e6: 5f 90 pop r5 |
||
2926 | 17e8: 4f 90 pop r4 |
||
2927 | 17ea: 3f 90 pop r3 |
||
2928 | 17ec: 2f 90 pop r2 |
||
2929 | 17ee: 08 95 ret |
||
2930 | |||
2931 | 000017f0 <__vector_13>: |
||
2932 | volatile uint8_t read_index, write_index; |
||
2933 | volatile uint8_t rs232_buffer[16]; |
||
2934 | |||
2935 | ISR(USART_RXC_vect) |
||
2936 | { |
||
2937 | 17f0: 1f 92 push r1 |
||
2938 | 17f2: 0f 92 push r0 |
||
2939 | 17f4: 0f b6 in r0, 0x3f ; 63 |
||
2940 | 17f6: 0f 92 push r0 |
||
2941 | 17f8: 11 24 eor r1, r1 |
||
2942 | 17fa: 8f 93 push r24 |
||
2943 | 17fc: 9f 93 push r25 |
||
2944 | 17fe: ef 93 push r30 |
||
2945 | 1800: ff 93 push r31 |
||
2946 | rs232_buffer[write_index++] = UDR; |
||
2947 | 1802: 90 91 6c 05 lds r25, 0x056C |
||
2948 | 1806: ee e6 ldi r30, 0x6E ; 110 |
||
2949 | 1808: f5 e0 ldi r31, 0x05 ; 5 |
||
2950 | 180a: e9 0f add r30, r25 |
||
2951 | 180c: f1 1d adc r31, r1 |
||
2952 | 180e: 8c b1 in r24, 0x0c ; 12 |
||
2953 | 1810: 80 83 st Z, r24 |
||
2954 | 1812: 9f 5f subi r25, 0xFF ; 255 |
||
2955 | 1814: 90 93 6c 05 sts 0x056C, r25 |
||
2956 | write_index &= 15; |
||
2957 | 1818: 80 91 6c 05 lds r24, 0x056C |
||
2958 | 181c: 8f 70 andi r24, 0x0F ; 15 |
||
2959 | 181e: 80 93 6c 05 sts 0x056C, r24 |
||
2960 | 1822: ff 91 pop r31 |
||
2961 | 1824: ef 91 pop r30 |
||
2962 | 1826: 9f 91 pop r25 |
||
2963 | 1828: 8f 91 pop r24 |
||
2964 | 182a: 0f 90 pop r0 |
||
2965 | 182c: 0f be out 0x3f, r0 ; 63 |
||
2966 | 182e: 0f 90 pop r0 |
||
2967 | 1830: 1f 90 pop r1 |
||
2968 | 1832: 18 95 reti |
||
2969 | |||
2970 | 00001834 <RS232_init>: |
||
2971 | } |
||
2972 | |||
2973 | void RS232_init (void) |
||
2974 | { |
||
2975 | UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); |
||
2976 | 1834: 88 e9 ldi r24, 0x98 ; 152 |
||
2977 | 1836: 8a b9 out 0x0a, r24 ; 10 |
||
2978 | UBRRL = 7; // 57600 Baud @ 7,372800 MHz |
||
2979 | 1838: 87 e0 ldi r24, 0x07 ; 7 |
||
2980 | 183a: 89 b9 out 0x09, r24 ; 9 |
||
2981 | 183c: 08 95 ret |
||
2982 | |||
2983 | 0000183e <RS232_get>: |
||
2984 | } |
||
2985 | |||
2986 | uint8_t RS232_get (void) |
||
2987 | { |
||
2988 | uint8_t c; |
||
2989 | |||
2990 | rs232_timer = 10; |
||
2991 | 183e: 8a e0 ldi r24, 0x0A ; 10 |
||
2992 | 1840: 80 93 e5 04 sts 0x04E5, r24 |
||
2993 | |||
2994 | while ((read_index == write_index) && (rs232_timer > 0)); |
||
2995 | 1844: 90 91 6d 05 lds r25, 0x056D |
||
2996 | 1848: 80 91 6c 05 lds r24, 0x056C |
||
2997 | 184c: 98 17 cp r25, r24 |
||
2998 | 184e: 21 f4 brne .+8 ; 0x1858 <RS232_get+0x1a> |
||
2999 | 1850: 80 91 e5 04 lds r24, 0x04E5 |
||
3000 | 1854: 88 23 and r24, r24 |
||
3001 | 1856: b1 f7 brne .-20 ; 0x1844 <RS232_get+0x6> |
||
3002 | if (rs232_timer != 0) |
||
3003 | 1858: 80 91 e5 04 lds r24, 0x04E5 |
||
3004 | 185c: 88 23 and r24, r24 |
||
3005 | 185e: 81 f0 breq .+32 ; 0x1880 <RS232_get+0x42> |
||
3006 | { |
||
3007 | c = rs232_buffer[read_index++]; |
||
3008 | 1860: 80 91 6d 05 lds r24, 0x056D |
||
3009 | 1864: e8 2f mov r30, r24 |
||
3010 | 1866: ff 27 eor r31, r31 |
||
3011 | 1868: e2 59 subi r30, 0x92 ; 146 |
||
3012 | 186a: fa 4f sbci r31, 0xFA ; 250 |
||
3013 | 186c: 8f 5f subi r24, 0xFF ; 255 |
||
3014 | 186e: 80 93 6d 05 sts 0x056D, r24 |
||
3015 | 1872: e0 81 ld r30, Z |
||
3016 | read_index &= 15; |
||
3017 | 1874: 80 91 6d 05 lds r24, 0x056D |
||
3018 | 1878: 8f 70 andi r24, 0x0F ; 15 |
||
3019 | 187a: 80 93 6d 05 sts 0x056D, r24 |
||
3020 | 187e: 01 c0 rjmp .+2 ; 0x1882 <RS232_get+0x44> |
||
3021 | } |
||
3022 | else |
||
3023 | { |
||
3024 | c=0; |
||
3025 | 1880: e8 2f mov r30, r24 |
||
3026 | } |
||
3027 | return c; |
||
3028 | } |
||
3029 | 1882: 8e 2f mov r24, r30 |
||
3030 | 1884: 99 27 eor r25, r25 |
||
3031 | 1886: 08 95 ret |
||
3032 | |||
3033 | 00001888 <RS232_send>: |
||
3034 | void RS232_send (uint8_t data) |
||
3035 | { |
||
3036 | while ((UCSRA & (1<<UDRE)) == 0); |
||
3037 | 1888: 5d 9b sbis 0x0b, 5 ; 11 |
||
3038 | 188a: fe cf rjmp .-4 ; 0x1888 <RS232_send> |
||
3039 | UDR = data; |
||
3040 | 188c: 8c b9 out 0x0c, r24 ; 12 |
||
3041 | 188e: 08 95 ret |
||
3042 | |||
3043 | 00001890 <RS232_text>: |
||
3044 | } |
||
3045 | void RS232_text (uint8_t *text) |
||
3046 | { |
||
3047 | 1890: cf 93 push r28 |
||
3048 | 1892: df 93 push r29 |
||
3049 | 1894: ec 01 movw r28, r24 |
||
3050 | while (*text) |
||
3051 | { |
||
3052 | RS232_send(*text); |
||
3053 | text++; |
||
3054 | 1896: 88 81 ld r24, Y |
||
3055 | 1898: 88 23 and r24, r24 |
||
3056 | 189a: 31 f0 breq .+12 ; 0x18a8 <RS232_text+0x18> |
||
3057 | 189c: 89 91 ld r24, Y+ |
||
3058 | 189e: 0e 94 44 0c call 0x1888 <RS232_send> |
||
3059 | 18a2: 88 81 ld r24, Y |
||
3060 | 18a4: 88 23 and r24, r24 |
||
3061 | 18a6: d1 f7 brne .-12 ; 0x189c <RS232_text+0xc> |
||
3062 | 18a8: df 91 pop r29 |
||
3063 | 18aa: cf 91 pop r28 |
||
3064 | 18ac: 08 95 ret |
||
3065 | |||
3066 | 000018ae <base64_decode>: |
||
3067 | } |
||
3068 | |||
3069 | |||
3070 | uint8_t base64_decode(uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um |
||
3071 | { |
||
3072 | 18ae: a8 2f mov r26, r24 |
||
3073 | uint8_t p,q; |
||
3074 | uint8_t a,b,c,d; |
||
3075 | |||
3076 | p = 2; |
||
3077 | 18b0: 62 e0 ldi r22, 0x02 ; 2 |
||
3078 | q = 0; |
||
3079 | 18b2: 70 e0 ldi r23, 0x00 ; 0 |
||
3080 | |||
3081 | while (p < number) |
||
3082 | { |
||
3083 | a = r_buffer[p + 0] - 61; |
||
3084 | b = r_buffer[p + 1] - 61; |
||
3085 | c = r_buffer[p + 2] - 61; |
||
3086 | d = r_buffer[p + 3] - 61; |
||
3087 | |||
3088 | p += 4; |
||
3089 | |||
3090 | p_buffer[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer |
||
3091 | p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2); |
||
3092 | p_buffer[q + 2] = ((c & 0x03) << 6) | d; |
||
3093 | |||
3094 | q += 3; |
||
3095 | 18b4: 6a 17 cp r22, r26 |
||
3096 | 18b6: b0 f5 brcc .+108 ; 0x1924 <base64_decode+0x76> |
||
3097 | 18b8: e6 2f mov r30, r22 |
||
3098 | 18ba: ff 27 eor r31, r31 |
||
3099 | 18bc: e7 51 subi r30, 0x17 ; 23 |
||
3100 | 18be: fb 4f sbci r31, 0xFB ; 251 |
||
3101 | 18c0: 80 81 ld r24, Z |
||
3102 | 18c2: 8d 53 subi r24, 0x3D ; 61 |
||
3103 | 18c4: 31 81 ldd r19, Z+1 ; 0x01 |
||
3104 | 18c6: 3d 53 subi r19, 0x3D ; 61 |
||
3105 | 18c8: 52 81 ldd r21, Z+2 ; 0x02 |
||
3106 | 18ca: 5d 53 subi r21, 0x3D ; 61 |
||
3107 | 18cc: 43 81 ldd r20, Z+3 ; 0x03 |
||
3108 | 18ce: 4d 53 subi r20, 0x3D ; 61 |
||
3109 | 18d0: 6c 5f subi r22, 0xFC ; 252 |
||
3110 | 18d2: e7 2f mov r30, r23 |
||
3111 | 18d4: ff 27 eor r31, r31 |
||
3112 | 18d6: ed 59 subi r30, 0x9D ; 157 |
||
3113 | 18d8: fb 4f sbci r31, 0xFB ; 251 |
||
3114 | 18da: 99 27 eor r25, r25 |
||
3115 | 18dc: 88 0f add r24, r24 |
||
3116 | 18de: 99 1f adc r25, r25 |
||
3117 | 18e0: 88 0f add r24, r24 |
||
3118 | 18e2: 99 1f adc r25, r25 |
||
3119 | 18e4: 23 2f mov r18, r19 |
||
3120 | 18e6: 22 95 swap r18 |
||
3121 | 18e8: 2f 70 andi r18, 0x0F ; 15 |
||
3122 | 18ea: 28 2b or r18, r24 |
||
3123 | 18ec: 20 83 st Z, r18 |
||
3124 | 18ee: 83 2f mov r24, r19 |
||
3125 | 18f0: 99 27 eor r25, r25 |
||
3126 | 18f2: 8f 70 andi r24, 0x0F ; 15 |
||
3127 | 18f4: 90 70 andi r25, 0x00 ; 0 |
||
3128 | 18f6: 34 e0 ldi r19, 0x04 ; 4 |
||
3129 | 18f8: 88 0f add r24, r24 |
||
3130 | 18fa: 99 1f adc r25, r25 |
||
3131 | 18fc: 3a 95 dec r19 |
||
3132 | 18fe: e1 f7 brne .-8 ; 0x18f8 <base64_decode+0x4a> |
||
3133 | 1900: 25 2f mov r18, r21 |
||
3134 | 1902: 26 95 lsr r18 |
||
3135 | 1904: 26 95 lsr r18 |
||
3136 | 1906: 28 2b or r18, r24 |
||
3137 | 1908: 21 83 std Z+1, r18 ; 0x01 |
||
3138 | 190a: 85 2f mov r24, r21 |
||
3139 | 190c: 99 27 eor r25, r25 |
||
3140 | 190e: 83 70 andi r24, 0x03 ; 3 |
||
3141 | 1910: 90 70 andi r25, 0x00 ; 0 |
||
3142 | 1912: 26 e0 ldi r18, 0x06 ; 6 |
||
3143 | 1914: 88 0f add r24, r24 |
||
3144 | 1916: 99 1f adc r25, r25 |
||
3145 | 1918: 2a 95 dec r18 |
||
3146 | 191a: e1 f7 brne .-8 ; 0x1914 <base64_decode+0x66> |
||
3147 | 191c: 48 2b or r20, r24 |
||
3148 | 191e: 42 83 std Z+2, r20 ; 0x02 |
||
3149 | 1920: 7d 5f subi r23, 0xFD ; 253 |
||
3150 | 1922: c8 cf rjmp .-112 ; 0x18b4 <base64_decode+0x6> |
||
3151 | } |
||
3152 | return q; // Rückgabe der Anzahl der Datenbytes |
||
3153 | } |
||
3154 | 1924: 87 2f mov r24, r23 |
||
3155 | 1926: 99 27 eor r25, r25 |
||
3156 | 1928: 08 95 ret |
||
3157 | |||
3158 | 0000192a <get_message>: |
||
3159 | 192a: cf 93 push r28 |
||
3160 | 192c: 84 e1 ldi r24, 0x14 ; 20 |
||
3161 | 192e: 80 93 61 00 sts 0x0061, r24 |
||
3162 | 1932: 0e 94 1f 0c call 0x183e <RS232_get> |
||
3163 | 1936: 83 32 cpi r24, 0x23 ; 35 |
||
3164 | 1938: 21 f0 breq .+8 ; 0x1942 <get_message+0x18> |
||
3165 | 193a: 80 91 61 00 lds r24, 0x0061 |
||
3166 | 193e: 88 23 and r24, r24 |
||
3167 | 1940: c1 f7 brne .-16 ; 0x1932 <get_message+0x8> |
||
3168 | 1942: 80 91 61 00 lds r24, 0x0061 |
||
3169 | 1946: 88 23 and r24, r24 |
||
3170 | 1948: 99 f0 breq .+38 ; 0x1970 <get_message+0x46> |
||
3171 | 194a: c0 e0 ldi r28, 0x00 ; 0 |
||
3172 | 194c: 0e 94 1f 0c call 0x183e <RS232_get> |
||
3173 | 1950: ec 2f mov r30, r28 |
||
3174 | 1952: ff 27 eor r31, r31 |
||
3175 | 1954: e7 51 subi r30, 0x17 ; 23 |
||
3176 | 1956: fb 4f sbci r31, 0xFB ; 251 |
||
3177 | 1958: 80 83 st Z, r24 |
||
3178 | 195a: cf 5f subi r28, 0xFF ; 255 |
||
3179 | 195c: c7 fd sbrc r28, 7 |
||
3180 | 195e: cf e7 ldi r28, 0x7F ; 127 |
||
3181 | 1960: 8d 30 cpi r24, 0x0D ; 13 |
||
3182 | 1962: a1 f7 brne .-24 ; 0x194c <get_message+0x22> |
||
3183 | 1964: 8c 2f mov r24, r28 |
||
3184 | 1966: 0e 94 57 0c call 0x18ae <base64_decode> |
||
3185 | 196a: 80 e0 ldi r24, 0x00 ; 0 |
||
3186 | 196c: 90 e0 ldi r25, 0x00 ; 0 |
||
3187 | 196e: 02 c0 rjmp .+4 ; 0x1974 <get_message+0x4a> |
||
3188 | 1970: 81 e0 ldi r24, 0x01 ; 1 |
||
3189 | 1972: 90 e0 ldi r25, 0x00 ; 0 |
||
3190 | 1974: cf 91 pop r28 |
||
3191 | 1976: 08 95 ret |
||
3192 | |||
3193 | 00001978 <base64_send>: |
||
3194 | |||
3195 | void base64_send(uint8_t number) // Sendet Daten zur Flight-Control |
||
3196 | { // Die Daten werden in p_buffer erwartet, umcodiert und gesendet |
||
3197 | 1978: ff 92 push r15 |
||
3198 | 197a: 0f 93 push r16 |
||
3199 | 197c: 1f 93 push r17 |
||
3200 | 197e: cf 93 push r28 |
||
3201 | 1980: a8 2f mov r26, r24 |
||
3202 | uint8_t bpointer,spointer; |
||
3203 | uint8_t x,y,z,a; |
||
3204 | uint16_t checksum; |
||
3205 | |||
3206 | r_buffer[0] = p_buffer[0]; |
||
3207 | 1982: 80 91 63 04 lds r24, 0x0463 |
||
3208 | 1986: 80 93 e9 04 sts 0x04E9, r24 |
||
3209 | r_buffer[1] = p_buffer[1]; |
||
3210 | 198a: 80 91 64 04 lds r24, 0x0464 |
||
3211 | 198e: 80 93 ea 04 sts 0x04EA, r24 |
||
3212 | r_buffer[2] = p_buffer[2]; |
||
3213 | 1992: 80 91 65 04 lds r24, 0x0465 |
||
3214 | 1996: 80 93 eb 04 sts 0x04EB, r24 |
||
3215 | |||
3216 | bpointer = 3; |
||
3217 | 199a: 43 e0 ldi r20, 0x03 ; 3 |
||
3218 | 199c: f4 2e mov r15, r20 |
||
3219 | spointer = 3; |
||
3220 | 199e: 7f 2d mov r23, r15 |
||
3221 | |||
3222 | while (spointer < number) |
||
3223 | { |
||
3224 | x = p_buffer[spointer]; |
||
3225 | y = p_buffer[spointer + 1]; |
||
3226 | z = p_buffer[spointer + 2]; |
||
3227 | spointer += 3; |
||
3228 | |||
3229 | r_buffer[bpointer + 0] = (x >> 2) + 61; |
||
3230 | r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61; |
||
3231 | r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61; |
||
3232 | r_buffer[bpointer + 3] = (z & 0x3F) + 61; |
||
3233 | |||
3234 | bpointer += 4; |
||
3235 | 19a0: fa 16 cp r15, r26 |
||
3236 | 19a2: e0 f5 brcc .+120 ; 0x1a1c <base64_send+0xa4> |
||
3237 | 19a4: e7 2f mov r30, r23 |
||
3238 | 19a6: ff 27 eor r31, r31 |
||
3239 | 19a8: ed 59 subi r30, 0x9D ; 157 |
||
3240 | 19aa: fb 4f sbci r31, 0xFB ; 251 |
||
3241 | 19ac: 90 81 ld r25, Z |
||
3242 | 19ae: 21 81 ldd r18, Z+1 ; 0x01 |
||
3243 | 19b0: 62 81 ldd r22, Z+2 ; 0x02 |
||
3244 | 19b2: 7d 5f subi r23, 0xFD ; 253 |
||
3245 | 19b4: ef 2d mov r30, r15 |
||
3246 | 19b6: ff 27 eor r31, r31 |
||
3247 | 19b8: e7 51 subi r30, 0x17 ; 23 |
||
3248 | 19ba: fb 4f sbci r31, 0xFB ; 251 |
||
3249 | 19bc: 89 2f mov r24, r25 |
||
3250 | 19be: 86 95 lsr r24 |
||
3251 | 19c0: 86 95 lsr r24 |
||
3252 | 19c2: 83 5c subi r24, 0xC3 ; 195 |
||
3253 | 19c4: 80 83 st Z, r24 |
||
3254 | 19c6: 89 2f mov r24, r25 |
||
3255 | 19c8: 99 27 eor r25, r25 |
||
3256 | 19ca: 83 70 andi r24, 0x03 ; 3 |
||
3257 | 19cc: 90 70 andi r25, 0x00 ; 0 |
||
3258 | 19ce: 34 e0 ldi r19, 0x04 ; 4 |
||
3259 | 19d0: 88 0f add r24, r24 |
||
3260 | 19d2: 99 1f adc r25, r25 |
||
3261 | 19d4: 3a 95 dec r19 |
||
3262 | 19d6: e1 f7 brne .-8 ; 0x19d0 <base64_send+0x58> |
||
3263 | 19d8: 42 2f mov r20, r18 |
||
3264 | 19da: 55 27 eor r21, r21 |
||
3265 | 19dc: 9a 01 movw r18, r20 |
||
3266 | 19de: 94 e0 ldi r25, 0x04 ; 4 |
||
3267 | 19e0: 36 95 lsr r19 |
||
3268 | 19e2: 27 95 ror r18 |
||
3269 | 19e4: 9a 95 dec r25 |
||
3270 | 19e6: e1 f7 brne .-8 ; 0x19e0 <base64_send+0x68> |
||
3271 | 19e8: 82 2b or r24, r18 |
||
3272 | 19ea: 83 5c subi r24, 0xC3 ; 195 |
||
3273 | 19ec: 81 83 std Z+1, r24 ; 0x01 |
||
3274 | 19ee: 4f 70 andi r20, 0x0F ; 15 |
||
3275 | 19f0: 50 70 andi r21, 0x00 ; 0 |
||
3276 | 19f2: 44 0f add r20, r20 |
||
3277 | 19f4: 55 1f adc r21, r21 |
||
3278 | 19f6: 44 0f add r20, r20 |
||
3279 | 19f8: 55 1f adc r21, r21 |
||
3280 | 19fa: 86 2f mov r24, r22 |
||
3281 | 19fc: 99 27 eor r25, r25 |
||
3282 | 19fe: 16 e0 ldi r17, 0x06 ; 6 |
||
3283 | 1a00: 96 95 lsr r25 |
||
3284 | 1a02: 87 95 ror r24 |
||
3285 | 1a04: 1a 95 dec r17 |
||
3286 | 1a06: e1 f7 brne .-8 ; 0x1a00 <base64_send+0x88> |
||
3287 | 1a08: 84 2b or r24, r20 |
||
3288 | 1a0a: 83 5c subi r24, 0xC3 ; 195 |
||
3289 | 1a0c: 82 83 std Z+2, r24 ; 0x02 |
||
3290 | 1a0e: 6f 73 andi r22, 0x3F ; 63 |
||
3291 | 1a10: 63 5c subi r22, 0xC3 ; 195 |
||
3292 | 1a12: 63 83 std Z+3, r22 ; 0x03 |
||
3293 | 1a14: 84 e0 ldi r24, 0x04 ; 4 |
||
3294 | 1a16: f8 0e add r15, r24 |
||
3295 | 1a18: 7a 17 cp r23, r26 |
||
3296 | 1a1a: 20 f2 brcs .-120 ; 0x19a4 <base64_send+0x2c> |
||
3297 | } |
||
3298 | |||
3299 | checksum = 0; |
||
3300 | 1a1c: 20 e0 ldi r18, 0x00 ; 0 |
||
3301 | 1a1e: 30 e0 ldi r19, 0x00 ; 0 |
||
3302 | for(a=0;a<bpointer;a++) |
||
3303 | 1a20: c0 e0 ldi r28, 0x00 ; 0 |
||
3304 | 1a22: cf 15 cp r28, r15 |
||
3305 | 1a24: 40 f4 brcc .+16 ; 0x1a36 <base64_send+0xbe> |
||
3306 | 1a26: e9 ee ldi r30, 0xE9 ; 233 |
||
3307 | 1a28: f4 e0 ldi r31, 0x04 ; 4 |
||
3308 | checksum += r_buffer[a]; |
||
3309 | 1a2a: 81 91 ld r24, Z+ |
||
3310 | 1a2c: 28 0f add r18, r24 |
||
3311 | 1a2e: 31 1d adc r19, r1 |
||
3312 | 1a30: cf 5f subi r28, 0xFF ; 255 |
||
3313 | 1a32: cf 15 cp r28, r15 |
||
3314 | 1a34: d0 f3 brcs .-12 ; 0x1a2a <base64_send+0xb2> |
||
3315 | |||
3316 | checksum %= 4096; |
||
3317 | 1a36: 3f 70 andi r19, 0x0F ; 15 |
||
3318 | |||
3319 | r_buffer[bpointer] = (checksum / 64) + 61; |
||
3320 | 1a38: ef 2d mov r30, r15 |
||
3321 | 1a3a: ff 27 eor r31, r31 |
||
3322 | 1a3c: e7 51 subi r30, 0x17 ; 23 |
||
3323 | 1a3e: fb 4f sbci r31, 0xFB ; 251 |
||
3324 | 1a40: c9 01 movw r24, r18 |
||
3325 | 1a42: c6 e0 ldi r28, 0x06 ; 6 |
||
3326 | 1a44: 96 95 lsr r25 |
||
3327 | 1a46: 87 95 ror r24 |
||
3328 | 1a48: ca 95 dec r28 |
||
3329 | 1a4a: e1 f7 brne .-8 ; 0x1a44 <base64_send+0xcc> |
||
3330 | 1a4c: 83 5c subi r24, 0xC3 ; 195 |
||
3331 | 1a4e: 80 83 st Z, r24 |
||
3332 | r_buffer[bpointer + 1] = (checksum % 64) + 61; |
||
3333 | 1a50: 2f 73 andi r18, 0x3F ; 63 |
||
3334 | 1a52: 30 70 andi r19, 0x00 ; 0 |
||
3335 | 1a54: 82 2f mov r24, r18 |
||
3336 | 1a56: 83 5c subi r24, 0xC3 ; 195 |
||
3337 | 1a58: 81 83 std Z+1, r24 ; 0x01 |
||
3338 | r_buffer[bpointer + 2] = 13; |
||
3339 | 1a5a: 8d e0 ldi r24, 0x0D ; 13 |
||
3340 | 1a5c: 82 83 std Z+2, r24 ; 0x02 |
||
3341 | r_buffer[bpointer + 3] = 0; |
||
3342 | 1a5e: 13 82 std Z+3, r1 ; 0x03 |
||
3343 | |||
3344 | bpointer += 3; |
||
3345 | 1a60: 83 e0 ldi r24, 0x03 ; 3 |
||
3346 | 1a62: f8 0e add r15, r24 |
||
3347 | |||
3348 | for(a=0;a<bpointer;a++) |
||
3349 | 1a64: c3 81 ldd r28, Z+3 ; 0x03 |
||
3350 | 1a66: cf 15 cp r28, r15 |
||
3351 | 1a68: 50 f4 brcc .+20 ; 0x1a7e <base64_send+0x106> |
||
3352 | 1a6a: 09 ee ldi r16, 0xE9 ; 233 |
||
3353 | 1a6c: 14 e0 ldi r17, 0x04 ; 4 |
||
3354 | RS232_send(r_buffer[a]); |
||
3355 | 1a6e: f8 01 movw r30, r16 |
||
3356 | 1a70: 81 91 ld r24, Z+ |
||
3357 | 1a72: 8f 01 movw r16, r30 |
||
3358 | 1a74: 0e 94 44 0c call 0x1888 <RS232_send> |
||
3359 | 1a78: cf 5f subi r28, 0xFF ; 255 |
||
3360 | 1a7a: cf 15 cp r28, r15 |
||
3361 | 1a7c: c0 f3 brcs .-16 ; 0x1a6e <base64_send+0xf6> |
||
3362 | 1a7e: cf 91 pop r28 |
||
3363 | 1a80: 1f 91 pop r17 |
||
3364 | 1a82: 0f 91 pop r16 |
||
3365 | 1a84: ff 90 pop r15 |
||
3366 | 1a86: 08 95 ret |
||
3367 | |||
3368 | 00001a88 <displ_get_text>: |
||
3369 | uint8_t displ_page; |
||
3370 | |||
3371 | |||
3372 | void displ_get_text(uint8_t number) |
||
3373 | { |
||
3374 | 1a88: 1f 93 push r17 |
||
3375 | 1a8a: cf 93 push r28 |
||
3376 | 1a8c: df 93 push r29 |
||
3377 | 1a8e: cd b7 in r28, 0x3d ; 61 |
||
3378 | 1a90: de b7 in r29, 0x3e ; 62 |
||
3379 | 1a92: 61 97 sbiw r28, 0x11 ; 17 |
||
3380 | 1a94: 0f b6 in r0, 0x3f ; 63 |
||
3381 | 1a96: f8 94 cli |
||
3382 | 1a98: de bf out 0x3e, r29 ; 62 |
||
3383 | 1a9a: 0f be out 0x3f, r0 ; 63 |
||
3384 | 1a9c: cd bf out 0x3d, r28 ; 61 |
||
3385 | 1a9e: 18 2f mov r17, r24 |
||
3386 | uint8_t text[17]; |
||
3387 | uint8_t i; |
||
3388 | |||
3389 | p_buffer[0] = '#'; |
||
3390 | 1aa0: 83 e2 ldi r24, 0x23 ; 35 |
||
3391 | 1aa2: 80 93 63 04 sts 0x0463, r24 |
||
3392 | p_buffer[1] = 'a'; |
||
3393 | 1aa6: 81 e6 ldi r24, 0x61 ; 97 |
||
3394 | 1aa8: 80 93 64 04 sts 0x0464, r24 |
||
3395 | p_buffer[2] = 'a'; |
||
3396 | 1aac: 80 93 65 04 sts 0x0465, r24 |
||
3397 | p_buffer[3] = number; |
||
3398 | 1ab0: 10 93 66 04 sts 0x0466, r17 |
||
3399 | p_buffer[4] = 0; |
||
3400 | 1ab4: 10 92 67 04 sts 0x0467, r1 |
||
3401 | p_buffer[5] = 0; |
||
3402 | 1ab8: 10 92 68 04 sts 0x0468, r1 |
||
3403 | base64_send(6); |
||
3404 | 1abc: 86 e0 ldi r24, 0x06 ; 6 |
||
3405 | 1abe: 0e 94 bc 0c call 0x1978 <base64_send> |
||
3406 | |||
3407 | do |
||
3408 | { |
||
3409 | get_message(); |
||
3410 | 1ac2: 0e 94 95 0c call 0x192a <get_message> |
||
3411 | } |
||
3412 | 1ac6: 80 91 ea 04 lds r24, 0x04EA |
||
3413 | 1aca: 81 34 cpi r24, 0x41 ; 65 |
||
3414 | 1acc: d1 f7 brne .-12 ; 0x1ac2 <displ_get_text+0x3a> |
||
3415 | 1ace: de 01 movw r26, r28 |
||
3416 | 1ad0: 11 96 adiw r26, 0x01 ; 1 |
||
3417 | 1ad2: e3 e6 ldi r30, 0x63 ; 99 |
||
3418 | 1ad4: f4 e0 ldi r31, 0x04 ; 4 |
||
3419 | 1ad6: 9f e0 ldi r25, 0x0F ; 15 |
||
3420 | while (r_buffer[1] != 'A'); |
||
3421 | |||
3422 | for (i=0;i<16;i++) |
||
3423 | text[i] = p_buffer[i]; |
||
3424 | 1ad8: 81 91 ld r24, Z+ |
||
3425 | 1ada: 8d 93 st X+, r24 |
||
3426 | 1adc: 91 50 subi r25, 0x01 ; 1 |
||
3427 | 1ade: 97 ff sbrs r25, 7 |
||
3428 | 1ae0: fb cf rjmp .-10 ; 0x1ad8 <displ_get_text+0x50> |
||
3429 | text[16] = 0x00; |
||
3430 | 1ae2: 19 8a std Y+17, r1 ; 0x11 |
||
3431 | lcd_print_at(0,(number & 0x07),text,0); |
||
3432 | 1ae4: 17 70 andi r17, 0x07 ; 7 |
||
3433 | 1ae6: 29 89 ldd r18, Y+17 ; 0x11 |
||
3434 | 1ae8: ae 01 movw r20, r28 |
||
3435 | 1aea: 4f 5f subi r20, 0xFF ; 255 |
||
3436 | 1aec: 5f 4f sbci r21, 0xFF ; 255 |
||
3437 | 1aee: 61 2f mov r22, r17 |
||
3438 | 1af0: 82 2f mov r24, r18 |
||
3439 | 1af2: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
3440 | 1af6: 61 96 adiw r28, 0x11 ; 17 |
||
3441 | 1af8: 0f b6 in r0, 0x3f ; 63 |
||
3442 | 1afa: f8 94 cli |
||
3443 | 1afc: de bf out 0x3e, r29 ; 62 |
||
3444 | 1afe: 0f be out 0x3f, r0 ; 63 |
||
3445 | 1b00: cd bf out 0x3d, r28 ; 61 |
||
3446 | 1b02: df 91 pop r29 |
||
3447 | 1b04: cf 91 pop r28 |
||
3448 | 1b06: 1f 91 pop r17 |
||
3449 | 1b08: 08 95 ret |
||
3450 | |||
3451 | 00001b0a <displ_values>: |
||
3452 | |||
3453 | } |
||
3454 | |||
3455 | void displ_values(void) |
||
3456 | { |
||
3457 | 1b0a: cf 92 push r12 |
||
3458 | 1b0c: df 92 push r13 |
||
3459 | 1b0e: ef 92 push r14 |
||
3460 | 1b10: ff 92 push r15 |
||
3461 | 1b12: 0f 93 push r16 |
||
3462 | 1b14: 1f 93 push r17 |
||
3463 | 1b16: cf 93 push r28 |
||
3464 | 1b18: df 93 push r29 |
||
3465 | 1b1a: cd b7 in r28, 0x3d ; 61 |
||
3466 | 1b1c: de b7 in r29, 0x3e ; 62 |
||
3467 | 1b1e: 61 97 sbiw r28, 0x11 ; 17 |
||
3468 | 1b20: 0f b6 in r0, 0x3f ; 63 |
||
3469 | 1b22: f8 94 cli |
||
3470 | 1b24: de bf out 0x3e, r29 ; 62 |
||
3471 | 1b26: 0f be out 0x3f, r0 ; 63 |
||
3472 | 1b28: cd bf out 0x3d, r28 ; 61 |
||
3473 | uint8_t displ_page, i; |
||
3474 | int16_t value; |
||
3475 | uint8_t text[17]; |
||
3476 | |||
3477 | displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte) |
||
3478 | 1b2a: 00 e0 ldi r16, 0x00 ; 0 |
||
3479 | lcd_cls(); // LCD löschen |
||
3480 | 1b2c: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
3481 | |||
3482 | do |
||
3483 | { |
||
3484 | for (i=0;i<8;i++) // Texte lesen und anzeigen |
||
3485 | 1b30: 10 e0 ldi r17, 0x00 ; 0 |
||
3486 | displ_get_text(i+displ_page*8); |
||
3487 | 1b32: c0 2e mov r12, r16 |
||
3488 | 1b34: dd 24 eor r13, r13 |
||
3489 | 1b36: c6 01 movw r24, r12 |
||
3490 | 1b38: 53 e0 ldi r21, 0x03 ; 3 |
||
3491 | 1b3a: 88 0f add r24, r24 |
||
3492 | 1b3c: 99 1f adc r25, r25 |
||
3493 | 1b3e: 5a 95 dec r21 |
||
3494 | 1b40: e1 f7 brne .-8 ; 0x1b3a <displ_values+0x30> |
||
3495 | 1b42: 81 0f add r24, r17 |
||
3496 | 1b44: 0e 94 44 0d call 0x1a88 <displ_get_text> |
||
3497 | 1b48: 1f 5f subi r17, 0xFF ; 255 |
||
3498 | 1b4a: 18 30 cpi r17, 0x08 ; 8 |
||
3499 | 1b4c: 90 f3 brcs .-28 ; 0x1b32 <displ_values+0x28> |
||
3500 | |||
3501 | do |
||
3502 | { |
||
3503 | get_message(); |
||
3504 | 1b4e: 0e 94 95 0c call 0x192a <get_message> |
||
3505 | if(r_buffer[1] == 'D') |
||
3506 | 1b52: 80 91 ea 04 lds r24, 0x04EA |
||
3507 | 1b56: 84 34 cpi r24, 0x44 ; 68 |
||
3508 | 1b58: 91 f5 brne .+100 ; 0x1bbe <displ_values+0xb4> |
||
3509 | { |
||
3510 | for (i=0;i<8;i++) |
||
3511 | 1b5a: 10 e0 ldi r17, 0x00 ; 0 |
||
3512 | 1b5c: ee 24 eor r14, r14 |
||
3513 | 1b5e: ff 24 eor r15, r15 |
||
3514 | { |
||
3515 | value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3]; |
||
3516 | 1b60: f6 01 movw r30, r12 |
||
3517 | 1b62: 43 e0 ldi r20, 0x03 ; 3 |
||
3518 | 1b64: ee 0f add r30, r30 |
||
3519 | 1b66: ff 1f adc r31, r31 |
||
3520 | 1b68: 4a 95 dec r20 |
||
3521 | 1b6a: e1 f7 brne .-8 ; 0x1b64 <displ_values+0x5a> |
||
3522 | 1b6c: ee 0d add r30, r14 |
||
3523 | 1b6e: ff 1d adc r31, r15 |
||
3524 | 1b70: ee 0f add r30, r30 |
||
3525 | 1b72: ff 1f adc r31, r31 |
||
3526 | 1b74: ed 59 subi r30, 0x9D ; 157 |
||
3527 | 1b76: fb 4f sbci r31, 0xFB ; 251 |
||
3528 | 1b78: 22 81 ldd r18, Z+2 ; 0x02 |
||
3529 | 1b7a: 83 81 ldd r24, Z+3 ; 0x03 |
||
3530 | 1b7c: 99 27 eor r25, r25 |
||
3531 | 1b7e: 98 2f mov r25, r24 |
||
3532 | 1b80: 88 27 eor r24, r24 |
||
3533 | itoa(value,text,10); |
||
3534 | 1b82: 4a e0 ldi r20, 0x0A ; 10 |
||
3535 | 1b84: 50 e0 ldi r21, 0x00 ; 0 |
||
3536 | 1b86: be 01 movw r22, r28 |
||
3537 | 1b88: 6f 5f subi r22, 0xFF ; 255 |
||
3538 | 1b8a: 7f 4f sbci r23, 0xFF ; 255 |
||
3539 | 1b8c: 82 0f add r24, r18 |
||
3540 | 1b8e: 91 1d adc r25, r1 |
||
3541 | 1b90: 0e 94 cf 12 call 0x259e <itoa> |
||
3542 | lcd_print_atp(14,i,PSTR(" "),0); |
||
3543 | 1b94: 20 e0 ldi r18, 0x00 ; 0 |
||
3544 | 1b96: 44 e5 ldi r20, 0x54 ; 84 |
||
3545 | 1b98: 56 e0 ldi r21, 0x06 ; 6 |
||
3546 | 1b9a: 61 2f mov r22, r17 |
||
3547 | 1b9c: 8e e0 ldi r24, 0x0E ; 14 |
||
3548 | 1b9e: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
3549 | lcd_print_at(14,i,text,0); |
||
3550 | 1ba2: 20 e0 ldi r18, 0x00 ; 0 |
||
3551 | 1ba4: ae 01 movw r20, r28 |
||
3552 | 1ba6: 4f 5f subi r20, 0xFF ; 255 |
||
3553 | 1ba8: 5f 4f sbci r21, 0xFF ; 255 |
||
3554 | 1baa: 61 2f mov r22, r17 |
||
3555 | 1bac: 8e e0 ldi r24, 0x0E ; 14 |
||
3556 | 1bae: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
3557 | 1bb2: 1f 5f subi r17, 0xFF ; 255 |
||
3558 | 1bb4: 08 94 sec |
||
3559 | 1bb6: e1 1c adc r14, r1 |
||
3560 | 1bb8: f1 1c adc r15, r1 |
||
3561 | 1bba: 18 30 cpi r17, 0x08 ; 8 |
||
3562 | 1bbc: 88 f2 brcs .-94 ; 0x1b60 <displ_values+0x56> |
||
3563 | } |
||
3564 | } |
||
3565 | } |
||
3566 | 1bbe: 80 91 e6 04 lds r24, 0x04E6 |
||
3567 | 1bc2: 88 23 and r24, r24 |
||
3568 | 1bc4: 21 f2 breq .-120 ; 0x1b4e <displ_values+0x44> |
||
3569 | while (key == 0x00); |
||
3570 | if (key == 0x01) |
||
3571 | 1bc6: 80 91 e6 04 lds r24, 0x04E6 |
||
3572 | 1bca: 81 30 cpi r24, 0x01 ; 1 |
||
3573 | 1bcc: 09 f4 brne .+2 ; 0x1bd0 <displ_values+0xc6> |
||
3574 | displ_page++; |
||
3575 | 1bce: 0f 5f subi r16, 0xFF ; 255 |
||
3576 | if (key == 0x02) |
||
3577 | 1bd0: 80 91 e6 04 lds r24, 0x04E6 |
||
3578 | 1bd4: 82 30 cpi r24, 0x02 ; 2 |
||
3579 | 1bd6: 09 f4 brne .+2 ; 0x1bda <displ_values+0xd0> |
||
3580 | displ_page--; |
||
3581 | 1bd8: 01 50 subi r16, 0x01 ; 1 |
||
3582 | |||
3583 | displ_page &= 0x03; |
||
3584 | 1bda: 03 70 andi r16, 0x03 ; 3 |
||
3585 | } |
||
3586 | 1bdc: 80 91 e6 04 lds r24, 0x04E6 |
||
3587 | 1be0: 88 30 cpi r24, 0x08 ; 8 |
||
3588 | 1be2: 09 f0 breq .+2 ; 0x1be6 <displ_values+0xdc> |
||
3589 | 1be4: a5 cf rjmp .-182 ; 0x1b30 <displ_values+0x26> |
||
3590 | 1be6: 61 96 adiw r28, 0x11 ; 17 |
||
3591 | 1be8: 0f b6 in r0, 0x3f ; 63 |
||
3592 | 1bea: f8 94 cli |
||
3593 | 1bec: de bf out 0x3e, r29 ; 62 |
||
3594 | 1bee: 0f be out 0x3f, r0 ; 63 |
||
3595 | 1bf0: cd bf out 0x3d, r28 ; 61 |
||
3596 | 1bf2: df 91 pop r29 |
||
3597 | 1bf4: cf 91 pop r28 |
||
3598 | 1bf6: 1f 91 pop r17 |
||
3599 | 1bf8: 0f 91 pop r16 |
||
3600 | 1bfa: ff 90 pop r15 |
||
3601 | 1bfc: ef 90 pop r14 |
||
3602 | 1bfe: df 90 pop r13 |
||
3603 | 1c00: cf 90 pop r12 |
||
3604 | 1c02: 08 95 ret |
||
3605 | |||
3606 | 00001c04 <read_parameter>: |
||
3607 | |||
3608 | // Parameter lesen, editieren und zurückschreiben |
||
3609 | |||
3610 | uint8_t read_parameter (uint8_t number) // Number = Parameter-Set# |
||
3611 | { |
||
3612 | 1c04: cf 93 push r28 |
||
3613 | uint8_t timeout; |
||
3614 | |||
3615 | timeout = 0; |
||
3616 | 1c06: c0 e0 ldi r28, 0x00 ; 0 |
||
3617 | |||
3618 | p_buffer[0] = '#'; // Parameter anfordern |
||
3619 | 1c08: 93 e2 ldi r25, 0x23 ; 35 |
||
3620 | 1c0a: 90 93 63 04 sts 0x0463, r25 |
||
3621 | p_buffer[1] = 'a'; |
||
3622 | 1c0e: 91 e6 ldi r25, 0x61 ; 97 |
||
3623 | 1c10: 90 93 64 04 sts 0x0464, r25 |
||
3624 | p_buffer[2] = 'q'; |
||
3625 | 1c14: 91 e7 ldi r25, 0x71 ; 113 |
||
3626 | 1c16: 90 93 65 04 sts 0x0465, r25 |
||
3627 | p_buffer[3] = number; |
||
3628 | 1c1a: 80 93 66 04 sts 0x0466, r24 |
||
3629 | p_buffer[4] = 0; |
||
3630 | 1c1e: c0 93 67 04 sts 0x0467, r28 |
||
3631 | p_buffer[5] = 0; |
||
3632 | 1c22: c0 93 68 04 sts 0x0468, r28 |
||
3633 | base64_send(6); |
||
3634 | 1c26: 86 e0 ldi r24, 0x06 ; 6 |
||
3635 | 1c28: 0e 94 bc 0c call 0x1978 <base64_send> |
||
3636 | |||
3637 | do // warten, bis die Parameter gesendet werden |
||
3638 | { |
||
3639 | if (get_message() == 1) // Fehler bei der Übertragung? |
||
3640 | 1c2c: 0e 94 95 0c call 0x192a <get_message> |
||
3641 | 1c30: 81 30 cpi r24, 0x01 ; 1 |
||
3642 | 1c32: 09 f4 brne .+2 ; 0x1c36 <read_parameter+0x32> |
||
3643 | timeout = 30; // Timeout sofort auf Endwert setzen |
||
3644 | 1c34: ce e1 ldi r28, 0x1E ; 30 |
||
3645 | timeout ++; |
||
3646 | 1c36: cf 5f subi r28, 0xFF ; 255 |
||
3647 | } |
||
3648 | 1c38: 80 91 ea 04 lds r24, 0x04EA |
||
3649 | 1c3c: 8c 54 subi r24, 0x4C ; 76 |
||
3650 | 1c3e: 85 30 cpi r24, 0x05 ; 5 |
||
3651 | 1c40: 10 f0 brcs .+4 ; 0x1c46 <read_parameter+0x42> |
||
3652 | 1c42: ce 31 cpi r28, 0x1E ; 30 |
||
3653 | 1c44: 98 f3 brcs .-26 ; 0x1c2c <read_parameter+0x28> |
||
3654 | while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat |
||
3655 | |||
3656 | if (timeout >= 30) // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0 |
||
3657 | 1c46: ce 31 cpi r28, 0x1E ; 30 |
||
3658 | 1c48: 18 f0 brcs .+6 ; 0x1c50 <read_parameter+0x4c> |
||
3659 | return 1; |
||
3660 | 1c4a: 81 e0 ldi r24, 0x01 ; 1 |
||
3661 | 1c4c: 90 e0 ldi r25, 0x00 ; 0 |
||
3662 | 1c4e: 02 c0 rjmp .+4 ; 0x1c54 <read_parameter+0x50> |
||
3663 | else |
||
3664 | return 0; |
||
3665 | 1c50: 80 e0 ldi r24, 0x00 ; 0 |
||
3666 | 1c52: 90 e0 ldi r25, 0x00 ; 0 |
||
3667 | 1c54: cf 91 pop r28 |
||
3668 | 1c56: 08 95 ret |
||
3669 | |||
3670 | 00001c58 <write_parameter>: |
||
3671 | } |
||
3672 | |||
3673 | void write_parameter(uint8_t number) // Schreibe Parameter-Satz |
||
3674 | { |
||
3675 | 1c58: 98 2f mov r25, r24 |
||
3676 | uint8_t i; |
||
3677 | |||
3678 | if (number <= 5) |
||
3679 | 1c5a: 86 30 cpi r24, 0x06 ; 6 |
||
3680 | 1c5c: b8 f4 brcc .+46 ; 0x1c8c <write_parameter+0x34> |
||
3681 | 1c5e: e9 ea ldi r30, 0xA9 ; 169 |
||
3682 | 1c60: f4 e0 ldi r31, 0x04 ; 4 |
||
3683 | 1c62: 26 e4 ldi r18, 0x46 ; 70 |
||
3684 | { |
||
3685 | |||
3686 | for (i=0;i<71;i++) // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben |
||
3687 | p_buffer[(70-i)+3] = p_buffer[70-i]; |
||
3688 | 1c64: 80 81 ld r24, Z |
||
3689 | 1c66: 83 83 std Z+3, r24 ; 0x03 |
||
3690 | 1c68: 21 50 subi r18, 0x01 ; 1 |
||
3691 | 1c6a: 31 97 sbiw r30, 0x01 ; 1 |
||
3692 | 1c6c: 27 ff sbrs r18, 7 |
||
3693 | 1c6e: fa cf rjmp .-12 ; 0x1c64 <write_parameter+0xc> |
||
3694 | |||
3695 | p_buffer[0] = '#'; // Befehl zum Schreiben der Parameter |
||
3696 | 1c70: 83 e2 ldi r24, 0x23 ; 35 |
||
3697 | 1c72: 80 93 63 04 sts 0x0463, r24 |
||
3698 | p_buffer[1] = 'a'; |
||
3699 | 1c76: 81 e6 ldi r24, 0x61 ; 97 |
||
3700 | 1c78: 80 93 64 04 sts 0x0464, r24 |
||
3701 | p_buffer[2] = number + 'k'; // Nummer des Parameters |
||
3702 | 1c7c: 95 59 subi r25, 0x95 ; 149 |
||
3703 | 1c7e: 90 93 65 04 sts 0x0465, r25 |
||
3704 | p_buffer[74] = 0; |
||
3705 | 1c82: 10 92 ad 04 sts 0x04AD, r1 |
||
3706 | base64_send(75); // Parameter in base64 kodieren und senden, 75 Bytes |
||
3707 | 1c86: 8b e4 ldi r24, 0x4B ; 75 |
||
3708 | 1c88: 0e 94 bc 0c call 0x1978 <base64_send> |
||
3709 | 1c8c: 08 95 ret |
||
3710 | |||
3711 | 00001c8e <binary>: |
||
3712 | } |
||
3713 | } |
||
3714 | |||
3715 | void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen) |
||
3716 | { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
||
3717 | 1c8e: 9b 01 movw r18, r22 |
||
3718 | 1c90: 68 2f mov r22, r24 |
||
3719 | 1c92: 77 27 eor r23, r23 |
||
3720 | 1c94: 51 e0 ldi r21, 0x01 ; 1 |
||
3721 | 1c96: f9 01 movw r30, r18 |
||
3722 | 1c98: 20 e0 ldi r18, 0x00 ; 0 |
||
3723 | 1c9a: 30 e0 ldi r19, 0x00 ; 0 |
||
3724 | 1c9c: 47 e0 ldi r20, 0x07 ; 7 |
||
3725 | uint8_t i; |
||
3726 | |||
3727 | i=0; |
||
3728 | for (i=0;i<8;i++) |
||
3729 | { |
||
3730 | if ((1<<i) & data) |
||
3731 | 1c9e: cb 01 movw r24, r22 |
||
3732 | 1ca0: 02 2e mov r0, r18 |
||
3733 | 1ca2: 02 c0 rjmp .+4 ; 0x1ca8 <binary+0x1a> |
||
3734 | 1ca4: 95 95 asr r25 |
||
3735 | 1ca6: 87 95 ror r24 |
||
3736 | 1ca8: 0a 94 dec r0 |
||
3737 | 1caa: e2 f7 brpl .-8 ; 0x1ca4 <binary+0x16> |
||
3738 | 1cac: 80 ff sbrs r24, 0 |
||
3739 | 1cae: 02 c0 rjmp .+4 ; 0x1cb4 <binary+0x26> |
||
3740 | feld[i] = 1; |
||
3741 | 1cb0: 50 83 st Z, r21 |
||
3742 | 1cb2: 01 c0 rjmp .+2 ; 0x1cb6 <binary+0x28> |
||
3743 | else |
||
3744 | feld[i] = 0; |
||
3745 | 1cb4: 10 82 st Z, r1 |
||
3746 | 1cb6: 41 50 subi r20, 0x01 ; 1 |
||
3747 | 1cb8: 2f 5f subi r18, 0xFF ; 255 |
||
3748 | 1cba: 3f 4f sbci r19, 0xFF ; 255 |
||
3749 | 1cbc: 31 96 adiw r30, 0x01 ; 1 |
||
3750 | 1cbe: 47 ff sbrs r20, 7 |
||
3751 | 1cc0: ee cf rjmp .-36 ; 0x1c9e <binary+0x10> |
||
3752 | 1cc2: 08 95 ret |
||
3753 | |||
3754 | 00001cc4 <bindec>: |
||
3755 | } |
||
3756 | } |
||
3757 | |||
3758 | uint8_t bindec (uint8_t *feld) // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl |
||
3759 | { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
||
3760 | uint8_t i; |
||
3761 | uint8_t result; |
||
3762 | |||
3763 | result = 0; |
||
3764 | 1cc4: 50 e0 ldi r21, 0x00 ; 0 |
||
3765 | 1cc6: 61 e0 ldi r22, 0x01 ; 1 |
||
3766 | 1cc8: 70 e0 ldi r23, 0x00 ; 0 |
||
3767 | 1cca: fc 01 movw r30, r24 |
||
3768 | 1ccc: 20 e0 ldi r18, 0x00 ; 0 |
||
3769 | 1cce: 30 e0 ldi r19, 0x00 ; 0 |
||
3770 | 1cd0: 47 e0 ldi r20, 0x07 ; 7 |
||
3771 | for (i=0;i<8;i++) |
||
3772 | { |
||
3773 | if (feld[i] == 1) |
||
3774 | 1cd2: 81 91 ld r24, Z+ |
||
3775 | 1cd4: 81 30 cpi r24, 0x01 ; 1 |
||
3776 | 1cd6: 41 f4 brne .+16 ; 0x1ce8 <bindec+0x24> |
||
3777 | result += 1<<i; |
||
3778 | 1cd8: cb 01 movw r24, r22 |
||
3779 | 1cda: 02 2e mov r0, r18 |
||
3780 | 1cdc: 02 c0 rjmp .+4 ; 0x1ce2 <bindec+0x1e> |
||
3781 | 1cde: 88 0f add r24, r24 |
||
3782 | 1ce0: 99 1f adc r25, r25 |
||
3783 | 1ce2: 0a 94 dec r0 |
||
3784 | 1ce4: e2 f7 brpl .-8 ; 0x1cde <bindec+0x1a> |
||
3785 | 1ce6: 58 0f add r21, r24 |
||
3786 | 1ce8: 41 50 subi r20, 0x01 ; 1 |
||
3787 | 1cea: 2f 5f subi r18, 0xFF ; 255 |
||
3788 | 1cec: 3f 4f sbci r19, 0xFF ; 255 |
||
3789 | 1cee: 47 ff sbrs r20, 7 |
||
3790 | 1cf0: f0 cf rjmp .-32 ; 0x1cd2 <bindec+0xe> |
||
3791 | } |
||
3792 | return result; |
||
3793 | } |
||
3794 | 1cf2: 85 2f mov r24, r21 |
||
3795 | 1cf4: 99 27 eor r25, r25 |
||
3796 | 1cf6: 08 95 ret |
||
3797 | |||
3798 | 00001cf8 <decimal>: |
||
3799 | |||
3800 | |||
3801 | |||
3802 | |||
3803 | void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um |
||
3804 | { // (schneller/kleiner als printf()) |
||
3805 | 1cf8: 28 2f mov r18, r24 |
||
3806 | 1cfa: fb 01 movw r30, r22 |
||
3807 | text[0] = data/100; |
||
3808 | 1cfc: 34 e6 ldi r19, 0x64 ; 100 |
||
3809 | 1cfe: 63 2f mov r22, r19 |
||
3810 | 1d00: 0e 94 16 13 call 0x262c <__udivmodqi4> |
||
3811 | 1d04: 58 2f mov r21, r24 |
||
3812 | data -= (text[0] * 100); |
||
3813 | 1d06: 83 9f mul r24, r19 |
||
3814 | 1d08: c0 01 movw r24, r0 |
||
3815 | 1d0a: 11 24 eor r1, r1 |
||
3816 | 1d0c: 28 1b sub r18, r24 |
||
3817 | text[1] = data/10; |
||
3818 | 1d0e: 3a e0 ldi r19, 0x0A ; 10 |
||
3819 | 1d10: 82 2f mov r24, r18 |
||
3820 | 1d12: 63 2f mov r22, r19 |
||
3821 | 1d14: 0e 94 16 13 call 0x262c <__udivmodqi4> |
||
3822 | 1d18: 48 2f mov r20, r24 |
||
3823 | data -= (text[1] *10); |
||
3824 | 1d1a: 83 9f mul r24, r19 |
||
3825 | 1d1c: c0 01 movw r24, r0 |
||
3826 | 1d1e: 11 24 eor r1, r1 |
||
3827 | 1d20: 28 1b sub r18, r24 |
||
3828 | text[2] = data + 0x30; |
||
3829 | 1d22: 20 5d subi r18, 0xD0 ; 208 |
||
3830 | 1d24: 22 83 std Z+2, r18 ; 0x02 |
||
3831 | text[0] += 0x30; |
||
3832 | 1d26: 85 2f mov r24, r21 |
||
3833 | 1d28: 80 5d subi r24, 0xD0 ; 208 |
||
3834 | 1d2a: 80 83 st Z, r24 |
||
3835 | text[1] += 0x30; |
||
3836 | 1d2c: 40 5d subi r20, 0xD0 ; 208 |
||
3837 | 1d2e: 41 83 std Z+1, r20 ; 0x01 |
||
3838 | |||
3839 | if (text[0] == 0x30) |
||
3840 | 1d30: 80 33 cpi r24, 0x30 ; 48 |
||
3841 | 1d32: 29 f4 brne .+10 ; 0x1d3e <decimal+0x46> |
||
3842 | { |
||
3843 | text[0] = 0x20; |
||
3844 | 1d34: 80 e2 ldi r24, 0x20 ; 32 |
||
3845 | 1d36: 80 83 st Z, r24 |
||
3846 | if (text[1] == 0x30) |
||
3847 | 1d38: 40 33 cpi r20, 0x30 ; 48 |
||
3848 | 1d3a: 09 f4 brne .+2 ; 0x1d3e <decimal+0x46> |
||
3849 | text[1] = 0x20; |
||
3850 | 1d3c: 81 83 std Z+1, r24 ; 0x01 |
||
3851 | } |
||
3852 | text[3] = 0x00; |
||
3853 | 1d3e: 13 82 std Z+3, r1 ; 0x03 |
||
3854 | 1d40: 08 95 ret |
||
3855 | |||
3856 | 00001d42 <show_parameter>: |
||
3857 | } |
||
3858 | |||
3859 | uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück |
||
3860 | { |
||
3861 | 1d42: 9f 92 push r9 |
||
3862 | 1d44: af 92 push r10 |
||
3863 | 1d46: bf 92 push r11 |
||
3864 | 1d48: cf 92 push r12 |
||
3865 | 1d4a: df 92 push r13 |
||
3866 | 1d4c: ef 92 push r14 |
||
3867 | 1d4e: ff 92 push r15 |
||
3868 | 1d50: 0f 93 push r16 |
||
3869 | 1d52: 1f 93 push r17 |
||
3870 | 1d54: cf 93 push r28 |
||
3871 | 1d56: df 93 push r29 |
||
3872 | 1d58: cd b7 in r28, 0x3d ; 61 |
||
3873 | 1d5a: de b7 in r29, 0x3e ; 62 |
||
3874 | 1d5c: a1 97 sbiw r28, 0x21 ; 33 |
||
3875 | 1d5e: 0f b6 in r0, 0x3f ; 63 |
||
3876 | 1d60: f8 94 cli |
||
3877 | 1d62: de bf out 0x3e, r29 ; 62 |
||
3878 | 1d64: 0f be out 0x3f, r0 ; 63 |
||
3879 | 1d66: cd bf out 0x3d, r28 ; 61 |
||
3880 | 1d68: 08 2f mov r16, r24 |
||
3881 | uint8_t i; |
||
3882 | uint8_t line; |
||
3883 | uint8_t text[25]; |
||
3884 | uint8_t bin[8]; |
||
3885 | |||
3886 | line = 0; |
||
3887 | 1d6a: 99 24 eor r9, r9 |
||
3888 | |||
3889 | if (number > 1) |
||
3890 | 1d6c: 82 30 cpi r24, 0x02 ; 2 |
||
3891 | 1d6e: 08 f4 brcc .+2 ; 0x1d72 <show_parameter+0x30> |
||
3892 | 1d70: 3e c0 rjmp .+124 ; 0x1dee <show_parameter+0xac> |
||
3893 | { |
||
3894 | for (i = 0; i<66; i++) |
||
3895 | 1d72: 19 2d mov r17, r9 |
||
3896 | 1d74: 4b e5 ldi r20, 0x5B ; 91 |
||
3897 | 1d76: a4 2e mov r10, r20 |
||
3898 | 1d78: 46 e0 ldi r20, 0x06 ; 6 |
||
3899 | 1d7a: b4 2e mov r11, r20 |
||
3900 | 1d7c: 33 e6 ldi r19, 0x63 ; 99 |
||
3901 | 1d7e: c3 2e mov r12, r19 |
||
3902 | 1d80: 34 e0 ldi r19, 0x04 ; 4 |
||
3903 | 1d82: d3 2e mov r13, r19 |
||
3904 | 1d84: 2d e7 ldi r18, 0x7D ; 125 |
||
3905 | 1d86: e2 2e mov r14, r18 |
||
3906 | 1d88: 2a e0 ldi r18, 0x0A ; 10 |
||
3907 | 1d8a: f2 2e mov r15, r18 |
||
3908 | { |
||
3909 | if (pgm_read_byte(p_limits+i*3+2) == number) |
||
3910 | 1d8c: f7 01 movw r30, r14 |
||
3911 | 1d8e: 84 91 lpm r24, Z |
||
3912 | 1d90: 80 17 cp r24, r16 |
||
3913 | 1d92: f1 f4 brne .+60 ; 0x1dd0 <show_parameter+0x8e> |
||
3914 | { |
||
3915 | array[line] = i; |
||
3916 | 1d94: e9 2d mov r30, r9 |
||
3917 | 1d96: ff 27 eor r31, r31 |
||
3918 | 1d98: e1 58 subi r30, 0x81 ; 129 |
||
3919 | 1d9a: fa 4f sbci r31, 0xFA ; 250 |
||
3920 | 1d9c: 10 83 st Z, r17 |
||
3921 | decimal(p_buffer[i],text); |
||
3922 | 1d9e: be 01 movw r22, r28 |
||
3923 | 1da0: 6f 5f subi r22, 0xFF ; 255 |
||
3924 | 1da2: 7f 4f sbci r23, 0xFF ; 255 |
||
3925 | 1da4: f6 01 movw r30, r12 |
||
3926 | 1da6: 80 81 ld r24, Z |
||
3927 | 1da8: 0e 94 7c 0e call 0x1cf8 <decimal> |
||
3928 | lcd_print_at(0,line,text,0); |
||
3929 | 1dac: 20 e0 ldi r18, 0x00 ; 0 |
||
3930 | 1dae: ae 01 movw r20, r28 |
||
3931 | 1db0: 4f 5f subi r20, 0xFF ; 255 |
||
3932 | 1db2: 5f 4f sbci r21, 0xFF ; 255 |
||
3933 | 1db4: 69 2d mov r22, r9 |
||
3934 | 1db6: 82 2f mov r24, r18 |
||
3935 | 1db8: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
3936 | lcd_print_atp(5,line,parameter[i],0); |
||
3937 | 1dbc: 20 e0 ldi r18, 0x00 ; 0 |
||
3938 | 1dbe: a5 01 movw r20, r10 |
||
3939 | 1dc0: 69 2d mov r22, r9 |
||
3940 | 1dc2: 85 e0 ldi r24, 0x05 ; 5 |
||
3941 | 1dc4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
3942 | if (line <= 7) |
||
3943 | 1dc8: f7 e0 ldi r31, 0x07 ; 7 |
||
3944 | 1dca: f9 15 cp r31, r9 |
||
3945 | 1dcc: 08 f0 brcs .+2 ; 0x1dd0 <show_parameter+0x8e> |
||
3946 | line++; |
||
3947 | 1dce: 93 94 inc r9 |
||
3948 | 1dd0: 1f 5f subi r17, 0xFF ; 255 |
||
3949 | 1dd2: 83 e0 ldi r24, 0x03 ; 3 |
||
3950 | 1dd4: 90 e0 ldi r25, 0x00 ; 0 |
||
3951 | 1dd6: e8 0e add r14, r24 |
||
3952 | 1dd8: f9 1e adc r15, r25 |
||
3953 | 1dda: 08 94 sec |
||
3954 | 1ddc: c1 1c adc r12, r1 |
||
3955 | 1dde: d1 1c adc r13, r1 |
||
3956 | 1de0: e0 e1 ldi r30, 0x10 ; 16 |
||
3957 | 1de2: f0 e0 ldi r31, 0x00 ; 0 |
||
3958 | 1de4: ae 0e add r10, r30 |
||
3959 | 1de6: bf 1e adc r11, r31 |
||
3960 | 1de8: 12 34 cpi r17, 0x42 ; 66 |
||
3961 | 1dea: 80 f2 brcs .-96 ; 0x1d8c <show_parameter+0x4a> |
||
3962 | 1dec: 5f c0 rjmp .+190 ; 0x1eac <show_parameter+0x16a> |
||
3963 | } |
||
3964 | } |
||
3965 | } |
||
3966 | else |
||
3967 | { // Sonderfälle: Binäre Eingabe |
||
3968 | if (number == 1) |
||
3969 | 1dee: 81 30 cpi r24, 0x01 ; 1 |
||
3970 | 1df0: 71 f5 brne .+92 ; 0x1e4e <show_parameter+0x10c> |
||
3971 | { |
||
3972 | binary(p_buffer[52],bin); // Loop-Config |
||
3973 | 1df2: be 01 movw r22, r28 |
||
3974 | 1df4: 66 5e subi r22, 0xE6 ; 230 |
||
3975 | 1df6: 7f 4f sbci r23, 0xFF ; 255 |
||
3976 | 1df8: 80 91 97 04 lds r24, 0x0497 |
||
3977 | 1dfc: 0e 94 47 0e call 0x1c8e <binary> |
||
3978 | text[1] = 0x00; |
||
3979 | 1e00: 9a 82 std Y+2, r9 ; 0x02 |
||
3980 | for (i=0;i<4;i++) |
||
3981 | 1e02: 19 2d mov r17, r9 |
||
3982 | 1e04: 9b eb ldi r25, 0xBB ; 187 |
||
3983 | 1e06: c9 2e mov r12, r25 |
||
3984 | 1e08: 99 e0 ldi r25, 0x09 ; 9 |
||
3985 | 1e0a: d9 2e mov r13, r25 |
||
3986 | 1e0c: ee 24 eor r14, r14 |
||
3987 | 1e0e: ff 24 eor r15, r15 |
||
3988 | { |
||
3989 | text[0] = bin[i] + 0x30; |
||
3990 | 1e10: ce 01 movw r24, r28 |
||
3991 | 1e12: 01 96 adiw r24, 0x01 ; 1 |
||
3992 | 1e14: f7 01 movw r30, r14 |
||
3993 | 1e16: e8 0f add r30, r24 |
||
3994 | 1e18: f9 1f adc r31, r25 |
||
3995 | 1e1a: 21 8d ldd r18, Z+25 ; 0x19 |
||
3996 | 1e1c: 20 5d subi r18, 0xD0 ; 208 |
||
3997 | 1e1e: 29 83 std Y+1, r18 ; 0x01 |
||
3998 | lcd_print_at(0,i,text,0); |
||
3999 | 1e20: 20 e0 ldi r18, 0x00 ; 0 |
||
4000 | 1e22: ac 01 movw r20, r24 |
||
4001 | 1e24: 61 2f mov r22, r17 |
||
4002 | 1e26: 82 2f mov r24, r18 |
||
4003 | 1e28: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
4004 | lcd_print_atp(5,i,bin_parameter[i],0); |
||
4005 | 1e2c: 20 e0 ldi r18, 0x00 ; 0 |
||
4006 | 1e2e: a6 01 movw r20, r12 |
||
4007 | 1e30: 61 2f mov r22, r17 |
||
4008 | 1e32: 85 e0 ldi r24, 0x05 ; 5 |
||
4009 | 1e34: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4010 | 1e38: 1f 5f subi r17, 0xFF ; 255 |
||
4011 | 1e3a: 08 94 sec |
||
4012 | 1e3c: e1 1c adc r14, r1 |
||
4013 | 1e3e: f1 1c adc r15, r1 |
||
4014 | 1e40: 80 e1 ldi r24, 0x10 ; 16 |
||
4015 | 1e42: 90 e0 ldi r25, 0x00 ; 0 |
||
4016 | 1e44: c8 0e add r12, r24 |
||
4017 | 1e46: d9 1e adc r13, r25 |
||
4018 | 1e48: 14 30 cpi r17, 0x04 ; 4 |
||
4019 | 1e4a: 10 f3 brcs .-60 ; 0x1e10 <show_parameter+0xce> |
||
4020 | 1e4c: 2f c0 rjmp .+94 ; 0x1eac <show_parameter+0x16a> |
||
4021 | } |
||
4022 | |||
4023 | } |
||
4024 | if (number == 0) |
||
4025 | 1e4e: 88 23 and r24, r24 |
||
4026 | 1e50: 69 f5 brne .+90 ; 0x1eac <show_parameter+0x16a> |
||
4027 | { |
||
4028 | binary(p_buffer[8],bin); // Config |
||
4029 | 1e52: be 01 movw r22, r28 |
||
4030 | 1e54: 66 5e subi r22, 0xE6 ; 230 |
||
4031 | 1e56: 7f 4f sbci r23, 0xFF ; 255 |
||
4032 | 1e58: 80 91 6b 04 lds r24, 0x046B |
||
4033 | 1e5c: 0e 94 47 0e call 0x1c8e <binary> |
||
4034 | text[1] = 0x00; |
||
4035 | 1e60: 9a 82 std Y+2, r9 ; 0x02 |
||
4036 | for (i=0;i<8;i++) |
||
4037 | 1e62: 19 2d mov r17, r9 |
||
4038 | 1e64: 8b ef ldi r24, 0xFB ; 251 |
||
4039 | 1e66: c8 2e mov r12, r24 |
||
4040 | 1e68: 89 e0 ldi r24, 0x09 ; 9 |
||
4041 | 1e6a: d8 2e mov r13, r24 |
||
4042 | 1e6c: ee 24 eor r14, r14 |
||
4043 | 1e6e: ff 24 eor r15, r15 |
||
4044 | { |
||
4045 | text[0] = bin[i] + 0x30; |
||
4046 | 1e70: ce 01 movw r24, r28 |
||
4047 | 1e72: 01 96 adiw r24, 0x01 ; 1 |
||
4048 | 1e74: f7 01 movw r30, r14 |
||
4049 | 1e76: e8 0f add r30, r24 |
||
4050 | 1e78: f9 1f adc r31, r25 |
||
4051 | 1e7a: 21 8d ldd r18, Z+25 ; 0x19 |
||
4052 | 1e7c: 20 5d subi r18, 0xD0 ; 208 |
||
4053 | 1e7e: 29 83 std Y+1, r18 ; 0x01 |
||
4054 | lcd_print_at(0,i,text,0); |
||
4055 | 1e80: 20 e0 ldi r18, 0x00 ; 0 |
||
4056 | 1e82: ac 01 movw r20, r24 |
||
4057 | 1e84: 61 2f mov r22, r17 |
||
4058 | 1e86: 82 2f mov r24, r18 |
||
4059 | 1e88: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
4060 | lcd_print_atp(5,i,bin_parameter[i+4],0); |
||
4061 | 1e8c: 20 e0 ldi r18, 0x00 ; 0 |
||
4062 | 1e8e: a6 01 movw r20, r12 |
||
4063 | 1e90: 61 2f mov r22, r17 |
||
4064 | 1e92: 85 e0 ldi r24, 0x05 ; 5 |
||
4065 | 1e94: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4066 | 1e98: 1f 5f subi r17, 0xFF ; 255 |
||
4067 | 1e9a: 08 94 sec |
||
4068 | 1e9c: e1 1c adc r14, r1 |
||
4069 | 1e9e: f1 1c adc r15, r1 |
||
4070 | 1ea0: e0 e1 ldi r30, 0x10 ; 16 |
||
4071 | 1ea2: f0 e0 ldi r31, 0x00 ; 0 |
||
4072 | 1ea4: ce 0e add r12, r30 |
||
4073 | 1ea6: df 1e adc r13, r31 |
||
4074 | 1ea8: 18 30 cpi r17, 0x08 ; 8 |
||
4075 | 1eaa: 10 f3 brcs .-60 ; 0x1e70 <show_parameter+0x12e> |
||
4076 | } |
||
4077 | } |
||
4078 | |||
4079 | |||
4080 | } |
||
4081 | return line; |
||
4082 | } |
||
4083 | 1eac: 89 2d mov r24, r9 |
||
4084 | 1eae: 99 27 eor r25, r25 |
||
4085 | 1eb0: a1 96 adiw r28, 0x21 ; 33 |
||
4086 | 1eb2: 0f b6 in r0, 0x3f ; 63 |
||
4087 | 1eb4: f8 94 cli |
||
4088 | 1eb6: de bf out 0x3e, r29 ; 62 |
||
4089 | 1eb8: 0f be out 0x3f, r0 ; 63 |
||
4090 | 1eba: cd bf out 0x3d, r28 ; 61 |
||
4091 | 1ebc: df 91 pop r29 |
||
4092 | 1ebe: cf 91 pop r28 |
||
4093 | 1ec0: 1f 91 pop r17 |
||
4094 | 1ec2: 0f 91 pop r16 |
||
4095 | 1ec4: ff 90 pop r15 |
||
4096 | 1ec6: ef 90 pop r14 |
||
4097 | 1ec8: df 90 pop r13 |
||
4098 | 1eca: cf 90 pop r12 |
||
4099 | 1ecc: bf 90 pop r11 |
||
4100 | 1ece: af 90 pop r10 |
||
4101 | 1ed0: 9f 90 pop r9 |
||
4102 | 1ed2: 08 95 ret |
||
4103 | |||
4104 | 00001ed4 <edit_parameter2>: |
||
4105 | |||
4106 | void edit_parameter2 (uint8_t page, uint8_t lines) // Ändern der Parameter einer Seite |
||
4107 | { |
||
4108 | 1ed4: 8f 92 push r8 |
||
4109 | 1ed6: 9f 92 push r9 |
||
4110 | 1ed8: af 92 push r10 |
||
4111 | 1eda: bf 92 push r11 |
||
4112 | 1edc: df 92 push r13 |
||
4113 | 1ede: ef 92 push r14 |
||
4114 | 1ee0: ff 92 push r15 |
||
4115 | 1ee2: 0f 93 push r16 |
||
4116 | 1ee4: 1f 93 push r17 |
||
4117 | 1ee6: cf 93 push r28 |
||
4118 | 1ee8: df 93 push r29 |
||
4119 | 1eea: cd b7 in r28, 0x3d ; 61 |
||
4120 | 1eec: de b7 in r29, 0x3e ; 62 |
||
4121 | 1eee: 62 97 sbiw r28, 0x12 ; 18 |
||
4122 | 1ef0: 0f b6 in r0, 0x3f ; 63 |
||
4123 | 1ef2: f8 94 cli |
||
4124 | 1ef4: de bf out 0x3e, r29 ; 62 |
||
4125 | 1ef6: 0f be out 0x3f, r0 ; 63 |
||
4126 | 1ef8: cd bf out 0x3d, r28 ; 61 |
||
4127 | 1efa: d8 2e mov r13, r24 |
||
4128 | uint8_t line; |
||
4129 | uint8_t par; |
||
4130 | uint8_t min; |
||
4131 | uint8_t max; |
||
4132 | uint8_t text[10]; |
||
4133 | uint8_t bin[8]; |
||
4134 | |||
4135 | if (page > 1) // "normale" Parameter-Seiten |
||
4136 | 1efc: 81 e0 ldi r24, 0x01 ; 1 |
||
4137 | 1efe: 8d 15 cp r24, r13 |
||
4138 | 1f00: 08 f0 brcs .+2 ; 0x1f04 <edit_parameter2+0x30> |
||
4139 | 1f02: 55 c0 rjmp .+170 ; 0x1fae <edit_parameter2+0xda> |
||
4140 | { |
||
4141 | line = menu_choose(0,lines-1,4); |
||
4142 | 1f04: 61 50 subi r22, 0x01 ; 1 |
||
4143 | 1f06: 44 e0 ldi r20, 0x04 ; 4 |
||
4144 | 1f08: 80 e0 ldi r24, 0x00 ; 0 |
||
4145 | 1f0a: 0e 94 86 11 call 0x230c <menu_choose> |
||
4146 | 1f0e: 08 2f mov r16, r24 |
||
4147 | if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
||
4148 | 1f10: 8f 3f cpi r24, 0xFF ; 255 |
||
4149 | 1f12: 09 f4 brne .+2 ; 0x1f16 <edit_parameter2+0x42> |
||
4150 | 1f14: 4c c0 rjmp .+152 ; 0x1fae <edit_parameter2+0xda> |
||
4151 | { |
||
4152 | par = p_buffer[array[line]]; |
||
4153 | 1f16: e8 2e mov r14, r24 |
||
4154 | 1f18: ff 24 eor r15, r15 |
||
4155 | 1f1a: f7 01 movw r30, r14 |
||
4156 | 1f1c: e1 58 subi r30, 0x81 ; 129 |
||
4157 | 1f1e: fa 4f sbci r31, 0xFA ; 250 |
||
4158 | 1f20: 80 81 ld r24, Z |
||
4159 | 1f22: e8 2f mov r30, r24 |
||
4160 | 1f24: ff 27 eor r31, r31 |
||
4161 | 1f26: ed 59 subi r30, 0x9D ; 157 |
||
4162 | 1f28: fb 4f sbci r31, 0xFB ; 251 |
||
4163 | 1f2a: 10 81 ld r17, Z |
||
4164 | min = pgm_read_byte(p_limits + par * 3); |
||
4165 | max = pgm_read_byte(p_limits + par * 3 + 1); |
||
4166 | |||
4167 | lcd_print_atp(4,line,PSTR("-"),0); |
||
4168 | 1f2c: 20 e0 ldi r18, 0x00 ; 0 |
||
4169 | 1f2e: 49 e0 ldi r20, 0x09 ; 9 |
||
4170 | 1f30: 5c e0 ldi r21, 0x0C ; 12 |
||
4171 | 1f32: 60 2f mov r22, r16 |
||
4172 | 1f34: 84 e0 ldi r24, 0x04 ; 4 |
||
4173 | 1f36: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4174 | |||
4175 | while (key != key_nokey); |
||
4176 | 1f3a: 80 91 e6 04 lds r24, 0x04E6 |
||
4177 | 1f3e: 88 23 and r24, r24 |
||
4178 | 1f40: e1 f7 brne .-8 ; 0x1f3a <edit_parameter2+0x66> |
||
4179 | |||
4180 | do |
||
4181 | { |
||
4182 | if (key == key_minus) |
||
4183 | 1f42: 80 91 e6 04 lds r24, 0x04E6 |
||
4184 | 1f46: 81 30 cpi r24, 0x01 ; 1 |
||
4185 | 1f48: 09 f4 brne .+2 ; 0x1f4c <edit_parameter2+0x78> |
||
4186 | { |
||
4187 | //if (par > min) // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert |
||
4188 | par --; |
||
4189 | 1f4a: 11 50 subi r17, 0x01 ; 1 |
||
4190 | } |
||
4191 | if (key == key_plus) |
||
4192 | 1f4c: 80 91 e6 04 lds r24, 0x04E6 |
||
4193 | 1f50: 82 30 cpi r24, 0x02 ; 2 |
||
4194 | 1f52: 09 f4 brne .+2 ; 0x1f56 <edit_parameter2+0x82> |
||
4195 | { |
||
4196 | //if (par < max) |
||
4197 | par ++; |
||
4198 | 1f54: 1f 5f subi r17, 0xFF ; 255 |
||
4199 | } |
||
4200 | |||
4201 | decimal(par,text); |
||
4202 | 1f56: be 01 movw r22, r28 |
||
4203 | 1f58: 6f 5f subi r22, 0xFF ; 255 |
||
4204 | 1f5a: 7f 4f sbci r23, 0xFF ; 255 |
||
4205 | 1f5c: 81 2f mov r24, r17 |
||
4206 | 1f5e: 0e 94 7c 0e call 0x1cf8 <decimal> |
||
4207 | lcd_print_at(0,line,text,0); |
||
4208 | 1f62: 20 e0 ldi r18, 0x00 ; 0 |
||
4209 | 1f64: ae 01 movw r20, r28 |
||
4210 | 1f66: 4f 5f subi r20, 0xFF ; 255 |
||
4211 | 1f68: 5f 4f sbci r21, 0xFF ; 255 |
||
4212 | 1f6a: 60 2f mov r22, r16 |
||
4213 | 1f6c: 82 2f mov r24, r18 |
||
4214 | 1f6e: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
4215 | |||
4216 | timer = 20; |
||
4217 | 1f72: 84 e1 ldi r24, 0x14 ; 20 |
||
4218 | 1f74: 80 93 61 00 sts 0x0061, r24 |
||
4219 | while (timer > 0); |
||
4220 | 1f78: 80 91 61 00 lds r24, 0x0061 |
||
4221 | 1f7c: 88 23 and r24, r24 |
||
4222 | 1f7e: e1 f7 brne .-8 ; 0x1f78 <edit_parameter2+0xa4> |
||
4223 | } |
||
4224 | 1f80: 80 91 e6 04 lds r24, 0x04E6 |
||
4225 | 1f84: 84 30 cpi r24, 0x04 ; 4 |
||
4226 | 1f86: 21 f0 breq .+8 ; 0x1f90 <edit_parameter2+0xbc> |
||
4227 | 1f88: 80 91 e6 04 lds r24, 0x04E6 |
||
4228 | 1f8c: 88 30 cpi r24, 0x08 ; 8 |
||
4229 | 1f8e: c9 f6 brne .-78 ; 0x1f42 <edit_parameter2+0x6e> |
||
4230 | while ((key != 0x04) && (key != 0x08)); |
||
4231 | |||
4232 | if (key == 0x08) |
||
4233 | 1f90: 80 91 e6 04 lds r24, 0x04E6 |
||
4234 | 1f94: 88 30 cpi r24, 0x08 ; 8 |
||
4235 | 1f96: 59 f4 brne .+22 ; 0x1fae <edit_parameter2+0xda> |
||
4236 | p_buffer[array[line]] = par; |
||
4237 | 1f98: ef e7 ldi r30, 0x7F ; 127 |
||
4238 | 1f9a: f5 e0 ldi r31, 0x05 ; 5 |
||
4239 | 1f9c: ee 0e add r14, r30 |
||
4240 | 1f9e: ff 1e adc r15, r31 |
||
4241 | 1fa0: f7 01 movw r30, r14 |
||
4242 | 1fa2: 80 81 ld r24, Z |
||
4243 | 1fa4: e8 2f mov r30, r24 |
||
4244 | 1fa6: ff 27 eor r31, r31 |
||
4245 | 1fa8: ed 59 subi r30, 0x9D ; 157 |
||
4246 | 1faa: fb 4f sbci r31, 0xFB ; 251 |
||
4247 | 1fac: 10 83 st Z, r17 |
||
4248 | } |
||
4249 | } |
||
4250 | |||
4251 | if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / löschen) |
||
4252 | 1fae: f1 e0 ldi r31, 0x01 ; 1 |
||
4253 | 1fb0: df 16 cp r13, r31 |
||
4254 | 1fb2: 09 f0 breq .+2 ; 0x1fb6 <edit_parameter2+0xe2> |
||
4255 | 1fb4: 6c c0 rjmp .+216 ; 0x208e <edit_parameter2+0x1ba> |
||
4256 | { |
||
4257 | binary(p_buffer[52],bin); |
||
4258 | 1fb6: 6b e0 ldi r22, 0x0B ; 11 |
||
4259 | 1fb8: 86 2e mov r8, r22 |
||
4260 | 1fba: 91 2c mov r9, r1 |
||
4261 | 1fbc: 8c 0e add r8, r28 |
||
4262 | 1fbe: 9d 1e adc r9, r29 |
||
4263 | 1fc0: b4 01 movw r22, r8 |
||
4264 | 1fc2: 80 91 97 04 lds r24, 0x0497 |
||
4265 | 1fc6: 0e 94 47 0e call 0x1c8e <binary> |
||
4266 | text[1] = 0x00; |
||
4267 | 1fca: 1a 82 std Y+2, r1 ; 0x02 |
||
4268 | |||
4269 | line = menu_choose(0,3,4); |
||
4270 | 1fcc: 44 e0 ldi r20, 0x04 ; 4 |
||
4271 | 1fce: 63 e0 ldi r22, 0x03 ; 3 |
||
4272 | 1fd0: 8a 81 ldd r24, Y+2 ; 0x02 |
||
4273 | 1fd2: 0e 94 86 11 call 0x230c <menu_choose> |
||
4274 | 1fd6: 08 2f mov r16, r24 |
||
4275 | if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
||
4276 | 1fd8: 8f 3f cpi r24, 0xFF ; 255 |
||
4277 | 1fda: 09 f4 brne .+2 ; 0x1fde <edit_parameter2+0x10a> |
||
4278 | 1fdc: c6 c0 rjmp .+396 ; 0x216a <edit_parameter2+0x296> |
||
4279 | { |
||
4280 | par = bin[line]; |
||
4281 | 1fde: e8 2e mov r14, r24 |
||
4282 | 1fe0: ff 24 eor r15, r15 |
||
4283 | 1fe2: 5e 01 movw r10, r28 |
||
4284 | 1fe4: 08 94 sec |
||
4285 | 1fe6: a1 1c adc r10, r1 |
||
4286 | 1fe8: b1 1c adc r11, r1 |
||
4287 | 1fea: f7 01 movw r30, r14 |
||
4288 | 1fec: ea 0d add r30, r10 |
||
4289 | 1fee: fb 1d adc r31, r11 |
||
4290 | 1ff0: 12 85 ldd r17, Z+10 ; 0x0a |
||
4291 | |||
4292 | lcd_print_atp(4,line,PSTR("-"),0); |
||
4293 | 1ff2: 20 e0 ldi r18, 0x00 ; 0 |
||
4294 | 1ff4: 4b e0 ldi r20, 0x0B ; 11 |
||
4295 | 1ff6: 5c e0 ldi r21, 0x0C ; 12 |
||
4296 | 1ff8: 68 2f mov r22, r24 |
||
4297 | 1ffa: 84 e0 ldi r24, 0x04 ; 4 |
||
4298 | 1ffc: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4299 | |||
4300 | do |
||
4301 | { |
||
4302 | |||
4303 | if (key == key_minus) |
||
4304 | 2000: 80 91 e6 04 lds r24, 0x04E6 |
||
4305 | 2004: 81 30 cpi r24, 0x01 ; 1 |
||
4306 | 2006: 09 f4 brne .+2 ; 0x200a <edit_parameter2+0x136> |
||
4307 | { |
||
4308 | par = 0x00; |
||
4309 | 2008: 10 e0 ldi r17, 0x00 ; 0 |
||
4310 | } |
||
4311 | if (key == key_plus) |
||
4312 | 200a: 80 91 e6 04 lds r24, 0x04E6 |
||
4313 | 200e: 82 30 cpi r24, 0x02 ; 2 |
||
4314 | 2010: 09 f4 brne .+2 ; 0x2014 <edit_parameter2+0x140> |
||
4315 | { |
||
4316 | par = 0x01; |
||
4317 | 2012: 11 e0 ldi r17, 0x01 ; 1 |
||
4318 | } |
||
4319 | |||
4320 | text[0] = par+0x30; |
||
4321 | 2014: 10 5d subi r17, 0xD0 ; 208 |
||
4322 | 2016: 19 83 std Y+1, r17 ; 0x01 |
||
4323 | 2018: 10 53 subi r17, 0x30 ; 48 |
||
4324 | lcd_print_at(0,line,text,0); |
||
4325 | 201a: 20 e0 ldi r18, 0x00 ; 0 |
||
4326 | 201c: ae 01 movw r20, r28 |
||
4327 | 201e: 4f 5f subi r20, 0xFF ; 255 |
||
4328 | 2020: 5f 4f sbci r21, 0xFF ; 255 |
||
4329 | 2022: 60 2f mov r22, r16 |
||
4330 | 2024: 82 2f mov r24, r18 |
||
4331 | 2026: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
4332 | timer = 20; |
||
4333 | 202a: 84 e1 ldi r24, 0x14 ; 20 |
||
4334 | 202c: 80 93 61 00 sts 0x0061, r24 |
||
4335 | while (timer > 0); |
||
4336 | 2030: d0 90 61 00 lds r13, 0x0061 |
||
4337 | 2034: dd 20 and r13, r13 |
||
4338 | 2036: e1 f7 brne .-8 ; 0x2030 <edit_parameter2+0x15c> |
||
4339 | |||
4340 | |||
4341 | } |
||
4342 | 2038: 80 91 e6 04 lds r24, 0x04E6 |
||
4343 | 203c: 88 30 cpi r24, 0x08 ; 8 |
||
4344 | 203e: 21 f0 breq .+8 ; 0x2048 <edit_parameter2+0x174> |
||
4345 | 2040: 80 91 e6 04 lds r24, 0x04E6 |
||
4346 | 2044: 84 30 cpi r24, 0x04 ; 4 |
||
4347 | 2046: e1 f6 brne .-72 ; 0x2000 <edit_parameter2+0x12c> |
||
4348 | while ((key != key_enter) && (key != key_esc)); |
||
4349 | |||
4350 | if (key == key_enter) |
||
4351 | 2048: 80 91 e6 04 lds r24, 0x04E6 |
||
4352 | 204c: 88 30 cpi r24, 0x08 ; 8 |
||
4353 | 204e: 49 f4 brne .+18 ; 0x2062 <edit_parameter2+0x18e> |
||
4354 | { |
||
4355 | bin[line] = par; |
||
4356 | 2050: ea 0c add r14, r10 |
||
4357 | 2052: fb 1c adc r15, r11 |
||
4358 | 2054: f7 01 movw r30, r14 |
||
4359 | 2056: 12 87 std Z+10, r17 ; 0x0a |
||
4360 | p_buffer[52] = bindec(bin); |
||
4361 | 2058: c4 01 movw r24, r8 |
||
4362 | 205a: 0e 94 62 0e call 0x1cc4 <bindec> |
||
4363 | 205e: 80 93 97 04 sts 0x0497, r24 |
||
4364 | } |
||
4365 | |||
4366 | lcd_cls(); |
||
4367 | 2062: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
4368 | decimal(p_buffer[52],text); |
||
4369 | 2066: be 01 movw r22, r28 |
||
4370 | 2068: 6f 5f subi r22, 0xFF ; 255 |
||
4371 | 206a: 7f 4f sbci r23, 0xFF ; 255 |
||
4372 | 206c: 80 91 97 04 lds r24, 0x0497 |
||
4373 | 2070: 0e 94 7c 0e call 0x1cf8 <decimal> |
||
4374 | lcd_print(text,0); |
||
4375 | 2074: 6d 2d mov r22, r13 |
||
4376 | 2076: ce 01 movw r24, r28 |
||
4377 | 2078: 01 96 adiw r24, 0x01 ; 1 |
||
4378 | 207a: 0e 94 ea 08 call 0x11d4 <lcd_print> |
||
4379 | timer = 200; |
||
4380 | 207e: 88 ec ldi r24, 0xC8 ; 200 |
||
4381 | 2080: 80 93 61 00 sts 0x0061, r24 |
||
4382 | while(timer > 0); |
||
4383 | 2084: 80 91 61 00 lds r24, 0x0061 |
||
4384 | 2088: 88 23 and r24, r24 |
||
4385 | 208a: e1 f7 brne .-8 ; 0x2084 <edit_parameter2+0x1b0> |
||
4386 | 208c: 6e c0 rjmp .+220 ; 0x216a <edit_parameter2+0x296> |
||
4387 | } |
||
4388 | } |
||
4389 | if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen) |
||
4390 | 208e: dd 20 and r13, r13 |
||
4391 | 2090: 09 f0 breq .+2 ; 0x2094 <edit_parameter2+0x1c0> |
||
4392 | 2092: 6b c0 rjmp .+214 ; 0x216a <edit_parameter2+0x296> |
||
4393 | { |
||
4394 | binary(p_buffer[8],bin); |
||
4395 | 2094: 5b e0 ldi r21, 0x0B ; 11 |
||
4396 | 2096: 85 2e mov r8, r21 |
||
4397 | 2098: 91 2c mov r9, r1 |
||
4398 | 209a: 8c 0e add r8, r28 |
||
4399 | 209c: 9d 1e adc r9, r29 |
||
4400 | 209e: b4 01 movw r22, r8 |
||
4401 | 20a0: 80 91 6b 04 lds r24, 0x046B |
||
4402 | 20a4: 0e 94 47 0e call 0x1c8e <binary> |
||
4403 | text[1] = 0x00; |
||
4404 | 20a8: da 82 std Y+2, r13 ; 0x02 |
||
4405 | |||
4406 | line = menu_choose(0,7,4); |
||
4407 | 20aa: 44 e0 ldi r20, 0x04 ; 4 |
||
4408 | 20ac: 67 e0 ldi r22, 0x07 ; 7 |
||
4409 | 20ae: 8d 2d mov r24, r13 |
||
4410 | 20b0: 0e 94 86 11 call 0x230c <menu_choose> |
||
4411 | 20b4: 08 2f mov r16, r24 |
||
4412 | if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
||
4413 | 20b6: 8f 3f cpi r24, 0xFF ; 255 |
||
4414 | 20b8: 09 f4 brne .+2 ; 0x20bc <edit_parameter2+0x1e8> |
||
4415 | 20ba: 57 c0 rjmp .+174 ; 0x216a <edit_parameter2+0x296> |
||
4416 | { |
||
4417 | par = bin[line]; |
||
4418 | 20bc: e8 2e mov r14, r24 |
||
4419 | 20be: ff 24 eor r15, r15 |
||
4420 | 20c0: 5e 01 movw r10, r28 |
||
4421 | 20c2: 08 94 sec |
||
4422 | 20c4: a1 1c adc r10, r1 |
||
4423 | 20c6: b1 1c adc r11, r1 |
||
4424 | 20c8: f7 01 movw r30, r14 |
||
4425 | 20ca: ea 0d add r30, r10 |
||
4426 | 20cc: fb 1d adc r31, r11 |
||
4427 | 20ce: 12 85 ldd r17, Z+10 ; 0x0a |
||
4428 | |||
4429 | lcd_print_atp(4,line,PSTR("-"),0); |
||
4430 | 20d0: 2d 2d mov r18, r13 |
||
4431 | 20d2: 4d e0 ldi r20, 0x0D ; 13 |
||
4432 | 20d4: 5c e0 ldi r21, 0x0C ; 12 |
||
4433 | 20d6: 68 2f mov r22, r24 |
||
4434 | 20d8: 84 e0 ldi r24, 0x04 ; 4 |
||
4435 | 20da: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4436 | |||
4437 | do |
||
4438 | { |
||
4439 | |||
4440 | if (key == key_minus) |
||
4441 | 20de: 80 91 e6 04 lds r24, 0x04E6 |
||
4442 | 20e2: 81 30 cpi r24, 0x01 ; 1 |
||
4443 | 20e4: 09 f4 brne .+2 ; 0x20e8 <edit_parameter2+0x214> |
||
4444 | { |
||
4445 | par = 0x00; |
||
4446 | 20e6: 10 e0 ldi r17, 0x00 ; 0 |
||
4447 | } |
||
4448 | if (key == key_plus) |
||
4449 | 20e8: 80 91 e6 04 lds r24, 0x04E6 |
||
4450 | 20ec: 82 30 cpi r24, 0x02 ; 2 |
||
4451 | 20ee: 09 f4 brne .+2 ; 0x20f2 <edit_parameter2+0x21e> |
||
4452 | { |
||
4453 | par = 0x01; |
||
4454 | 20f0: 11 e0 ldi r17, 0x01 ; 1 |
||
4455 | } |
||
4456 | |||
4457 | text[0] = par+0x30; |
||
4458 | 20f2: 10 5d subi r17, 0xD0 ; 208 |
||
4459 | 20f4: 19 83 std Y+1, r17 ; 0x01 |
||
4460 | 20f6: 10 53 subi r17, 0x30 ; 48 |
||
4461 | lcd_print_at(0,line,text,0); |
||
4462 | 20f8: 20 e0 ldi r18, 0x00 ; 0 |
||
4463 | 20fa: ae 01 movw r20, r28 |
||
4464 | 20fc: 4f 5f subi r20, 0xFF ; 255 |
||
4465 | 20fe: 5f 4f sbci r21, 0xFF ; 255 |
||
4466 | 2100: 60 2f mov r22, r16 |
||
4467 | 2102: 82 2f mov r24, r18 |
||
4468 | 2104: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
4469 | timer = 20; |
||
4470 | 2108: 84 e1 ldi r24, 0x14 ; 20 |
||
4471 | 210a: 80 93 61 00 sts 0x0061, r24 |
||
4472 | while (timer > 0); |
||
4473 | 210e: d0 90 61 00 lds r13, 0x0061 |
||
4474 | 2112: dd 20 and r13, r13 |
||
4475 | 2114: e1 f7 brne .-8 ; 0x210e <edit_parameter2+0x23a> |
||
4476 | |||
4477 | |||
4478 | } |
||
4479 | 2116: 80 91 e6 04 lds r24, 0x04E6 |
||
4480 | 211a: 88 30 cpi r24, 0x08 ; 8 |
||
4481 | 211c: 21 f0 breq .+8 ; 0x2126 <edit_parameter2+0x252> |
||
4482 | 211e: 80 91 e6 04 lds r24, 0x04E6 |
||
4483 | 2122: 84 30 cpi r24, 0x04 ; 4 |
||
4484 | 2124: e1 f6 brne .-72 ; 0x20de <edit_parameter2+0x20a> |
||
4485 | while ((key != key_enter) && (key != key_esc)); |
||
4486 | |||
4487 | if (key == key_enter) |
||
4488 | 2126: 80 91 e6 04 lds r24, 0x04E6 |
||
4489 | 212a: 88 30 cpi r24, 0x08 ; 8 |
||
4490 | 212c: 49 f4 brne .+18 ; 0x2140 <edit_parameter2+0x26c> |
||
4491 | { |
||
4492 | bin[line] = par; |
||
4493 | 212e: ea 0c add r14, r10 |
||
4494 | 2130: fb 1c adc r15, r11 |
||
4495 | 2132: f7 01 movw r30, r14 |
||
4496 | 2134: 12 87 std Z+10, r17 ; 0x0a |
||
4497 | p_buffer[8] = bindec(bin); |
||
4498 | 2136: c4 01 movw r24, r8 |
||
4499 | 2138: 0e 94 62 0e call 0x1cc4 <bindec> |
||
4500 | 213c: 80 93 6b 04 sts 0x046B, r24 |
||
4501 | } |
||
4502 | |||
4503 | lcd_cls(); |
||
4504 | 2140: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
4505 | decimal(p_buffer[8],text); |
||
4506 | 2144: be 01 movw r22, r28 |
||
4507 | 2146: 6f 5f subi r22, 0xFF ; 255 |
||
4508 | 2148: 7f 4f sbci r23, 0xFF ; 255 |
||
4509 | 214a: 80 91 6b 04 lds r24, 0x046B |
||
4510 | 214e: 0e 94 7c 0e call 0x1cf8 <decimal> |
||
4511 | lcd_print(text,0); |
||
4512 | 2152: 6d 2d mov r22, r13 |
||
4513 | 2154: ce 01 movw r24, r28 |
||
4514 | 2156: 01 96 adiw r24, 0x01 ; 1 |
||
4515 | 2158: 0e 94 ea 08 call 0x11d4 <lcd_print> |
||
4516 | timer = 200; |
||
4517 | 215c: 88 ec ldi r24, 0xC8 ; 200 |
||
4518 | 215e: 80 93 61 00 sts 0x0061, r24 |
||
4519 | while(timer > 0); |
||
4520 | 2162: 80 91 61 00 lds r24, 0x0061 |
||
4521 | 2166: 88 23 and r24, r24 |
||
4522 | 2168: e1 f7 brne .-8 ; 0x2162 <edit_parameter2+0x28e> |
||
4523 | 216a: 62 96 adiw r28, 0x12 ; 18 |
||
4524 | 216c: 0f b6 in r0, 0x3f ; 63 |
||
4525 | 216e: f8 94 cli |
||
4526 | 2170: de bf out 0x3e, r29 ; 62 |
||
4527 | 2172: 0f be out 0x3f, r0 ; 63 |
||
4528 | 2174: cd bf out 0x3d, r28 ; 61 |
||
4529 | 2176: df 91 pop r29 |
||
4530 | 2178: cf 91 pop r28 |
||
4531 | 217a: 1f 91 pop r17 |
||
4532 | 217c: 0f 91 pop r16 |
||
4533 | 217e: ff 90 pop r15 |
||
4534 | 2180: ef 90 pop r14 |
||
4535 | 2182: df 90 pop r13 |
||
4536 | 2184: bf 90 pop r11 |
||
4537 | 2186: af 90 pop r10 |
||
4538 | 2188: 9f 90 pop r9 |
||
4539 | 218a: 8f 90 pop r8 |
||
4540 | 218c: 08 95 ret |
||
4541 | |||
4542 | 0000218e <edit_parameter>: |
||
4543 | } |
||
4544 | } |
||
4545 | } |
||
4546 | |||
4547 | |||
4548 | void edit_parameter (void) // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü |
||
4549 | { |
||
4550 | 218e: 1f 93 push r17 |
||
4551 | 2190: cf 93 push r28 |
||
4552 | 2192: df 93 push r29 |
||
4553 | 2194: cd b7 in r28, 0x3d ; 61 |
||
4554 | 2196: de b7 in r29, 0x3e ; 62 |
||
4555 | 2198: 2f 97 sbiw r28, 0x0f ; 15 |
||
4556 | 219a: 0f b6 in r0, 0x3f ; 63 |
||
4557 | 219c: f8 94 cli |
||
4558 | 219e: de bf out 0x3e, r29 ; 62 |
||
4559 | 21a0: 0f be out 0x3f, r0 ; 63 |
||
4560 | 21a2: cd bf out 0x3d, r28 ; 61 |
||
4561 | uint8_t page; // 12 Pages |
||
4562 | uint8_t text[15]; |
||
4563 | uint8_t lines; |
||
4564 | uint8_t parameter; |
||
4565 | |||
4566 | lcd_cls(); |
||
4567 | 21a4: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
4568 | |||
4569 | lcd_printp(PSTR("Lade Parameter\r\n"),0); |
||
4570 | 21a8: 60 e0 ldi r22, 0x00 ; 0 |
||
4571 | 21aa: 8f e0 ldi r24, 0x0F ; 15 |
||
4572 | 21ac: 9c e0 ldi r25, 0x0C ; 12 |
||
4573 | 21ae: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4574 | lcd_printp(PSTR(" 1:\r\n"),0); |
||
4575 | 21b2: 60 e0 ldi r22, 0x00 ; 0 |
||
4576 | 21b4: 80 e2 ldi r24, 0x20 ; 32 |
||
4577 | 21b6: 9c e0 ldi r25, 0x0C ; 12 |
||
4578 | 21b8: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4579 | lcd_printp(PSTR(" 2:\r\n"),0); |
||
4580 | 21bc: 60 e0 ldi r22, 0x00 ; 0 |
||
4581 | 21be: 86 e2 ldi r24, 0x26 ; 38 |
||
4582 | 21c0: 9c e0 ldi r25, 0x0C ; 12 |
||
4583 | 21c2: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4584 | lcd_printp(PSTR(" 3:\r\n"),0); |
||
4585 | 21c6: 60 e0 ldi r22, 0x00 ; 0 |
||
4586 | 21c8: 8c e2 ldi r24, 0x2C ; 44 |
||
4587 | 21ca: 9c e0 ldi r25, 0x0C ; 12 |
||
4588 | 21cc: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4589 | lcd_printp(PSTR(" 4:\r\n"),0); |
||
4590 | 21d0: 60 e0 ldi r22, 0x00 ; 0 |
||
4591 | 21d2: 82 e3 ldi r24, 0x32 ; 50 |
||
4592 | 21d4: 9c e0 ldi r25, 0x0C ; 12 |
||
4593 | 21d6: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4594 | lcd_printp(PSTR(" 5:\r\n"),0); |
||
4595 | 21da: 60 e0 ldi r22, 0x00 ; 0 |
||
4596 | 21dc: 88 e3 ldi r24, 0x38 ; 56 |
||
4597 | 21de: 9c e0 ldi r25, 0x0C ; 12 |
||
4598 | 21e0: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4599 | |||
4600 | parameter = menu_choose(1,5,0); |
||
4601 | 21e4: 40 e0 ldi r20, 0x00 ; 0 |
||
4602 | 21e6: 65 e0 ldi r22, 0x05 ; 5 |
||
4603 | 21e8: 81 e0 ldi r24, 0x01 ; 1 |
||
4604 | 21ea: 0e 94 86 11 call 0x230c <menu_choose> |
||
4605 | |||
4606 | page = 2; |
||
4607 | 21ee: 12 e0 ldi r17, 0x02 ; 2 |
||
4608 | if (read_parameter(parameter) == 1) |
||
4609 | 21f0: 0e 94 02 0e call 0x1c04 <read_parameter> |
||
4610 | 21f4: 81 30 cpi r24, 0x01 ; 1 |
||
4611 | 21f6: 41 f4 brne .+16 ; 0x2208 <edit_parameter+0x7a> |
||
4612 | { |
||
4613 | lcd_print_atp(0,6,PSTR("Timeout"),0); |
||
4614 | 21f8: 20 e0 ldi r18, 0x00 ; 0 |
||
4615 | 21fa: 4e e3 ldi r20, 0x3E ; 62 |
||
4616 | 21fc: 5c e0 ldi r21, 0x0C ; 12 |
||
4617 | 21fe: 66 e0 ldi r22, 0x06 ; 6 |
||
4618 | 2200: 82 2f mov r24, r18 |
||
4619 | 2202: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4620 | 2206: 5c c0 rjmp .+184 ; 0x22c0 <edit_parameter+0x132> |
||
4621 | } |
||
4622 | else |
||
4623 | { |
||
4624 | do |
||
4625 | { |
||
4626 | lcd_cls(); |
||
4627 | 2208: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
4628 | utoa(page,text,10); |
||
4629 | 220c: 4a e0 ldi r20, 0x0A ; 10 |
||
4630 | 220e: 50 e0 ldi r21, 0x00 ; 0 |
||
4631 | 2210: be 01 movw r22, r28 |
||
4632 | 2212: 6f 5f subi r22, 0xFF ; 255 |
||
4633 | 2214: 7f 4f sbci r23, 0xFF ; 255 |
||
4634 | 2216: 81 2f mov r24, r17 |
||
4635 | 2218: 99 27 eor r25, r25 |
||
4636 | 221a: 0e 94 f0 12 call 0x25e0 <utoa> |
||
4637 | lcd_print(text,0); |
||
4638 | 221e: 60 e0 ldi r22, 0x00 ; 0 |
||
4639 | 2220: ce 01 movw r24, r28 |
||
4640 | 2222: 01 96 adiw r24, 0x01 ; 1 |
||
4641 | 2224: 0e 94 ea 08 call 0x11d4 <lcd_print> |
||
4642 | timer = 50; |
||
4643 | 2228: 82 e3 ldi r24, 0x32 ; 50 |
||
4644 | 222a: 80 93 61 00 sts 0x0061, r24 |
||
4645 | |||
4646 | while (timer > 0); |
||
4647 | 222e: 80 91 61 00 lds r24, 0x0061 |
||
4648 | 2232: 88 23 and r24, r24 |
||
4649 | 2234: e1 f7 brne .-8 ; 0x222e <edit_parameter+0xa0> |
||
4650 | |||
4651 | lcd_cls(); |
||
4652 | 2236: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
4653 | |||
4654 | lines = show_parameter(page); |
||
4655 | 223a: 81 2f mov r24, r17 |
||
4656 | 223c: 0e 94 a1 0e call 0x1d42 <show_parameter> |
||
4657 | 2240: 68 2f mov r22, r24 |
||
4658 | |||
4659 | while (key == key_nokey); |
||
4660 | 2242: 80 91 e6 04 lds r24, 0x04E6 |
||
4661 | 2246: 88 23 and r24, r24 |
||
4662 | 2248: e1 f3 breq .-8 ; 0x2242 <edit_parameter+0xb4> |
||
4663 | if (key == key_plus) |
||
4664 | 224a: 80 91 e6 04 lds r24, 0x04E6 |
||
4665 | 224e: 82 30 cpi r24, 0x02 ; 2 |
||
4666 | 2250: 09 f4 brne .+2 ; 0x2254 <edit_parameter+0xc6> |
||
4667 | page++; |
||
4668 | 2252: 1f 5f subi r17, 0xFF ; 255 |
||
4669 | if (key == key_minus) |
||
4670 | 2254: 80 91 e6 04 lds r24, 0x04E6 |
||
4671 | 2258: 81 30 cpi r24, 0x01 ; 1 |
||
4672 | 225a: 09 f4 brne .+2 ; 0x225e <edit_parameter+0xd0> |
||
4673 | page--; |
||
4674 | 225c: 11 50 subi r17, 0x01 ; 1 |
||
4675 | |||
4676 | if (page == 255) |
||
4677 | 225e: 1f 3f cpi r17, 0xFF ; 255 |
||
4678 | 2260: 11 f4 brne .+4 ; 0x2266 <edit_parameter+0xd8> |
||
4679 | page = 12; |
||
4680 | 2262: 1c e0 ldi r17, 0x0C ; 12 |
||
4681 | 2264: 03 c0 rjmp .+6 ; 0x226c <edit_parameter+0xde> |
||
4682 | |||
4683 | if (page > 12) |
||
4684 | 2266: 1d 30 cpi r17, 0x0D ; 13 |
||
4685 | 2268: 08 f0 brcs .+2 ; 0x226c <edit_parameter+0xde> |
||
4686 | page = 0; |
||
4687 | 226a: 10 e0 ldi r17, 0x00 ; 0 |
||
4688 | |||
4689 | if (key == key_enter) |
||
4690 | 226c: 80 91 e6 04 lds r24, 0x04E6 |
||
4691 | 2270: 88 30 cpi r24, 0x08 ; 8 |
||
4692 | 2272: 19 f4 brne .+6 ; 0x227a <edit_parameter+0xec> |
||
4693 | edit_parameter2(page,lines); |
||
4694 | 2274: 81 2f mov r24, r17 |
||
4695 | 2276: 0e 94 6a 0f call 0x1ed4 <edit_parameter2> |
||
4696 | |||
4697 | } |
||
4698 | 227a: 80 91 e6 04 lds r24, 0x04E6 |
||
4699 | 227e: 84 30 cpi r24, 0x04 ; 4 |
||
4700 | 2280: 19 f6 brne .-122 ; 0x2208 <edit_parameter+0x7a> |
||
4701 | while (key != key_esc); |
||
4702 | |||
4703 | lcd_cls(); |
||
4704 | 2282: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
4705 | lcd_printp(PSTR("Parameter speichern?\r\n ja\r\n nein"),0); |
||
4706 | 2286: 60 e0 ldi r22, 0x00 ; 0 |
||
4707 | 2288: 86 e4 ldi r24, 0x46 ; 70 |
||
4708 | 228a: 9c e0 ldi r25, 0x0C ; 12 |
||
4709 | 228c: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4710 | |||
4711 | lines = menu_choose(1,2,0); |
||
4712 | 2290: 40 e0 ldi r20, 0x00 ; 0 |
||
4713 | 2292: 62 e0 ldi r22, 0x02 ; 2 |
||
4714 | 2294: 81 e0 ldi r24, 0x01 ; 1 |
||
4715 | 2296: 0e 94 86 11 call 0x230c <menu_choose> |
||
4716 | |||
4717 | if (lines == 1 ) |
||
4718 | 229a: 81 30 cpi r24, 0x01 ; 1 |
||
4719 | 229c: 61 f4 brne .+24 ; 0x22b6 <edit_parameter+0x128> |
||
4720 | { |
||
4721 | lcd_printp(PSTR("\r\n--->"),0); |
||
4722 | 229e: 60 e0 ldi r22, 0x00 ; 0 |
||
4723 | 22a0: 89 e6 ldi r24, 0x69 ; 105 |
||
4724 | 22a2: 9c e0 ldi r25, 0x0C ; 12 |
||
4725 | 22a4: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4726 | write_parameter(5); // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert. |
||
4727 | 22a8: 85 e0 ldi r24, 0x05 ; 5 |
||
4728 | 22aa: 0e 94 2c 0e call 0x1c58 <write_parameter> |
||
4729 | lcd_printp(PSTR("\r\nParameter gespeichert"),0); |
||
4730 | 22ae: 60 e0 ldi r22, 0x00 ; 0 |
||
4731 | 22b0: 80 e7 ldi r24, 0x70 ; 112 |
||
4732 | 22b2: 9c e0 ldi r25, 0x0C ; 12 |
||
4733 | 22b4: 03 c0 rjmp .+6 ; 0x22bc <edit_parameter+0x12e> |
||
4734 | } |
||
4735 | else |
||
4736 | { |
||
4737 | lcd_printp(PSTR("\r\nNicht gespeichert"),0); |
||
4738 | 22b6: 60 e0 ldi r22, 0x00 ; 0 |
||
4739 | 22b8: 88 e8 ldi r24, 0x88 ; 136 |
||
4740 | 22ba: 9c e0 ldi r25, 0x0C ; 12 |
||
4741 | 22bc: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4742 | } |
||
4743 | } |
||
4744 | timer = 100; |
||
4745 | 22c0: 84 e6 ldi r24, 0x64 ; 100 |
||
4746 | 22c2: 80 93 61 00 sts 0x0061, r24 |
||
4747 | while(timer > 0); |
||
4748 | 22c6: 80 91 61 00 lds r24, 0x0061 |
||
4749 | 22ca: 88 23 and r24, r24 |
||
4750 | 22cc: e1 f7 brne .-8 ; 0x22c6 <edit_parameter+0x138> |
||
4751 | 22ce: 2f 96 adiw r28, 0x0f ; 15 |
||
4752 | 22d0: 0f b6 in r0, 0x3f ; 63 |
||
4753 | 22d2: f8 94 cli |
||
4754 | 22d4: de bf out 0x3e, r29 ; 62 |
||
4755 | 22d6: 0f be out 0x3f, r0 ; 63 |
||
4756 | 22d8: cd bf out 0x3d, r28 ; 61 |
||
4757 | 22da: df 91 pop r29 |
||
4758 | 22dc: cf 91 pop r28 |
||
4759 | 22de: 1f 91 pop r17 |
||
4760 | 22e0: 08 95 ret |
||
4761 | |||
4762 | 000022e2 <menu_set_cursor>: |
||
4763 | |||
4764 | // Subroutine für den Stern (*) bzw. Cursor |
||
4765 | |||
4766 | void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos) |
||
4767 | { |
||
4768 | 22e2: 0f 93 push r16 |
||
4769 | 22e4: 1f 93 push r17 |
||
4770 | 22e6: 06 2f mov r16, r22 |
||
4771 | 22e8: 14 2f mov r17, r20 |
||
4772 | lcd_print_atp(pos,before,PSTR(" "),0); // Die vorhergehende Position löschen |
||
4773 | 22ea: 20 e0 ldi r18, 0x00 ; 0 |
||
4774 | 22ec: 4c e9 ldi r20, 0x9C ; 156 |
||
4775 | 22ee: 5c e0 ldi r21, 0x0C ; 12 |
||
4776 | 22f0: 68 2f mov r22, r24 |
||
4777 | 22f2: 81 2f mov r24, r17 |
||
4778 | 22f4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4779 | lcd_print_atp(pos,line,PSTR("*"),0); // Den Cursor an der aktuellen Position anzeigen |
||
4780 | 22f8: 20 e0 ldi r18, 0x00 ; 0 |
||
4781 | 22fa: 4e e9 ldi r20, 0x9E ; 158 |
||
4782 | 22fc: 5c e0 ldi r21, 0x0C ; 12 |
||
4783 | 22fe: 60 2f mov r22, r16 |
||
4784 | 2300: 81 2f mov r24, r17 |
||
4785 | 2302: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
||
4786 | 2306: 1f 91 pop r17 |
||
4787 | 2308: 0f 91 pop r16 |
||
4788 | 230a: 08 95 ret |
||
4789 | |||
4790 | 0000230c <menu_choose>: |
||
4791 | } |
||
4792 | |||
4793 | |||
4794 | // Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max. |
||
4795 | // Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden. |
||
4796 | // Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben. |
||
4797 | |||
4798 | uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos) |
||
4799 | { |
||
4800 | 230c: ef 92 push r14 |
||
4801 | 230e: ff 92 push r15 |
||
4802 | 2310: 0f 93 push r16 |
||
4803 | 2312: 1f 93 push r17 |
||
4804 | 2314: cf 93 push r28 |
||
4805 | 2316: f8 2e mov r15, r24 |
||
4806 | 2318: e6 2e mov r14, r22 |
||
4807 | 231a: 04 2f mov r16, r20 |
||
4808 | uint8_t line, before; |
||
4809 | |||
4810 | line = min; |
||
4811 | 231c: c8 2f mov r28, r24 |
||
4812 | before = min; |
||
4813 | 231e: 18 2f mov r17, r24 |
||
4814 | menu_set_cursor(line,line,pos); |
||
4815 | 2320: 68 2f mov r22, r24 |
||
4816 | 2322: 0e 94 71 11 call 0x22e2 <menu_set_cursor> |
||
4817 | |||
4818 | do |
||
4819 | { |
||
4820 | while (key != key_nokey); |
||
4821 | 2326: 80 91 e6 04 lds r24, 0x04E6 |
||
4822 | 232a: 88 23 and r24, r24 |
||
4823 | 232c: e1 f7 brne .-8 ; 0x2326 <menu_choose+0x1a> |
||
4824 | while(key == key_nokey); |
||
4825 | 232e: 80 91 e6 04 lds r24, 0x04E6 |
||
4826 | 2332: 88 23 and r24, r24 |
||
4827 | 2334: e1 f3 breq .-8 ; 0x232e <menu_choose+0x22> |
||
4828 | |||
4829 | if ((key == key_plus) && (line < max)) |
||
4830 | 2336: 80 91 e6 04 lds r24, 0x04E6 |
||
4831 | 233a: 82 30 cpi r24, 0x02 ; 2 |
||
4832 | 233c: 19 f4 brne .+6 ; 0x2344 <menu_choose+0x38> |
||
4833 | 233e: ce 15 cp r28, r14 |
||
4834 | 2340: 08 f4 brcc .+2 ; 0x2344 <menu_choose+0x38> |
||
4835 | line ++; |
||
4836 | 2342: cf 5f subi r28, 0xFF ; 255 |
||
4837 | if ((key == key_minus) && (line > min)) |
||
4838 | 2344: 80 91 e6 04 lds r24, 0x04E6 |
||
4839 | 2348: 81 30 cpi r24, 0x01 ; 1 |
||
4840 | 234a: 19 f4 brne .+6 ; 0x2352 <menu_choose+0x46> |
||
4841 | 234c: fc 16 cp r15, r28 |
||
4842 | 234e: 08 f4 brcc .+2 ; 0x2352 <menu_choose+0x46> |
||
4843 | line --; |
||
4844 | 2350: c1 50 subi r28, 0x01 ; 1 |
||
4845 | |||
4846 | menu_set_cursor(before,line,pos); |
||
4847 | 2352: 40 2f mov r20, r16 |
||
4848 | 2354: 6c 2f mov r22, r28 |
||
4849 | 2356: 81 2f mov r24, r17 |
||
4850 | 2358: 0e 94 71 11 call 0x22e2 <menu_set_cursor> |
||
4851 | before = line; |
||
4852 | 235c: 1c 2f mov r17, r28 |
||
4853 | } |
||
4854 | 235e: 80 91 e6 04 lds r24, 0x04E6 |
||
4855 | 2362: 88 30 cpi r24, 0x08 ; 8 |
||
4856 | 2364: 21 f0 breq .+8 ; 0x236e <menu_choose+0x62> |
||
4857 | 2366: 80 91 e6 04 lds r24, 0x04E6 |
||
4858 | 236a: 84 30 cpi r24, 0x04 ; 4 |
||
4859 | 236c: e1 f6 brne .-72 ; 0x2326 <menu_choose+0x1a> |
||
4860 | while ((key != key_enter) && (key != key_esc)); // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde |
||
4861 | if (key == key_esc) |
||
4862 | 236e: 80 91 e6 04 lds r24, 0x04E6 |
||
4863 | 2372: 84 30 cpi r24, 0x04 ; 4 |
||
4864 | 2374: 09 f4 brne .+2 ; 0x2378 <menu_choose+0x6c> |
||
4865 | line = 255; |
||
4866 | 2376: cf ef ldi r28, 0xFF ; 255 |
||
4867 | while (key != key_nokey); // Warten, bis Taste wieder losgelassen wurde |
||
4868 | 2378: 80 91 e6 04 lds r24, 0x04E6 |
||
4869 | 237c: 88 23 and r24, r24 |
||
4870 | 237e: e1 f7 brne .-8 ; 0x2378 <menu_choose+0x6c> |
||
4871 | return line; |
||
4872 | } |
||
4873 | 2380: 8c 2f mov r24, r28 |
||
4874 | 2382: 99 27 eor r25, r25 |
||
4875 | 2384: cf 91 pop r28 |
||
4876 | 2386: 1f 91 pop r17 |
||
4877 | 2388: 0f 91 pop r16 |
||
4878 | 238a: ff 90 pop r15 |
||
4879 | 238c: ef 90 pop r14 |
||
4880 | 238e: 08 95 ret |
||
4881 | |||
4882 | 00002390 <main_menu>: |
||
4883 | |||
4884 | void main_menu (void) |
||
4885 | { |
||
4886 | lcd_cls(); |
||
4887 | 2390: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
4888 | lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0); |
||
4889 | 2394: 60 e0 ldi r22, 0x00 ; 0 |
||
4890 | 2396: 80 ea ldi r24, 0xA0 ; 160 |
||
4891 | 2398: 9c e0 ldi r25, 0x0C ; 12 |
||
4892 | 239a: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4893 | lcd_printp(PSTR("\r\nDisplay\r\n"),0); |
||
4894 | 239e: 60 e0 ldi r22, 0x00 ; 0 |
||
4895 | 23a0: 87 eb ldi r24, 0xB7 ; 183 |
||
4896 | 23a2: 9c e0 ldi r25, 0x0C ; 12 |
||
4897 | 23a4: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4898 | lcd_printp(PSTR("Parameter\r\n"),0); |
||
4899 | 23a8: 60 e0 ldi r22, 0x00 ; 0 |
||
4900 | 23aa: 83 ec ldi r24, 0xC3 ; 195 |
||
4901 | 23ac: 9c e0 ldi r25, 0x0C ; 12 |
||
4902 | 23ae: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4903 | lcd_printp(PSTR("Motortest"),0); |
||
4904 | 23b2: 60 e0 ldi r22, 0x00 ; 0 |
||
4905 | 23b4: 8f ec ldi r24, 0xCF ; 207 |
||
4906 | 23b6: 9c e0 ldi r25, 0x0C ; 12 |
||
4907 | 23b8: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
4908 | |||
4909 | switch(menu_choose(2,4,10)) |
||
4910 | 23bc: 4a e0 ldi r20, 0x0A ; 10 |
||
4911 | 23be: 64 e0 ldi r22, 0x04 ; 4 |
||
4912 | 23c0: 82 e0 ldi r24, 0x02 ; 2 |
||
4913 | 23c2: 0e 94 86 11 call 0x230c <menu_choose> |
||
4914 | 23c6: 99 27 eor r25, r25 |
||
4915 | 23c8: 83 30 cpi r24, 0x03 ; 3 |
||
4916 | 23ca: 91 05 cpc r25, r1 |
||
4917 | 23cc: 61 f0 breq .+24 ; 0x23e6 <main_menu+0x56> |
||
4918 | 23ce: 84 30 cpi r24, 0x04 ; 4 |
||
4919 | 23d0: 91 05 cpc r25, r1 |
||
4920 | 23d2: 1c f4 brge .+6 ; 0x23da <main_menu+0x4a> |
||
4921 | 23d4: 02 97 sbiw r24, 0x02 ; 2 |
||
4922 | 23d6: 21 f0 breq .+8 ; 0x23e0 <main_menu+0x50> |
||
4923 | 23d8: 08 95 ret |
||
4924 | 23da: 04 97 sbiw r24, 0x04 ; 4 |
||
4925 | 23dc: 39 f0 breq .+14 ; 0x23ec <main_menu+0x5c> |
||
4926 | 23de: 08 95 ret |
||
4927 | { |
||
4928 | case 2: |
||
4929 | display_data(); // LCD-Modus |
||
4930 | 23e0: 0e 94 23 12 call 0x2446 <display_data> |
||
4931 | break; |
||
4932 | 23e4: 08 95 ret |
||
4933 | case 3: |
||
4934 | edit_parameter(); // Parameter (Settings) laden/editieren |
||
4935 | 23e6: 0e 94 c7 10 call 0x218e <edit_parameter> |
||
4936 | break; |
||
4937 | 23ea: 08 95 ret |
||
4938 | case 4: |
||
4939 | motor_test(); // primitiver Motor-Test |
||
4940 | 23ec: 0e 94 83 12 call 0x2506 <motor_test> |
||
4941 | 23f0: 08 95 ret |
||
4942 | |||
4943 | 000023f2 <read_display>: |
||
4944 | #include "parameter.h" |
||
4945 | #include "menu.h" |
||
4946 | |||
4947 | uint8_t read_display (uint8_t command) // |
||
4948 | { |
||
4949 | 23f2: cf 93 push r28 |
||
4950 | uint8_t timeout; |
||
4951 | |||
4952 | timeout = 0; |
||
4953 | 23f4: c0 e0 ldi r28, 0x00 ; 0 |
||
4954 | p_buffer[0] = '#'; // Display-Zeile anfordern |
||
4955 | 23f6: 93 e2 ldi r25, 0x23 ; 35 |
||
4956 | 23f8: 90 93 63 04 sts 0x0463, r25 |
||
4957 | p_buffer[1] = 'a'; |
||
4958 | 23fc: 91 e6 ldi r25, 0x61 ; 97 |
||
4959 | 23fe: 90 93 64 04 sts 0x0464, r25 |
||
4960 | p_buffer[2] = 'h'; |
||
4961 | 2402: 98 e6 ldi r25, 0x68 ; 104 |
||
4962 | 2404: 90 93 65 04 sts 0x0465, r25 |
||
4963 | p_buffer[3] = command; |
||
4964 | 2408: 80 93 66 04 sts 0x0466, r24 |
||
4965 | p_buffer[4] = 0; |
||
4966 | 240c: c0 93 67 04 sts 0x0467, r28 |
||
4967 | p_buffer[5] = 0; |
||
4968 | 2410: c0 93 68 04 sts 0x0468, r28 |
||
4969 | base64_send(6); |
||
4970 | 2414: 86 e0 ldi r24, 0x06 ; 6 |
||
4971 | 2416: 0e 94 bc 0c call 0x1978 <base64_send> |
||
4972 | |||
4973 | do // warten, bis die Parameter gesendet werden |
||
4974 | { |
||
4975 | if (get_message() == 1) |
||
4976 | 241a: 0e 94 95 0c call 0x192a <get_message> |
||
4977 | 241e: 81 30 cpi r24, 0x01 ; 1 |
||
4978 | 2420: 09 f4 brne .+2 ; 0x2424 <read_display+0x32> |
||
4979 | timeout = 10; |
||
4980 | 2422: ca e0 ldi r28, 0x0A ; 10 |
||
4981 | timeout ++; |
||
4982 | 2424: cf 5f subi r28, 0xFF ; 255 |
||
4983 | } |
||
4984 | 2426: 80 91 ea 04 lds r24, 0x04EA |
||
4985 | 242a: 80 53 subi r24, 0x30 ; 48 |
||
4986 | 242c: 85 30 cpi r24, 0x05 ; 5 |
||
4987 | 242e: 10 f0 brcs .+4 ; 0x2434 <read_display+0x42> |
||
4988 | 2430: ca 30 cpi r28, 0x0A ; 10 |
||
4989 | 2432: 98 f3 brcs .-26 ; 0x241a <read_display+0x28> |
||
4990 | while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10)); |
||
4991 | |||
4992 | if (timeout >= 10) |
||
4993 | 2434: ca 30 cpi r28, 0x0A ; 10 |
||
4994 | 2436: 18 f0 brcs .+6 ; 0x243e <read_display+0x4c> |
||
4995 | return 1; |
||
4996 | 2438: 81 e0 ldi r24, 0x01 ; 1 |
||
4997 | 243a: 90 e0 ldi r25, 0x00 ; 0 |
||
4998 | 243c: 02 c0 rjmp .+4 ; 0x2442 <read_display+0x50> |
||
4999 | else |
||
5000 | return 0; |
||
5001 | 243e: 80 e0 ldi r24, 0x00 ; 0 |
||
5002 | 2440: 90 e0 ldi r25, 0x00 ; 0 |
||
5003 | 2442: cf 91 pop r28 |
||
5004 | 2444: 08 95 ret |
||
5005 | |||
5006 | 00002446 <display_data>: |
||
5007 | } |
||
5008 | |||
5009 | void display_data (void) |
||
5010 | { |
||
5011 | 2446: 0f 93 push r16 |
||
5012 | 2448: 1f 93 push r17 |
||
5013 | 244a: cf 93 push r28 |
||
5014 | 244c: df 93 push r29 |
||
5015 | 244e: cd b7 in r28, 0x3d ; 61 |
||
5016 | 2450: de b7 in r29, 0x3e ; 62 |
||
5017 | 2452: 2a 97 sbiw r28, 0x0a ; 10 |
||
5018 | 2454: 0f b6 in r0, 0x3f ; 63 |
||
5019 | 2456: f8 94 cli |
||
5020 | 2458: de bf out 0x3e, r29 ; 62 |
||
5021 | 245a: 0f be out 0x3f, r0 ; 63 |
||
5022 | 245c: cd bf out 0x3d, r28 ; 61 |
||
5023 | uint8_t line; |
||
5024 | uint8_t text[10]; |
||
5025 | |||
5026 | lcd_cls(); |
||
5027 | 245e: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
5028 | lcd_printp(PSTR("Display"),0); |
||
5029 | 2462: 60 e0 ldi r22, 0x00 ; 0 |
||
5030 | 2464: 89 ed ldi r24, 0xD9 ; 217 |
||
5031 | 2466: 9c e0 ldi r25, 0x0C ; 12 |
||
5032 | 2468: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
5033 | do |
||
5034 | { |
||
5035 | while (key != 0x00); |
||
5036 | 246c: 00 91 e6 04 lds r16, 0x04E6 |
||
5037 | 2470: 00 23 and r16, r16 |
||
5038 | 2472: e1 f7 brne .-8 ; 0x246c <display_data+0x26> |
||
5039 | if (read_display(0) == 1) |
||
5040 | 2474: 80 2f mov r24, r16 |
||
5041 | 2476: 0e 94 f9 11 call 0x23f2 <read_display> |
||
5042 | 247a: 81 30 cpi r24, 0x01 ; 1 |
||
5043 | 247c: 69 f4 brne .+26 ; 0x2498 <display_data+0x52> |
||
5044 | { |
||
5045 | lcd_printp(PSTR("\r\nTimeout!"),0); |
||
5046 | 247e: 60 2f mov r22, r16 |
||
5047 | 2480: 81 ee ldi r24, 0xE1 ; 225 |
||
5048 | 2482: 9c e0 ldi r25, 0x0C ; 12 |
||
5049 | 2484: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
5050 | timer = 200; |
||
5051 | 2488: 88 ec ldi r24, 0xC8 ; 200 |
||
5052 | 248a: 80 93 61 00 sts 0x0061, r24 |
||
5053 | while (timer > 0); |
||
5054 | 248e: 80 91 61 00 lds r24, 0x0061 |
||
5055 | 2492: 88 23 and r24, r24 |
||
5056 | 2494: e1 f7 brne .-8 ; 0x248e <display_data+0x48> |
||
5057 | break; |
||
5058 | 2496: 2c c0 rjmp .+88 ; 0x24f0 <display_data+0xaa> |
||
5059 | } |
||
5060 | else |
||
5061 | { |
||
5062 | line = r_buffer[1]; |
||
5063 | 2498: 10 91 ea 04 lds r17, 0x04EA |
||
5064 | text[0] = line; |
||
5065 | 249c: 19 83 std Y+1, r17 ; 0x01 |
||
5066 | text[1] = 0x00; |
||
5067 | 249e: 0a 83 std Y+2, r16 ; 0x02 |
||
5068 | lcd_print_at(10,0,text,0); |
||
5069 | 24a0: 20 2f mov r18, r16 |
||
5070 | 24a2: ae 01 movw r20, r28 |
||
5071 | 24a4: 4f 5f subi r20, 0xFF ; 255 |
||
5072 | 24a6: 5f 4f sbci r21, 0xFF ; 255 |
||
5073 | 24a8: 60 2f mov r22, r16 |
||
5074 | 24aa: 8a e0 ldi r24, 0x0A ; 10 |
||
5075 | 24ac: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
5076 | |||
5077 | lcd_print_at(0,line+1,p_buffer,0); |
||
5078 | 24b0: 1f 5f subi r17, 0xFF ; 255 |
||
5079 | 24b2: 20 2f mov r18, r16 |
||
5080 | 24b4: 43 e6 ldi r20, 0x63 ; 99 |
||
5081 | 24b6: 54 e0 ldi r21, 0x04 ; 4 |
||
5082 | 24b8: 61 2f mov r22, r17 |
||
5083 | 24ba: 80 2f mov r24, r16 |
||
5084 | 24bc: 0e 94 1d 09 call 0x123a <lcd_print_at> |
||
5085 | |||
5086 | timer = 10; |
||
5087 | 24c0: 8a e0 ldi r24, 0x0A ; 10 |
||
5088 | 24c2: 80 93 61 00 sts 0x0061, r24 |
||
5089 | while(timer > 0); |
||
5090 | 24c6: 80 91 61 00 lds r24, 0x0061 |
||
5091 | 24ca: 88 23 and r24, r24 |
||
5092 | 24cc: e1 f7 brne .-8 ; 0x24c6 <display_data+0x80> |
||
5093 | |||
5094 | if (key == 0x01) |
||
5095 | 24ce: 80 91 e6 04 lds r24, 0x04E6 |
||
5096 | 24d2: 81 30 cpi r24, 0x01 ; 1 |
||
5097 | 24d4: 11 f4 brne .+4 ; 0x24da <display_data+0x94> |
||
5098 | read_display(1); |
||
5099 | 24d6: 0e 94 f9 11 call 0x23f2 <read_display> |
||
5100 | if (key == 0x02) |
||
5101 | 24da: 80 91 e6 04 lds r24, 0x04E6 |
||
5102 | 24de: 82 30 cpi r24, 0x02 ; 2 |
||
5103 | 24e0: 11 f4 brne .+4 ; 0x24e6 <display_data+0xa0> |
||
5104 | read_display(2); |
||
5105 | 24e2: 0e 94 f9 11 call 0x23f2 <read_display> |
||
5106 | } |
||
5107 | |||
5108 | } |
||
5109 | 24e6: 80 91 e6 04 lds r24, 0x04E6 |
||
5110 | 24ea: 84 30 cpi r24, 0x04 ; 4 |
||
5111 | 24ec: 09 f0 breq .+2 ; 0x24f0 <display_data+0xaa> |
||
5112 | 24ee: be cf rjmp .-132 ; 0x246c <display_data+0x26> |
||
5113 | 24f0: 2a 96 adiw r28, 0x0a ; 10 |
||
5114 | 24f2: 0f b6 in r0, 0x3f ; 63 |
||
5115 | 24f4: f8 94 cli |
||
5116 | 24f6: de bf out 0x3e, r29 ; 62 |
||
5117 | 24f8: 0f be out 0x3f, r0 ; 63 |
||
5118 | 24fa: cd bf out 0x3d, r28 ; 61 |
||
5119 | 24fc: df 91 pop r29 |
||
5120 | 24fe: cf 91 pop r28 |
||
5121 | 2500: 1f 91 pop r17 |
||
5122 | 2502: 0f 91 pop r16 |
||
5123 | 2504: 08 95 ret |
||
5124 | |||
5125 | 00002506 <motor_test>: |
||
5126 | #include "base64.h" |
||
5127 | |||
5128 | void motor_test(void) |
||
5129 | { |
||
5130 | lcd_cls(); |
||
5131 | 2506: 0e 94 36 07 call 0xe6c <lcd_cls> |
||
5132 | |||
5133 | while (key != 0x00); |
||
5134 | 250a: 60 91 e6 04 lds r22, 0x04E6 |
||
5135 | 250e: 66 23 and r22, r22 |
||
5136 | 2510: e1 f7 brne .-8 ; 0x250a <motor_test+0x4> |
||
5137 | |||
5138 | lcd_printp(PSTR("Taste drücken\r\n"),0); |
||
5139 | 2512: 8c ee ldi r24, 0xEC ; 236 |
||
5140 | 2514: 9c e0 ldi r25, 0x0C ; 12 |
||
5141 | 2516: 0e 94 aa 08 call 0x1154 <lcd_printp> |
||
5142 | |||
5143 | while (key == 0x00); |
||
5144 | 251a: 80 91 e6 04 lds r24, 0x04E6 |
||
5145 | 251e: 88 23 and r24, r24 |
||
5146 | 2520: e1 f3 breq .-8 ; 0x251a <motor_test+0x14> |
||
5147 | if (key == 0x08) // nur, wenn die Bestätigungstaste gedrückt wird |
||
5148 | 2522: 80 91 e6 04 lds r24, 0x04E6 |
||
5149 | 2526: 88 30 cpi r24, 0x08 ; 8 |
||
5150 | 2528: c9 f4 brne .+50 ; 0x255c <motor_test+0x56> |
||
5151 | { |
||
5152 | p_buffer[0] = '#'; // Motoren einschalten |
||
5153 | 252a: 83 e2 ldi r24, 0x23 ; 35 |
||
5154 | 252c: 80 93 63 04 sts 0x0463, r24 |
||
5155 | p_buffer[1] = 'a'; |
||
5156 | 2530: 81 e6 ldi r24, 0x61 ; 97 |
||
5157 | 2532: 80 93 64 04 sts 0x0464, r24 |
||
5158 | p_buffer[2] = 't'; |
||
5159 | 2536: 84 e7 ldi r24, 0x74 ; 116 |
||
5160 | 2538: 80 93 65 04 sts 0x0465, r24 |
||
5161 | p_buffer[3] = 10; |
||
5162 | 253c: 8a e0 ldi r24, 0x0A ; 10 |
||
5163 | 253e: 80 93 66 04 sts 0x0466, r24 |
||
5164 | p_buffer[4] = 10; |
||
5165 | 2542: 80 93 67 04 sts 0x0467, r24 |
||
5166 | p_buffer[5] = 10; |
||
5167 | 2546: 80 93 68 04 sts 0x0468, r24 |
||
5168 | p_buffer[6] = 10; |
||
5169 | 254a: 80 93 69 04 sts 0x0469, r24 |
||
5170 | p_buffer[7] = 0; |
||
5171 | 254e: 10 92 6a 04 sts 0x046A, r1 |
||
5172 | p_buffer[8] = 0; |
||
5173 | 2552: 10 92 6b 04 sts 0x046B, r1 |
||
5174 | |||
5175 | base64_send(9); |
||
5176 | 2556: 89 e0 ldi r24, 0x09 ; 9 |
||
5177 | 2558: 0e 94 bc 0c call 0x1978 <base64_send> |
||
5178 | } |
||
5179 | |||
5180 | while (key != 0x00); |
||
5181 | 255c: 80 91 e6 04 lds r24, 0x04E6 |
||
5182 | 2560: 88 23 and r24, r24 |
||
5183 | 2562: e1 f7 brne .-8 ; 0x255c <motor_test+0x56> |
||
5184 | while (key == 0x00); |
||
5185 | 2564: 80 91 e6 04 lds r24, 0x04E6 |
||
5186 | 2568: 88 23 and r24, r24 |
||
5187 | 256a: e1 f3 breq .-8 ; 0x2564 <motor_test+0x5e> |
||
5188 | |||
5189 | p_buffer[0] = '#'; // Motoren ausschalten |
||
5190 | 256c: 83 e2 ldi r24, 0x23 ; 35 |
||
5191 | 256e: 80 93 63 04 sts 0x0463, r24 |
||
5192 | p_buffer[1] = 'a'; |
||
5193 | 2572: 81 e6 ldi r24, 0x61 ; 97 |
||
5194 | 2574: 80 93 64 04 sts 0x0464, r24 |
||
5195 | p_buffer[2] = 't'; |
||
5196 | 2578: 84 e7 ldi r24, 0x74 ; 116 |
||
5197 | 257a: 80 93 65 04 sts 0x0465, r24 |
||
5198 | p_buffer[3] = 0; |
||
5199 | 257e: 10 92 66 04 sts 0x0466, r1 |
||
5200 | p_buffer[4] = 0; |
||
5201 | 2582: 10 92 67 04 sts 0x0467, r1 |
||
5202 | p_buffer[5] = 0; |
||
5203 | 2586: 10 92 68 04 sts 0x0468, r1 |
||
5204 | p_buffer[6] = 0; |
||
5205 | 258a: 10 92 69 04 sts 0x0469, r1 |
||
5206 | p_buffer[7] = 0; |
||
5207 | 258e: 10 92 6a 04 sts 0x046A, r1 |
||
5208 | p_buffer[8] = 0; |
||
5209 | 2592: 10 92 6b 04 sts 0x046B, r1 |
||
5210 | |||
5211 | base64_send(9); |
||
5212 | 2596: 89 e0 ldi r24, 0x09 ; 9 |
||
5213 | 2598: 0e 94 bc 0c call 0x1978 <base64_send> |
||
5214 | 259c: 08 95 ret |
||
5215 | |||
5216 | 0000259e <itoa>: |
||
5217 | 259e: fb 01 movw r30, r22 |
||
5218 | 25a0: 9f 01 movw r18, r30 |
||
5219 | 25a2: e8 94 clt |
||
5220 | 25a4: 42 30 cpi r20, 0x02 ; 2 |
||
5221 | 25a6: c4 f0 brlt .+48 ; 0x25d8 <itoa+0x3a> |
||
5222 | 25a8: 45 32 cpi r20, 0x25 ; 37 |
||
5223 | 25aa: b4 f4 brge .+44 ; 0x25d8 <itoa+0x3a> |
||
5224 | 25ac: 4a 30 cpi r20, 0x0A ; 10 |
||
5225 | 25ae: 29 f4 brne .+10 ; 0x25ba <itoa+0x1c> |
||
5226 | 25b0: 97 fb bst r25, 7 |
||
5227 | 25b2: 1e f4 brtc .+6 ; 0x25ba <itoa+0x1c> |
||
5228 | 25b4: 90 95 com r25 |
||
5229 | 25b6: 81 95 neg r24 |
||
5230 | 25b8: 9f 4f sbci r25, 0xFF ; 255 |
||
5231 | 25ba: 64 2f mov r22, r20 |
||
5232 | 25bc: 77 27 eor r23, r23 |
||
5233 | 25be: 0e 94 22 13 call 0x2644 <__udivmodhi4> |
||
5234 | 25c2: 80 5d subi r24, 0xD0 ; 208 |
||
5235 | 25c4: 8a 33 cpi r24, 0x3A ; 58 |
||
5236 | 25c6: 0c f0 brlt .+2 ; 0x25ca <itoa+0x2c> |
||
5237 | 25c8: 89 5d subi r24, 0xD9 ; 217 |
||
5238 | 25ca: 81 93 st Z+, r24 |
||
5239 | 25cc: cb 01 movw r24, r22 |
||
5240 | 25ce: 00 97 sbiw r24, 0x00 ; 0 |
||
5241 | 25d0: a1 f7 brne .-24 ; 0x25ba <itoa+0x1c> |
||
5242 | 25d2: 16 f4 brtc .+4 ; 0x25d8 <itoa+0x3a> |
||
5243 | 25d4: 5d e2 ldi r21, 0x2D ; 45 |
||
5244 | 25d6: 51 93 st Z+, r21 |
||
5245 | 25d8: 10 82 st Z, r1 |
||
5246 | 25da: c9 01 movw r24, r18 |
||
5247 | 25dc: 0c 94 06 13 jmp 0x260c <strrev> |
||
5248 | |||
5249 | 000025e0 <utoa>: |
||
5250 | 25e0: fb 01 movw r30, r22 |
||
5251 | 25e2: 9f 01 movw r18, r30 |
||
5252 | 25e4: 42 30 cpi r20, 0x02 ; 2 |
||
5253 | 25e6: 74 f0 brlt .+28 ; 0x2604 <utoa+0x24> |
||
5254 | 25e8: 45 32 cpi r20, 0x25 ; 37 |
||
5255 | 25ea: 64 f4 brge .+24 ; 0x2604 <utoa+0x24> |
||
5256 | 25ec: 64 2f mov r22, r20 |
||
5257 | 25ee: 77 27 eor r23, r23 |
||
5258 | 25f0: 0e 94 22 13 call 0x2644 <__udivmodhi4> |
||
5259 | 25f4: 80 5d subi r24, 0xD0 ; 208 |
||
5260 | 25f6: 8a 33 cpi r24, 0x3A ; 58 |
||
5261 | 25f8: 0c f0 brlt .+2 ; 0x25fc <utoa+0x1c> |
||
5262 | 25fa: 89 5d subi r24, 0xD9 ; 217 |
||
5263 | 25fc: 81 93 st Z+, r24 |
||
5264 | 25fe: cb 01 movw r24, r22 |
||
5265 | 2600: 00 97 sbiw r24, 0x00 ; 0 |
||
5266 | 2602: a1 f7 brne .-24 ; 0x25ec <utoa+0xc> |
||
5267 | 2604: 10 82 st Z, r1 |
||
5268 | 2606: c9 01 movw r24, r18 |
||
5269 | 2608: 0c 94 06 13 jmp 0x260c <strrev> |
||
5270 | |||
5271 | 0000260c <strrev>: |
||
5272 | 260c: dc 01 movw r26, r24 |
||
5273 | 260e: fc 01 movw r30, r24 |
||
5274 | 2610: 01 90 ld r0, Z+ |
||
5275 | 2612: 00 20 and r0, r0 |
||
5276 | 2614: e9 f7 brne .-6 ; 0x2610 <strrev+0x4> |
||
5277 | 2616: 32 97 sbiw r30, 0x02 ; 2 |
||
5278 | 2618: ae 17 cp r26, r30 |
||
5279 | 261a: bf 07 cpc r27, r31 |
||
5280 | 261c: 30 f4 brcc .+12 ; 0x262a <strrev+0x1e> |
||
5281 | 261e: 7c 91 ld r23, X |
||
5282 | 2620: 60 81 ld r22, Z |
||
5283 | 2622: 70 83 st Z, r23 |
||
5284 | 2624: 31 97 sbiw r30, 0x01 ; 1 |
||
5285 | 2626: 6d 93 st X+, r22 |
||
5286 | 2628: f7 cf rjmp .-18 ; 0x2618 <strrev+0xc> |
||
5287 | 262a: 08 95 ret |
||
5288 | |||
5289 | 0000262c <__udivmodqi4>: |
||
5290 | 262c: 99 1b sub r25, r25 |
||
5291 | 262e: 79 e0 ldi r23, 0x09 ; 9 |
||
5292 | 2630: 04 c0 rjmp .+8 ; 0x263a <__udivmodqi4_ep> |
||
5293 | |||
5294 | 00002632 <__udivmodqi4_loop>: |
||
5295 | 2632: 99 1f adc r25, r25 |
||
5296 | 2634: 96 17 cp r25, r22 |
||
5297 | 2636: 08 f0 brcs .+2 ; 0x263a <__udivmodqi4_ep> |
||
5298 | 2638: 96 1b sub r25, r22 |
||
5299 | |||
5300 | 0000263a <__udivmodqi4_ep>: |
||
5301 | 263a: 88 1f adc r24, r24 |
||
5302 | 263c: 7a 95 dec r23 |
||
5303 | 263e: c9 f7 brne .-14 ; 0x2632 <__udivmodqi4_loop> |
||
5304 | 2640: 80 95 com r24 |
||
5305 | 2642: 08 95 ret |
||
5306 | |||
5307 | 00002644 <__udivmodhi4>: |
||
5308 | 2644: aa 1b sub r26, r26 |
||
5309 | 2646: bb 1b sub r27, r27 |
||
5310 | 2648: 51 e1 ldi r21, 0x11 ; 17 |
||
5311 | 264a: 07 c0 rjmp .+14 ; 0x265a <__udivmodhi4_ep> |
||
5312 | |||
5313 | 0000264c <__udivmodhi4_loop>: |
||
5314 | 264c: aa 1f adc r26, r26 |
||
5315 | 264e: bb 1f adc r27, r27 |
||
5316 | 2650: a6 17 cp r26, r22 |
||
5317 | 2652: b7 07 cpc r27, r23 |
||
5318 | 2654: 10 f0 brcs .+4 ; 0x265a <__udivmodhi4_ep> |
||
5319 | 2656: a6 1b sub r26, r22 |
||
5320 | 2658: b7 0b sbc r27, r23 |
||
5321 | |||
5322 | 0000265a <__udivmodhi4_ep>: |
||
5323 | 265a: 88 1f adc r24, r24 |
||
5324 | 265c: 99 1f adc r25, r25 |
||
5325 | 265e: 5a 95 dec r21 |
||
5326 | 2660: a9 f7 brne .-22 ; 0x264c <__udivmodhi4_loop> |
||
5327 | 2662: 80 95 com r24 |
||
5328 | 2664: 90 95 com r25 |
||
5329 | 2666: bc 01 movw r22, r24 |
||
5330 | 2668: cd 01 movw r24, r26 |
||
5331 | 266a: 08 95 ret |