Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
96 | gunterl | 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, DATA |
||
8 | 1 .text 000011b8 00000000 00000000 00000094 2**1 |
||
9 | CONTENTS, ALLOC, LOAD, READONLY, CODE |
||
10 | 2 .bss 000000cc 008003d8 008003d8 00001524 2**0 |
||
11 | ALLOC |
||
12 | 3 .stab 00000378 00000000 00000000 00001524 2**2 |
||
13 | CONTENTS, READONLY, DEBUGGING |
||
14 | 4 .stabstr 00000071 00000000 00000000 0000189c 2**0 |
||
15 | CONTENTS, READONLY, DEBUGGING |
||
16 | 5 .debug_aranges 00000020 00000000 00000000 0000190d 2**0 |
||
17 | CONTENTS, READONLY, DEBUGGING |
||
18 | 6 .debug_pubnames 00000207 00000000 00000000 0000192d 2**0 |
||
19 | CONTENTS, READONLY, DEBUGGING |
||
20 | 7 .debug_info 000007c7 00000000 00000000 00001b34 2**0 |
||
21 | CONTENTS, READONLY, DEBUGGING |
||
22 | 8 .debug_abbrev 0000020c 00000000 00000000 000022fb 2**0 |
||
23 | CONTENTS, READONLY, DEBUGGING |
||
24 | 9 .debug_line 00000d5d 00000000 00000000 00002507 2**0 |
||
25 | CONTENTS, READONLY, DEBUGGING |
||
26 | 10 .debug_frame 000000a0 00000000 00000000 00003264 2**2 |
||
27 | CONTENTS, READONLY, DEBUGGING |
||
28 | 11 .debug_str 00000287 00000000 00000000 00003304 2**0 |
||
29 | CONTENTS, READONLY, DEBUGGING |
||
30 | 12 .debug_loc 00000453 00000000 00000000 0000358b 2**0 |
||
31 | CONTENTS, READONLY, DEBUGGING |
||
32 | Disassembly of section .text: |
||
33 | |||
34 | 00000000 <__vectors>: |
||
35 | 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> |
||
36 | 2: 70 c8 rjmp .-3872 ; 0xfffff0e4 <__eeprom_end+0xff7ef0e4> |
||
37 | 4: 9c c8 rjmp .-3784 ; 0xfffff13e <__eeprom_end+0xff7ef13e> |
||
38 | 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt> |
||
39 | 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt> |
||
40 | a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt> |
||
41 | c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt> |
||
42 | e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt> |
||
43 | 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt> |
||
44 | 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt> |
||
45 | 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt> |
||
46 | 16: 29 c0 rjmp .+82 ; 0x6a <__bad_interrupt> |
||
47 | 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt> |
||
48 | 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt> |
||
49 | 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt> |
||
50 | 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt> |
||
51 | 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt> |
||
52 | 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt> |
||
53 | 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt> |
||
54 | 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> |
||
55 | 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> |
||
56 | 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> |
||
57 | 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt> |
||
58 | 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> |
||
59 | 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> |
||
60 | 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> |
||
61 | |||
62 | 00000034 <__ctors_end>: |
||
63 | 34: 11 24 eor r1, r1 |
||
64 | 36: 1f be out 0x3f, r1 ; 63 |
||
65 | 38: cf ef ldi r28, 0xFF ; 255 |
||
66 | 3a: d4 e0 ldi r29, 0x04 ; 4 |
||
67 | 3c: de bf out 0x3e, r29 ; 62 |
||
68 | 3e: cd bf out 0x3d, r28 ; 61 |
||
69 | |||
70 | 00000040 <__do_copy_data>: |
||
71 | 40: 13 e0 ldi r17, 0x03 ; 3 |
||
72 | 42: a0 e0 ldi r26, 0x00 ; 0 |
||
73 | 44: b1 e0 ldi r27, 0x01 ; 1 |
||
74 | 46: e8 eb ldi r30, 0xB8 ; 184 |
||
75 | 48: f1 e1 ldi r31, 0x11 ; 17 |
||
76 | 4a: 02 c0 rjmp .+4 ; 0x50 <.do_copy_data_start> |
||
77 | |||
78 | 0000004c <.do_copy_data_loop>: |
||
79 | 4c: 05 90 lpm r0, Z+ |
||
80 | 4e: 0d 92 st X+, r0 |
||
81 | |||
82 | 00000050 <.do_copy_data_start>: |
||
83 | 50: a8 3d cpi r26, 0xD8 ; 216 |
||
84 | 52: b1 07 cpc r27, r17 |
||
85 | 54: d9 f7 brne .-10 ; 0x4c <.do_copy_data_loop> |
||
86 | |||
87 | 00000056 <__do_clear_bss>: |
||
88 | 56: 14 e0 ldi r17, 0x04 ; 4 |
||
89 | 58: a8 ed ldi r26, 0xD8 ; 216 |
||
90 | 5a: b3 e0 ldi r27, 0x03 ; 3 |
||
91 | 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> |
||
92 | |||
93 | 0000005e <.do_clear_bss_loop>: |
||
94 | 5e: 1d 92 st X+, r1 |
||
95 | |||
96 | 00000060 <.do_clear_bss_start>: |
||
97 | 60: a4 3a cpi r26, 0xA4 ; 164 |
||
98 | 62: b1 07 cpc r27, r17 |
||
99 | 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> |
||
100 | 66: f6 d1 rcall .+1004 ; 0x454 <main> |
||
101 | 68: a6 c8 rjmp .-3764 ; 0xfffff1b6 <__eeprom_end+0xff7ef1b6> |
||
102 | |||
103 | 0000006a <__bad_interrupt>: |
||
104 | 6a: ca cf rjmp .-108 ; 0x0 <__vectors> |
||
105 | |||
106 | 0000006c <GR_Copy>: |
||
107 | //----------------------------------------------------------------------------- |
||
108 | // copy bitmap |
||
109 | //----------------------------------------------------------------------------- |
||
110 | extern void GR_Copy(unsigned char* source,int start,int max) |
||
111 | { |
||
112 | 6c: dc 01 movw r26, r24 |
||
113 | int i; |
||
114 | for(i=0;i<max;i++) |
||
115 | 6e: 14 16 cp r1, r20 |
||
116 | 70: 15 06 cpc r1, r21 |
||
117 | 72: 64 f4 brge .+24 ; 0x8c <GR_Copy+0x20> |
||
118 | 74: fb 01 movw r30, r22 |
||
119 | 76: e9 5c subi r30, 0xC9 ; 201 |
||
120 | 78: fe 4f sbci r31, 0xFE ; 254 |
||
121 | 7a: 20 e0 ldi r18, 0x00 ; 0 |
||
122 | 7c: 30 e0 ldi r19, 0x00 ; 0 |
||
123 | { |
||
124 | dmem[start+i]=*source; |
||
125 | 7e: 8d 91 ld r24, X+ |
||
126 | 80: 81 93 st Z+, r24 |
||
127 | 82: 2f 5f subi r18, 0xFF ; 255 |
||
128 | 84: 3f 4f sbci r19, 0xFF ; 255 |
||
129 | 86: 42 17 cp r20, r18 |
||
130 | 88: 53 07 cpc r21, r19 |
||
131 | 8a: c9 f7 brne .-14 ; 0x7e <GR_Copy+0x12> |
||
132 | 8c: 08 95 ret |
||
133 | |||
134 | 0000008e <GR_Clear>: |
||
135 | source++; |
||
136 | } |
||
137 | } |
||
138 | |||
139 | //----------------------------------------------------------------------------- |
||
140 | // Clear Graphic Area |
||
141 | //----------------------------------------------------------------------------- |
||
142 | extern void GR_Clear() |
||
143 | { |
||
144 | 8e: e7 e3 ldi r30, 0x37 ; 55 |
||
145 | 90: f1 e0 ldi r31, 0x01 ; 1 |
||
146 | 92: 8f e4 ldi r24, 0x4F ; 79 |
||
147 | 94: 92 e0 ldi r25, 0x02 ; 2 |
||
148 | int i; |
||
149 | for(i=0;i<GR_MaxGraph;i++) |
||
150 | { |
||
151 | dmem[i]=0; |
||
152 | 96: 11 92 st Z+, r1 |
||
153 | 98: e8 17 cp r30, r24 |
||
154 | 9a: f9 07 cpc r31, r25 |
||
155 | 9c: e1 f7 brne .-8 ; 0x96 <GR_Clear+0x8> |
||
156 | 9e: 08 95 ret |
||
157 | |||
158 | 000000a0 <Decode64>: |
||
159 | } |
||
160 | } |
||
161 | |||
162 | //----------------------------------------------------------------------------- |
||
163 | // Show and Hide Graphic area and Background |
||
164 | //----------------------------------------------------------------------------- |
||
165 | #define SHOWGRAPHIC showgraphic=1 |
||
166 | #define HIDEGRAPHIC showgraphic=0 |
||
167 | #define SHOWGRAPHICBACK showgraphicb=1 |
||
168 | #define HIDEGRAPHICBACK showgraphicb=0 |
||
169 | |||
170 | |||
171 | //----------------------------------------------------------------------------- |
||
172 | // Decode64 |
||
173 | //----------------------------------------------------------------------------- |
||
174 | extern void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) |
||
175 | { |
||
176 | a0: ef 92 push r14 |
||
177 | a2: ff 92 push r15 |
||
178 | a4: 1f 93 push r17 |
||
179 | a6: cf 93 push r28 |
||
180 | a8: df 93 push r29 |
||
181 | aa: ec 01 movw r28, r24 |
||
182 | ac: 16 2f mov r17, r22 |
||
183 | unsigned char a,b,c,d; |
||
184 | unsigned char ptr = 0; |
||
185 | unsigned char x,y,z; |
||
186 | while(len) |
||
187 | ae: 66 23 and r22, r22 |
||
188 | b0: 09 f4 brne .+2 ; 0xb4 <Decode64+0x14> |
||
189 | b2: 7b c0 rjmp .+246 ; 0x1aa <Decode64+0x10a> |
||
190 | { |
||
191 | a = RxdBuffer[ptrIn++] - '='; |
||
192 | b4: a4 ef ldi r26, 0xF4 ; 244 |
||
193 | b6: b3 e0 ldi r27, 0x03 ; 3 |
||
194 | b8: fd 01 movw r30, r26 |
||
195 | ba: e4 0f add r30, r20 |
||
196 | bc: f1 1d adc r31, r1 |
||
197 | be: 50 81 ld r21, Z |
||
198 | c0: 84 2f mov r24, r20 |
||
199 | c2: 8f 5f subi r24, 0xFF ; 255 |
||
200 | b = RxdBuffer[ptrIn++] - '='; |
||
201 | c4: fd 01 movw r30, r26 |
||
202 | c6: e8 0f add r30, r24 |
||
203 | c8: f1 1d adc r31, r1 |
||
204 | ca: 30 81 ld r19, Z |
||
205 | cc: 8f 5f subi r24, 0xFF ; 255 |
||
206 | c = RxdBuffer[ptrIn++] - '='; |
||
207 | ce: fd 01 movw r30, r26 |
||
208 | d0: e8 0f add r30, r24 |
||
209 | d2: f1 1d adc r31, r1 |
||
210 | d4: e0 81 ld r30, Z |
||
211 | d6: 8f 5f subi r24, 0xFF ; 255 |
||
212 | d = RxdBuffer[ptrIn++] - '='; |
||
213 | d8: a8 0f add r26, r24 |
||
214 | da: b1 1d adc r27, r1 |
||
215 | dc: ac 91 ld r26, X |
||
216 | de: 4c 5f subi r20, 0xFC ; 252 |
||
217 | if(ptrIn > max - 2) break; |
||
218 | e0: 82 2f mov r24, r18 |
||
219 | e2: 99 27 eor r25, r25 |
||
220 | e4: 0f 2e mov r0, r31 |
||
221 | e6: fe ef ldi r31, 0xFE ; 254 |
||
222 | e8: ef 2e mov r14, r31 |
||
223 | ea: ff ef ldi r31, 0xFF ; 255 |
||
224 | ec: ff 2e mov r15, r31 |
||
225 | ee: f0 2d mov r31, r0 |
||
226 | f0: e8 0e add r14, r24 |
||
227 | f2: f9 1e adc r15, r25 |
||
228 | f4: 84 2f mov r24, r20 |
||
229 | f6: 99 27 eor r25, r25 |
||
230 | f8: e8 16 cp r14, r24 |
||
231 | fa: f9 06 cpc r15, r25 |
||
232 | fc: 0c f4 brge .+2 ; 0x100 <Decode64+0x60> |
||
233 | fe: 55 c0 rjmp .+170 ; 0x1aa <Decode64+0x10a> |
||
234 | 100: 85 2f mov r24, r21 |
||
235 | 102: 8d 53 subi r24, 0x3D ; 61 |
||
236 | 104: 3d 53 subi r19, 0x3D ; 61 |
||
237 | 106: 5e 2f mov r21, r30 |
||
238 | 108: 5d 53 subi r21, 0x3D ; 61 |
||
239 | 10a: ad 53 subi r26, 0x3D ; 61 |
||
240 | 10c: 20 e0 ldi r18, 0x00 ; 0 |
||
241 | 10e: 64 ef ldi r22, 0xF4 ; 244 |
||
242 | 110: 73 e0 ldi r23, 0x03 ; 3 |
||
243 | 112: 20 c0 rjmp .+64 ; 0x154 <Decode64+0xb4> |
||
244 | 114: fb 01 movw r30, r22 |
||
245 | 116: e4 0f add r30, r20 |
||
246 | 118: f1 1d adc r31, r1 |
||
247 | 11a: b0 81 ld r27, Z |
||
248 | 11c: 84 2f mov r24, r20 |
||
249 | 11e: 8f 5f subi r24, 0xFF ; 255 |
||
250 | 120: fb 01 movw r30, r22 |
||
251 | 122: e8 0f add r30, r24 |
||
252 | 124: f1 1d adc r31, r1 |
||
253 | 126: 30 81 ld r19, Z |
||
254 | 128: 8f 5f subi r24, 0xFF ; 255 |
||
255 | 12a: fb 01 movw r30, r22 |
||
256 | 12c: e8 0f add r30, r24 |
||
257 | 12e: f1 1d adc r31, r1 |
||
258 | 130: 50 81 ld r21, Z |
||
259 | 132: 8f 5f subi r24, 0xFF ; 255 |
||
260 | 134: fb 01 movw r30, r22 |
||
261 | 136: e8 0f add r30, r24 |
||
262 | 138: f1 1d adc r31, r1 |
||
263 | 13a: a0 81 ld r26, Z |
||
264 | 13c: 4c 5f subi r20, 0xFC ; 252 |
||
265 | 13e: 84 2f mov r24, r20 |
||
266 | 140: 99 27 eor r25, r25 |
||
267 | 142: e8 16 cp r14, r24 |
||
268 | 144: f9 06 cpc r15, r25 |
||
269 | 146: 8c f1 brlt .+98 ; 0x1aa <Decode64+0x10a> |
||
270 | 148: 8b 2f mov r24, r27 |
||
271 | 14a: 8d 53 subi r24, 0x3D ; 61 |
||
272 | 14c: 3d 53 subi r19, 0x3D ; 61 |
||
273 | 14e: 5d 53 subi r21, 0x3D ; 61 |
||
274 | 150: ad 53 subi r26, 0x3D ; 61 |
||
275 | 152: 2d 5f subi r18, 0xFD ; 253 |
||
276 | |||
277 | x = (a << 2) | (b >> 4); |
||
278 | y = ((b & 0x0f) << 4) | (c >> 2); |
||
279 | z = ((c & 0x03) << 6) | d; |
||
280 | |||
281 | if(len--) ptrOut[ptr++] = x; else break; |
||
282 | 154: fe 01 movw r30, r28 |
||
283 | 156: e2 0f add r30, r18 |
||
284 | 158: f1 1d adc r31, r1 |
||
285 | 15a: 88 0f add r24, r24 |
||
286 | 15c: 88 0f add r24, r24 |
||
287 | 15e: 93 2f mov r25, r19 |
||
288 | 160: 92 95 swap r25 |
||
289 | 162: 9f 70 andi r25, 0x0F ; 15 |
||
290 | 164: 89 2b or r24, r25 |
||
291 | 166: 80 83 st Z, r24 |
||
292 | if(len--) ptrOut[ptr++] = y; else break; |
||
293 | 168: 11 30 cpi r17, 0x01 ; 1 |
||
294 | 16a: f9 f0 breq .+62 ; 0x1aa <Decode64+0x10a> |
||
295 | 16c: 82 2f mov r24, r18 |
||
296 | 16e: 8f 5f subi r24, 0xFF ; 255 |
||
297 | 170: fe 01 movw r30, r28 |
||
298 | 172: e8 0f add r30, r24 |
||
299 | 174: f1 1d adc r31, r1 |
||
300 | 176: 83 2f mov r24, r19 |
||
301 | 178: 82 95 swap r24 |
||
302 | 17a: 80 7f andi r24, 0xF0 ; 240 |
||
303 | 17c: 95 2f mov r25, r21 |
||
304 | 17e: 96 95 lsr r25 |
||
305 | 180: 96 95 lsr r25 |
||
306 | 182: 89 2b or r24, r25 |
||
307 | 184: 80 83 st Z, r24 |
||
308 | 186: 13 50 subi r17, 0x03 ; 3 |
||
309 | if(len--) ptrOut[ptr++] = z; else break; |
||
310 | 188: 1f 3f cpi r17, 0xFF ; 255 |
||
311 | 18a: 79 f0 breq .+30 ; 0x1aa <Decode64+0x10a> |
||
312 | 18c: 82 2f mov r24, r18 |
||
313 | 18e: 8e 5f subi r24, 0xFE ; 254 |
||
314 | 190: fe 01 movw r30, r28 |
||
315 | 192: e8 0f add r30, r24 |
||
316 | 194: f1 1d adc r31, r1 |
||
317 | 196: 85 2f mov r24, r21 |
||
318 | 198: 82 95 swap r24 |
||
319 | 19a: 88 0f add r24, r24 |
||
320 | 19c: 88 0f add r24, r24 |
||
321 | 19e: 80 7c andi r24, 0xC0 ; 192 |
||
322 | 1a0: 8a 2b or r24, r26 |
||
323 | 1a2: 80 83 st Z, r24 |
||
324 | 1a4: 11 23 and r17, r17 |
||
325 | 1a6: 09 f0 breq .+2 ; 0x1aa <Decode64+0x10a> |
||
326 | 1a8: b5 cf rjmp .-150 ; 0x114 <Decode64+0x74> |
||
327 | 1aa: df 91 pop r29 |
||
328 | 1ac: cf 91 pop r28 |
||
329 | 1ae: 1f 91 pop r17 |
||
330 | 1b0: ff 90 pop r15 |
||
331 | 1b2: ef 90 pop r14 |
||
332 | 1b4: 08 95 ret |
||
333 | |||
334 | 000001b6 <process_rxdata>: |
||
335 | } |
||
336 | } |
||
337 | |||
338 | //----------------------------------------------------------------------------- |
||
339 | // process RX Data |
||
340 | //----------------------------------------------------------------------------- |
||
341 | extern void process_rxdata(unsigned char c) |
||
342 | { |
||
343 | 1b6: 80 93 e1 03 sts 0x03E1, r24 |
||
344 | static unsigned int crc; |
||
345 | static unsigned char crc1,crc2,buf_ptr; |
||
346 | static unsigned char UartState = 0; |
||
347 | unsigned char CrcOkay = 0; |
||
348 | |||
349 | SioTmp=c; |
||
350 | |||
351 | if(buf_ptr >= MAX_RX_BUF) |
||
352 | 1ba: 50 91 e6 03 lds r21, 0x03E6 |
||
353 | 1be: 54 36 cpi r21, 0x64 ; 100 |
||
354 | 1c0: 10 f0 brcs .+4 ; 0x1c6 <process_rxdata+0x10> |
||
355 | UartState = 0; |
||
356 | 1c2: 10 92 e5 03 sts 0x03E5, r1 |
||
357 | if(SioTmp == '\r' && UartState == 2) |
||
358 | 1c6: 80 91 e1 03 lds r24, 0x03E1 |
||
359 | 1ca: 8d 30 cpi r24, 0x0D ; 13 |
||
360 | 1cc: 09 f0 breq .+2 ; 0x1d0 <process_rxdata+0x1a> |
||
361 | 1ce: 5c c0 rjmp .+184 ; 0x288 <process_rxdata+0xd2> |
||
362 | 1d0: 80 91 e5 03 lds r24, 0x03E5 |
||
363 | 1d4: 82 30 cpi r24, 0x02 ; 2 |
||
364 | 1d6: 09 f0 breq .+2 ; 0x1da <process_rxdata+0x24> |
||
365 | 1d8: 57 c0 rjmp .+174 ; 0x288 <process_rxdata+0xd2> |
||
366 | { |
||
367 | UartState = 0; |
||
368 | 1da: 10 92 e5 03 sts 0x03E5, r1 |
||
369 | crc -= RxdBuffer[buf_ptr-2]; |
||
370 | 1de: 65 2f mov r22, r21 |
||
371 | 1e0: 77 27 eor r23, r23 |
||
372 | 1e2: fb 01 movw r30, r22 |
||
373 | 1e4: 32 97 sbiw r30, 0x02 ; 2 |
||
374 | 1e6: 24 ef ldi r18, 0xF4 ; 244 |
||
375 | 1e8: 33 e0 ldi r19, 0x03 ; 3 |
||
376 | 1ea: e2 0f add r30, r18 |
||
377 | 1ec: f3 1f adc r31, r19 |
||
378 | 1ee: 40 81 ld r20, Z |
||
379 | crc -= RxdBuffer[buf_ptr-1]; |
||
380 | 1f0: cb 01 movw r24, r22 |
||
381 | 1f2: 01 97 sbiw r24, 0x01 ; 1 |
||
382 | 1f4: dc 01 movw r26, r24 |
||
383 | 1f6: a2 0f add r26, r18 |
||
384 | 1f8: b3 1f adc r27, r19 |
||
385 | 1fa: 2c 91 ld r18, X |
||
386 | crc %= 4096; |
||
387 | 1fc: 80 91 e9 03 lds r24, 0x03E9 |
||
388 | 200: 90 91 ea 03 lds r25, 0x03EA |
||
389 | 204: 84 1b sub r24, r20 |
||
390 | 206: 91 09 sbc r25, r1 |
||
391 | 208: 82 1b sub r24, r18 |
||
392 | 20a: 91 09 sbc r25, r1 |
||
393 | 20c: 9f 70 andi r25, 0x0F ; 15 |
||
394 | 20e: 90 93 ea 03 sts 0x03EA, r25 |
||
395 | 212: 80 93 e9 03 sts 0x03E9, r24 |
||
396 | crc1 = '=' + crc / 64; |
||
397 | 216: 9c 01 movw r18, r24 |
||
398 | 218: 00 24 eor r0, r0 |
||
399 | 21a: 22 0f add r18, r18 |
||
400 | 21c: 33 1f adc r19, r19 |
||
401 | 21e: 00 1c adc r0, r0 |
||
402 | 220: 22 0f add r18, r18 |
||
403 | 222: 33 1f adc r19, r19 |
||
404 | 224: 00 1c adc r0, r0 |
||
405 | 226: 23 2f mov r18, r19 |
||
406 | 228: 30 2d mov r19, r0 |
||
407 | 22a: 23 5c subi r18, 0xC3 ; 195 |
||
408 | 22c: 20 93 e8 03 sts 0x03E8, r18 |
||
409 | crc2 = '=' + crc % 64; |
||
410 | 230: 8f 73 andi r24, 0x3F ; 63 |
||
411 | 232: 38 2f mov r19, r24 |
||
412 | 234: 33 5c subi r19, 0xC3 ; 195 |
||
413 | 236: 30 93 e7 03 sts 0x03E7, r19 |
||
414 | CrcOkay = 0; |
||
415 | if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) |
||
416 | 23a: 80 81 ld r24, Z |
||
417 | 23c: 28 17 cp r18, r24 |
||
418 | 23e: 29 f4 brne .+10 ; 0x24a <process_rxdata+0x94> |
||
419 | 240: 8c 91 ld r24, X |
||
420 | 242: 38 17 cp r19, r24 |
||
421 | 244: 11 f4 brne .+4 ; 0x24a <process_rxdata+0x94> |
||
422 | 246: 91 e0 ldi r25, 0x01 ; 1 |
||
423 | 248: 09 c0 rjmp .+18 ; 0x25c <process_rxdata+0xa6> |
||
424 | { |
||
425 | CrcOkay = 1; |
||
426 | } |
||
427 | else |
||
428 | { |
||
429 | CrcOkay = 0; |
||
430 | CntCrcError++; |
||
431 | 24a: 80 91 e3 03 lds r24, 0x03E3 |
||
432 | 24e: 8f 5f subi r24, 0xFF ; 255 |
||
433 | 250: 80 93 e3 03 sts 0x03E3, r24 |
||
434 | display_line1[1]='E'; |
||
435 | 254: 85 e4 ldi r24, 0x45 ; 69 |
||
436 | 256: 80 93 59 04 sts 0x0459, r24 |
||
437 | 25a: 90 e0 ldi r25, 0x00 ; 0 |
||
438 | |||
439 | } |
||
440 | if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
||
441 | 25c: 80 91 e2 03 lds r24, 0x03E2 |
||
442 | 260: 88 23 and r24, r24 |
||
443 | 262: 09 f0 breq .+2 ; 0x266 <process_rxdata+0xb0> |
||
444 | 264: 7e c0 rjmp .+252 ; 0x362 <process_rxdata+0x1ac> |
||
445 | 266: 99 23 and r25, r25 |
||
446 | 268: 09 f4 brne .+2 ; 0x26c <process_rxdata+0xb6> |
||
447 | 26a: 7b c0 rjmp .+246 ; 0x362 <process_rxdata+0x1ac> |
||
448 | { |
||
449 | NeuerDatensatzEmpfangen = 1; |
||
450 | 26c: 81 e0 ldi r24, 0x01 ; 1 |
||
451 | 26e: 80 93 e2 03 sts 0x03E2, r24 |
||
452 | AnzahlEmpfangsBytes = buf_ptr; |
||
453 | 272: 50 93 e4 03 sts 0x03E4, r21 |
||
454 | RxdBuffer[buf_ptr] = '\r'; |
||
455 | 276: fb 01 movw r30, r22 |
||
456 | 278: ec 50 subi r30, 0x0C ; 12 |
||
457 | 27a: fc 4f sbci r31, 0xFC ; 252 |
||
458 | 27c: 8d e0 ldi r24, 0x0D ; 13 |
||
459 | 27e: 80 83 st Z, r24 |
||
460 | display_line1[1]='R'; |
||
461 | 280: 82 e5 ldi r24, 0x52 ; 82 |
||
462 | 282: 80 93 59 04 sts 0x0459, r24 |
||
463 | 286: 6d c0 rjmp .+218 ; 0x362 <process_rxdata+0x1ac> |
||
464 | } |
||
465 | } |
||
466 | else |
||
467 | switch(UartState) |
||
468 | 288: 80 91 e5 03 lds r24, 0x03E5 |
||
469 | 28c: 81 30 cpi r24, 0x01 ; 1 |
||
470 | 28e: 31 f1 breq .+76 ; 0x2dc <process_rxdata+0x126> |
||
471 | 290: 81 30 cpi r24, 0x01 ; 1 |
||
472 | 292: 20 f0 brcs .+8 ; 0x29c <process_rxdata+0xe6> |
||
473 | 294: 82 30 cpi r24, 0x02 ; 2 |
||
474 | 296: 09 f0 breq .+2 ; 0x29a <process_rxdata+0xe4> |
||
475 | 298: 5f c0 rjmp .+190 ; 0x358 <process_rxdata+0x1a2> |
||
476 | 29a: 3e c0 rjmp .+124 ; 0x318 <process_rxdata+0x162> |
||
477 | { |
||
478 | case 0: |
||
479 | if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
||
480 | 29c: 80 91 e1 03 lds r24, 0x03E1 |
||
481 | 2a0: 83 32 cpi r24, 0x23 ; 35 |
||
482 | 2a2: 39 f4 brne .+14 ; 0x2b2 <process_rxdata+0xfc> |
||
483 | 2a4: 80 91 e2 03 lds r24, 0x03E2 |
||
484 | 2a8: 88 23 and r24, r24 |
||
485 | 2aa: 19 f4 brne .+6 ; 0x2b2 <process_rxdata+0xfc> |
||
486 | 2ac: 81 e0 ldi r24, 0x01 ; 1 |
||
487 | 2ae: 80 93 e5 03 sts 0x03E5, r24 |
||
488 | buf_ptr = 0; |
||
489 | RxdBuffer[buf_ptr++] = SioTmp; |
||
490 | 2b2: 80 91 e1 03 lds r24, 0x03E1 |
||
491 | 2b6: 80 93 f4 03 sts 0x03F4, r24 |
||
492 | 2ba: 81 e0 ldi r24, 0x01 ; 1 |
||
493 | 2bc: 80 93 e6 03 sts 0x03E6, r24 |
||
494 | crc = SioTmp; |
||
495 | 2c0: 80 91 e1 03 lds r24, 0x03E1 |
||
496 | 2c4: 99 27 eor r25, r25 |
||
497 | 2c6: 90 93 ea 03 sts 0x03EA, r25 |
||
498 | 2ca: 80 93 e9 03 sts 0x03E9, r24 |
||
499 | display_line1[2]='A'; |
||
500 | 2ce: 81 e4 ldi r24, 0x41 ; 65 |
||
501 | 2d0: 80 93 5a 04 sts 0x045A, r24 |
||
502 | display_line1[1]='X'; |
||
503 | 2d4: 88 e5 ldi r24, 0x58 ; 88 |
||
504 | 2d6: 80 93 59 04 sts 0x0459, r24 |
||
505 | 2da: 43 c0 rjmp .+134 ; 0x362 <process_rxdata+0x1ac> |
||
506 | break; |
||
507 | case 1: // Adresse auswerten |
||
508 | UartState++; |
||
509 | 2dc: 82 e0 ldi r24, 0x02 ; 2 |
||
510 | 2de: 80 93 e5 03 sts 0x03E5, r24 |
||
511 | RxdBuffer[buf_ptr++] = SioTmp; |
||
512 | 2e2: 80 91 e1 03 lds r24, 0x03E1 |
||
513 | 2e6: e4 ef ldi r30, 0xF4 ; 244 |
||
514 | 2e8: f3 e0 ldi r31, 0x03 ; 3 |
||
515 | 2ea: e5 0f add r30, r21 |
||
516 | 2ec: f1 1d adc r31, r1 |
||
517 | 2ee: 80 83 st Z, r24 |
||
518 | 2f0: 85 2f mov r24, r21 |
||
519 | 2f2: 8f 5f subi r24, 0xFF ; 255 |
||
520 | 2f4: 80 93 e6 03 sts 0x03E6, r24 |
||
521 | crc += SioTmp; |
||
522 | 2f8: 20 91 e1 03 lds r18, 0x03E1 |
||
523 | 2fc: 80 91 e9 03 lds r24, 0x03E9 |
||
524 | 300: 90 91 ea 03 lds r25, 0x03EA |
||
525 | 304: 82 0f add r24, r18 |
||
526 | 306: 91 1d adc r25, r1 |
||
527 | 308: 90 93 ea 03 sts 0x03EA, r25 |
||
528 | 30c: 80 93 e9 03 sts 0x03E9, r24 |
||
529 | display_line1[2]='B'; |
||
530 | 310: 82 e4 ldi r24, 0x42 ; 66 |
||
531 | 312: 80 93 5a 04 sts 0x045A, r24 |
||
532 | 316: 25 c0 rjmp .+74 ; 0x362 <process_rxdata+0x1ac> |
||
533 | break; |
||
534 | case 2: // Eingangsdaten sammeln |
||
535 | RxdBuffer[buf_ptr] = SioTmp; |
||
536 | 318: 80 91 e1 03 lds r24, 0x03E1 |
||
537 | 31c: e4 ef ldi r30, 0xF4 ; 244 |
||
538 | 31e: f3 e0 ldi r31, 0x03 ; 3 |
||
539 | 320: e5 0f add r30, r21 |
||
540 | 322: f1 1d adc r31, r1 |
||
541 | 324: 80 83 st Z, r24 |
||
542 | if(buf_ptr < MAX_RX_BUF) buf_ptr++; |
||
543 | 326: 54 36 cpi r21, 0x64 ; 100 |
||
544 | 328: 28 f4 brcc .+10 ; 0x334 <process_rxdata+0x17e> |
||
545 | 32a: 85 2f mov r24, r21 |
||
546 | 32c: 8f 5f subi r24, 0xFF ; 255 |
||
547 | 32e: 80 93 e6 03 sts 0x03E6, r24 |
||
548 | 332: 02 c0 rjmp .+4 ; 0x338 <process_rxdata+0x182> |
||
549 | else UartState = 0; |
||
550 | 334: 10 92 e5 03 sts 0x03E5, r1 |
||
551 | crc += SioTmp; |
||
552 | 338: 80 91 e1 03 lds r24, 0x03E1 |
||
553 | 33c: 20 91 e9 03 lds r18, 0x03E9 |
||
554 | 340: 30 91 ea 03 lds r19, 0x03EA |
||
555 | 344: 28 0f add r18, r24 |
||
556 | 346: 31 1d adc r19, r1 |
||
557 | 348: 30 93 ea 03 sts 0x03EA, r19 |
||
558 | 34c: 20 93 e9 03 sts 0x03E9, r18 |
||
559 | display_line1[2]='C'; |
||
560 | 350: 83 e4 ldi r24, 0x43 ; 67 |
||
561 | 352: 80 93 5a 04 sts 0x045A, r24 |
||
562 | 356: 05 c0 rjmp .+10 ; 0x362 <process_rxdata+0x1ac> |
||
563 | break; |
||
564 | default: |
||
565 | UartState = 0; |
||
566 | 358: 10 92 e5 03 sts 0x03E5, r1 |
||
567 | display_line1[2]='D'; |
||
568 | 35c: 84 e4 ldi r24, 0x44 ; 68 |
||
569 | 35e: 80 93 5a 04 sts 0x045A, r24 |
||
570 | break; |
||
571 | } |
||
572 | |||
573 | |||
574 | if(rxtx[8]==0x00) |
||
575 | 362: 80 91 0a 01 lds r24, 0x010A |
||
576 | 366: 88 23 and r24, r24 |
||
577 | 368: 21 f4 brne .+8 ; 0x372 <process_rxdata+0x1bc> |
||
578 | rxtx[8]=0x01; |
||
579 | 36a: 81 e0 ldi r24, 0x01 ; 1 |
||
580 | 36c: 80 93 0a 01 sts 0x010A, r24 |
||
581 | 370: 08 95 ret |
||
582 | else |
||
583 | rxtx[8]=0x00; |
||
584 | 372: 10 92 0a 01 sts 0x010A, r1 |
||
585 | 376: 08 95 ret |
||
586 | |||
587 | 00000378 <convert_uint16>: |
||
588 | } |
||
589 | |||
590 | //----------------------------------------------------------------------------- |
||
591 | // convert_uint16 |
||
592 | //----------------------------------------------------------------------------- |
||
593 | extern void convert_uint16(unsigned char * c,int len, unsigned int value) |
||
594 | { |
||
595 | 378: af 92 push r10 |
||
596 | 37a: bf 92 push r11 |
||
597 | 37c: cf 92 push r12 |
||
598 | 37e: df 92 push r13 |
||
599 | 380: ef 92 push r14 |
||
600 | 382: ff 92 push r15 |
||
601 | 384: 0f 93 push r16 |
||
602 | 386: 1f 93 push r17 |
||
603 | 388: cf 93 push r28 |
||
604 | 38a: df 93 push r29 |
||
605 | 38c: cd b7 in r28, 0x3d ; 61 |
||
606 | 38e: de b7 in r29, 0x3e ; 62 |
||
607 | 390: 27 97 sbiw r28, 0x07 ; 7 |
||
608 | 392: 0f b6 in r0, 0x3f ; 63 |
||
609 | 394: f8 94 cli |
||
610 | 396: de bf out 0x3e, r29 ; 62 |
||
611 | 398: 0f be out 0x3f, r0 ; 63 |
||
612 | 39a: cd bf out 0x3d, r28 ; 61 |
||
613 | 39c: 6c 01 movw r12, r24 |
||
614 | 39e: 7b 01 movw r14, r22 |
||
615 | int tempvalue, i; |
||
616 | char c1[7]; |
||
617 | |||
618 | if(len<1) return; |
||
619 | 3a0: 16 16 cp r1, r22 |
||
620 | 3a2: 17 06 cpc r1, r23 |
||
621 | 3a4: 0c f0 brlt .+2 ; 0x3a8 <convert_uint16+0x30> |
||
622 | 3a6: 45 c0 rjmp .+138 ; 0x432 <convert_uint16+0xba> |
||
623 | 3a8: 80 e0 ldi r24, 0x00 ; 0 |
||
624 | 3aa: 90 e0 ldi r25, 0x00 ; 0 |
||
625 | 3ac: 9e 01 movw r18, r28 |
||
626 | 3ae: 2f 5f subi r18, 0xFF ; 255 |
||
627 | 3b0: 3f 4f sbci r19, 0xFF ; 255 |
||
628 | 3b2: 60 e3 ldi r22, 0x30 ; 48 |
||
629 | for(i=0;i<len;i++) { |
||
630 | c1[i]='0'; |
||
631 | 3b4: f9 01 movw r30, r18 |
||
632 | 3b6: e8 0f add r30, r24 |
||
633 | 3b8: f9 1f adc r31, r25 |
||
634 | 3ba: 60 83 st Z, r22 |
||
635 | 3bc: 01 96 adiw r24, 0x01 ; 1 |
||
636 | 3be: e8 16 cp r14, r24 |
||
637 | 3c0: f9 06 cpc r15, r25 |
||
638 | 3c2: c1 f7 brne .-16 ; 0x3b4 <convert_uint16+0x3c> |
||
639 | } |
||
640 | |||
641 | i=len-1; |
||
642 | while(value>0) { |
||
643 | 3c4: 41 15 cp r20, r1 |
||
644 | 3c6: 51 05 cpc r21, r1 |
||
645 | 3c8: 19 f1 breq .+70 ; 0x410 <convert_uint16+0x98> |
||
646 | 3ca: 87 01 movw r16, r14 |
||
647 | 3cc: 01 50 subi r16, 0x01 ; 1 |
||
648 | 3ce: 10 40 sbci r17, 0x00 ; 0 |
||
649 | 3d0: 5e 01 movw r10, r28 |
||
650 | 3d2: 08 94 sec |
||
651 | 3d4: a1 1c adc r10, r1 |
||
652 | 3d6: b1 1c adc r11, r1 |
||
653 | tempvalue=value; |
||
654 | 3d8: fa 01 movw r30, r20 |
||
655 | value=value/10; |
||
656 | 3da: ca 01 movw r24, r20 |
||
657 | 3dc: 6a e0 ldi r22, 0x0A ; 10 |
||
658 | 3de: 70 e0 ldi r23, 0x00 ; 0 |
||
659 | 3e0: c3 d6 rcall .+3462 ; 0x1168 <__udivmodhi4> |
||
660 | 3e2: ab 01 movw r20, r22 |
||
661 | c1[i]=(tempvalue-(value*10))+'0'; |
||
662 | 3e4: d5 01 movw r26, r10 |
||
663 | 3e6: a0 0f add r26, r16 |
||
664 | 3e8: b1 1f adc r27, r17 |
||
665 | 3ea: cb 01 movw r24, r22 |
||
666 | 3ec: 88 0f add r24, r24 |
||
667 | 3ee: 99 1f adc r25, r25 |
||
668 | 3f0: 9b 01 movw r18, r22 |
||
669 | 3f2: 22 0f add r18, r18 |
||
670 | 3f4: 33 1f adc r19, r19 |
||
671 | 3f6: 22 0f add r18, r18 |
||
672 | 3f8: 33 1f adc r19, r19 |
||
673 | 3fa: 22 0f add r18, r18 |
||
674 | 3fc: 33 1f adc r19, r19 |
||
675 | 3fe: 82 0f add r24, r18 |
||
676 | 400: 93 1f adc r25, r19 |
||
677 | 402: e8 1b sub r30, r24 |
||
678 | 404: e0 5d subi r30, 0xD0 ; 208 |
||
679 | 406: ec 93 st X, r30 |
||
680 | i--; |
||
681 | 408: 01 50 subi r16, 0x01 ; 1 |
||
682 | 40a: 10 40 sbci r17, 0x00 ; 0 |
||
683 | 40c: 67 2b or r22, r23 |
||
684 | 40e: 21 f7 brne .-56 ; 0x3d8 <convert_uint16+0x60> |
||
685 | 410: 20 e0 ldi r18, 0x00 ; 0 |
||
686 | 412: 30 e0 ldi r19, 0x00 ; 0 |
||
687 | 414: ae 01 movw r20, r28 |
||
688 | 416: 4f 5f subi r20, 0xFF ; 255 |
||
689 | 418: 5f 4f sbci r21, 0xFF ; 255 |
||
690 | } |
||
691 | for(i=0;i<len;i++) { |
||
692 | *c=c1[i]; |
||
693 | 41a: fa 01 movw r30, r20 |
||
694 | 41c: e2 0f add r30, r18 |
||
695 | 41e: f3 1f adc r31, r19 |
||
696 | 420: 80 81 ld r24, Z |
||
697 | 422: f6 01 movw r30, r12 |
||
698 | 424: 81 93 st Z+, r24 |
||
699 | 426: 6f 01 movw r12, r30 |
||
700 | 428: 2f 5f subi r18, 0xFF ; 255 |
||
701 | 42a: 3f 4f sbci r19, 0xFF ; 255 |
||
702 | 42c: e2 16 cp r14, r18 |
||
703 | 42e: f3 06 cpc r15, r19 |
||
704 | 430: a1 f7 brne .-24 ; 0x41a <convert_uint16+0xa2> |
||
705 | 432: 27 96 adiw r28, 0x07 ; 7 |
||
706 | 434: 0f b6 in r0, 0x3f ; 63 |
||
707 | 436: f8 94 cli |
||
708 | 438: de bf out 0x3e, r29 ; 62 |
||
709 | 43a: 0f be out 0x3f, r0 ; 63 |
||
710 | 43c: cd bf out 0x3d, r28 ; 61 |
||
711 | 43e: df 91 pop r29 |
||
712 | 440: cf 91 pop r28 |
||
713 | 442: 1f 91 pop r17 |
||
714 | 444: 0f 91 pop r16 |
||
715 | 446: ff 90 pop r15 |
||
716 | 448: ef 90 pop r14 |
||
717 | 44a: df 90 pop r13 |
||
718 | 44c: cf 90 pop r12 |
||
719 | 44e: bf 90 pop r11 |
||
720 | 450: af 90 pop r10 |
||
721 | 452: 08 95 ret |
||
722 | |||
723 | 00000454 <main>: |
||
724 | c++; |
||
725 | |||
726 | } |
||
727 | } |
||
728 | |||
729 | |||
730 | //----------------------------------------------------------------------------- |
||
731 | //main |
||
732 | //main execution loop |
||
733 | //----------------------------------------------------------------------------- |
||
734 | extern int main(void) |
||
735 | { |
||
736 | 454: af 92 push r10 |
||
737 | 456: bf 92 push r11 |
||
738 | 458: cf 92 push r12 |
||
739 | 45a: df 92 push r13 |
||
740 | 45c: ff 92 push r15 |
||
741 | 45e: 0f 93 push r16 |
||
742 | 460: 1f 93 push r17 |
||
743 | 462: cf 93 push r28 |
||
744 | 464: df 93 push r29 |
||
745 | unsigned char c; |
||
746 | unsigned int i; |
||
747 | int i1; |
||
748 | |||
749 | HIDEGRAPHIC; |
||
750 | 466: 10 92 00 01 sts 0x0100, r1 |
||
751 | HIDEGRAPHICBACK; |
||
752 | 46a: 10 92 01 01 sts 0x0101, r1 |
||
753 | |||
754 | CLKPR=0x80; |
||
755 | 46e: e1 e6 ldi r30, 0x61 ; 97 |
||
756 | 470: f0 e0 ldi r31, 0x00 ; 0 |
||
757 | 472: 80 e8 ldi r24, 0x80 ; 128 |
||
758 | 474: 80 83 st Z, r24 |
||
759 | CLKPR=0x00; |
||
760 | 476: 10 82 st Z, r1 |
||
761 | |||
762 | // PORT D - unused right now |
||
763 | PORTD = 0x10; |
||
764 | 478: 80 e1 ldi r24, 0x10 ; 16 |
||
765 | 47a: 8b b9 out 0x0b, r24 ; 11 |
||
766 | DDRD = 0x00; |
||
767 | 47c: 1a b8 out 0x0a, r1 ; 10 |
||
768 | |||
769 | // USART initialization |
||
770 | // Communication Parameters: 8 Data, 1 Stop, No Parity |
||
771 | // USART Receiver: On |
||
772 | // USART Transmitter: On |
||
773 | // USART Mode: Asynchronous |
||
774 | // USART Baud rate: 57600 |
||
775 | UCSR0A=0x00; |
||
776 | 47e: 10 92 c0 00 sts 0x00C0, r1 |
||
777 | UCSR0B=0x18; |
||
778 | 482: 88 e1 ldi r24, 0x18 ; 24 |
||
779 | 484: 80 93 c1 00 sts 0x00C1, r24 |
||
780 | UCSR0C=0x86; |
||
781 | 488: 86 e8 ldi r24, 0x86 ; 134 |
||
782 | 48a: 80 93 c2 00 sts 0x00C2, r24 |
||
783 | #ifdef CPUSPEED_20 //20.000MHz |
||
784 | UBRR0H=0x00; |
||
785 | 48e: 10 92 c5 00 sts 0x00C5, r1 |
||
786 | UBRR0L=0x15; |
||
787 | 492: 85 e1 ldi r24, 0x15 ; 21 |
||
788 | 494: 80 93 c4 00 sts 0x00C4, r24 |
||
789 | #endif |
||
790 | |||
791 | #ifdef CPUSPEED_16 //16.000MHz |
||
792 | UBRR0H=0x00; |
||
793 | UBRR0L=0x10; |
||
794 | #endif |
||
795 | |||
796 | #ifdef CPUSPEED_11059 //11.059MHz |
||
797 | UBRR0H=0x00; |
||
798 | UBRR0L=0x0B; |
||
799 | #endif |
||
800 | |||
801 | // Initialize the 8-bit Timer0 to clock at 20/8 MHz */ |
||
802 | TCCR0A=0x00; |
||
803 | 498: 14 bc out 0x24, r1 ; 36 |
||
804 | TCCR0B=0x01; |
||
805 | 49a: 91 e0 ldi r25, 0x01 ; 1 |
||
806 | 49c: 95 bd out 0x25, r25 ; 37 |
||
807 | |||
808 | // Initialize the SPI Interface |
||
809 | PORTB = 0x00; |
||
810 | 49e: 15 b8 out 0x05, r1 ; 5 |
||
811 | DDRB = 0x3E; //0x3E |
||
812 | 4a0: 8e e3 ldi r24, 0x3E ; 62 |
||
813 | 4a2: 84 b9 out 0x04, r24 ; 4 |
||
814 | //DDRB = 0x3A; |
||
815 | |||
816 | SPCR = (1<<SPE) | (1<<MSTR) | (1<<CPHA); |
||
817 | 4a4: 84 e5 ldi r24, 0x54 ; 84 |
||
818 | 4a6: 8c bd out 0x2c, r24 ; 44 |
||
819 | SPSR = 1; |
||
820 | 4a8: 9d bd out 0x2d, r25 ; 45 |
||
821 | |||
822 | // External Interrupt(s) initialization |
||
823 | // INT0: On |
||
824 | // INT0 Mode: Falling Edge |
||
825 | // INT1: On |
||
826 | // INT1 Mode: Falling Edge |
||
827 | // Interrupt on any change on pins PCINT0-7: Off |
||
828 | // Interrupt on any change on pins PCINT8-14: Off |
||
829 | // Interrupt on any change on pins PCINT16-23: Off |
||
830 | EICRA=0x0A; |
||
831 | 4aa: 8a e0 ldi r24, 0x0A ; 10 |
||
832 | 4ac: 80 93 69 00 sts 0x0069, r24 |
||
833 | EIMSK=0x03; |
||
834 | 4b0: 83 e0 ldi r24, 0x03 ; 3 |
||
835 | 4b2: 8d bb out 0x1d, r24 ; 29 |
||
836 | EIFR=0x03; |
||
837 | 4b4: 8c bb out 0x1c, r24 ; 28 |
||
838 | PCICR=0x00; |
||
839 | 4b6: 10 92 68 00 sts 0x0068, r1 |
||
840 | |||
841 | // Enable interrupts |
||
842 | sei(); |
||
843 | 4ba: 78 94 sei |
||
844 | |||
845 | // MAIN lOOP |
||
846 | display_line1[0]='X'; |
||
847 | 4bc: 88 e5 ldi r24, 0x58 ; 88 |
||
848 | 4be: 80 93 58 04 sts 0x0458, r24 |
||
849 | display_line1[1]='X'; |
||
850 | 4c2: 80 93 59 04 sts 0x0459, r24 |
||
851 | display_line1[2]='X'; |
||
852 | 4c6: 80 93 5a 04 sts 0x045A, r24 |
||
853 | display_line1[3]='X'; |
||
854 | 4ca: 80 93 5b 04 sts 0x045B, r24 |
||
855 | display_line1[4]='X'; |
||
856 | 4ce: 80 93 5c 04 sts 0x045C, r24 |
||
857 | display_line1[5]='X'; |
||
858 | 4d2: 80 93 5d 04 sts 0x045D, r24 |
||
859 | |||
860 | NeuerDatensatzEmpfangen = 0; |
||
861 | 4d6: 10 92 e2 03 sts 0x03E2, r1 |
||
862 | |||
863 | framecounter = 0; |
||
864 | 4da: 10 92 da 03 sts 0x03DA, r1 |
||
865 | |||
866 | GR_Clear(); |
||
867 | 4de: d7 dd rcall .-1106 ; 0x8e <GR_Clear> |
||
868 | GR_Copy(&grlevel[0],(GR_Lines/2)*7,21); |
||
869 | 4e0: 45 e1 ldi r20, 0x15 ; 21 |
||
870 | 4e2: 50 e0 ldi r21, 0x00 ; 0 |
||
871 | 4e4: 6c e8 ldi r22, 0x8C ; 140 |
||
872 | 4e6: 70 e0 ldi r23, 0x00 ; 0 |
||
873 | 4e8: 8b eb ldi r24, 0xBB ; 187 |
||
874 | 4ea: 93 e0 ldi r25, 0x03 ; 3 |
||
875 | 4ec: bf dd rcall .-1154 ; 0x6c <GR_Copy> |
||
876 | SHOWGRAPHIC; |
||
877 | 4ee: 81 e0 ldi r24, 0x01 ; 1 |
||
878 | 4f0: 80 93 00 01 sts 0x0100, r24 |
||
879 | 4f4: ff 24 eor r15, r15 |
||
880 | 4f6: f3 94 inc r15 |
||
881 | 4f8: 0f 2e mov r0, r31 |
||
882 | 4fa: ff ee ldi r31, 0xEF ; 239 |
||
883 | 4fc: cf 2e mov r12, r31 |
||
884 | 4fe: f3 e0 ldi r31, 0x03 ; 3 |
||
885 | 500: df 2e mov r13, r31 |
||
886 | 502: f0 2d mov r31, r0 |
||
887 | 504: 08 e0 ldi r16, 0x08 ; 8 |
||
888 | 506: 14 e0 ldi r17, 0x04 ; 4 |
||
889 | 508: 0f 2e mov r0, r31 |
||
890 | 50a: fb eb ldi r31, 0xBB ; 187 |
||
891 | 50c: af 2e mov r10, r31 |
||
892 | 50e: f3 e0 ldi r31, 0x03 ; 3 |
||
893 | 510: bf 2e mov r11, r31 |
||
894 | 512: f0 2d mov r31, r0 |
||
895 | |||
896 | while (1) |
||
897 | { |
||
898 | |||
899 | if (UCSR0A & (1<<RXC0)) { |
||
900 | 514: 80 91 c0 00 lds r24, 0x00C0 |
||
901 | 518: 88 23 and r24, r24 |
||
902 | 51a: 2c f4 brge .+10 ; 0x526 <__stack+0x27> |
||
903 | c=UDR0; |
||
904 | 51c: e6 ec ldi r30, 0xC6 ; 198 |
||
905 | 51e: f0 e0 ldi r31, 0x00 ; 0 |
||
906 | 520: 80 81 ld r24, Z |
||
907 | UDR0=c; |
||
908 | 522: 80 83 st Z, r24 |
||
909 | process_rxdata(c); |
||
910 | 524: 48 de rcall .-880 ; 0x1b6 <process_rxdata> |
||
911 | } |
||
912 | |||
913 | if (framecounter<25) showmessage1=1; else showmessage1=0; |
||
914 | 526: 80 91 da 03 lds r24, 0x03DA |
||
915 | 52a: 89 31 cpi r24, 0x19 ; 25 |
||
916 | 52c: 18 f4 brcc .+6 ; 0x534 <__stack+0x35> |
||
917 | 52e: f0 92 d9 03 sts 0x03D9, r15 |
||
918 | 532: 06 c0 rjmp .+12 ; 0x540 <__stack+0x41> |
||
919 | 534: 10 92 d9 03 sts 0x03D9, r1 |
||
920 | if (framecounter>50) framecounter = 0; |
||
921 | 538: 83 33 cpi r24, 0x33 ; 51 |
||
922 | 53a: 10 f0 brcs .+4 ; 0x540 <__stack+0x41> |
||
923 | 53c: 10 92 da 03 sts 0x03DA, r1 |
||
924 | |||
925 | if(NeuerDatensatzEmpfangen) { |
||
926 | 540: 80 91 e2 03 lds r24, 0x03E2 |
||
927 | 544: 88 23 and r24, r24 |
||
928 | 546: 31 f3 breq .-52 ; 0x514 <__stack+0x15> |
||
929 | switch(RxdBuffer[2]) |
||
930 | 548: 80 91 f6 03 lds r24, 0x03F6 |
||
931 | 54c: 84 34 cpi r24, 0x44 ; 68 |
||
932 | 54e: 09 f0 breq .+2 ; 0x552 <__stack+0x53> |
||
933 | 550: 5f c1 rjmp .+702 ; 0x810 <__stack+0x311> |
||
934 | { |
||
935 | case 'D': |
||
936 | //decode the Messagee |
||
937 | Decode64((unsigned char *)&DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
||
938 | 552: 20 91 e4 03 lds r18, 0x03E4 |
||
939 | 556: 43 e0 ldi r20, 0x03 ; 3 |
||
940 | 558: 62 e4 ldi r22, 0x42 ; 66 |
||
941 | 55a: 82 e6 ldi r24, 0x62 ; 98 |
||
942 | 55c: 94 e0 ldi r25, 0x04 ; 4 |
||
943 | 55e: a0 dd rcall .-1216 ; 0xa0 <Decode64> |
||
944 | |||
945 | // Heading information |
||
946 | convert_uint16((unsigned char *)&heading[1],3,(unsigned int)DebugOut.Analog[8]); |
||
947 | 560: 40 91 74 04 lds r20, 0x0474 |
||
948 | 564: 50 91 75 04 lds r21, 0x0475 |
||
949 | 568: 63 e0 ldi r22, 0x03 ; 3 |
||
950 | 56a: 70 e0 ldi r23, 0x00 ; 0 |
||
951 | 56c: 8c e0 ldi r24, 0x0C ; 12 |
||
952 | 56e: 91 e0 ldi r25, 0x01 ; 1 |
||
953 | 570: 03 df rcall .-506 ; 0x378 <convert_uint16> |
||
954 | |||
955 | // Altitute Information |
||
956 | if(DebugOut.Analog[5]>old_alt) { |
||
957 | 572: 20 91 6e 04 lds r18, 0x046E |
||
958 | 576: 30 91 6f 04 lds r19, 0x046F |
||
959 | 57a: 80 91 eb 03 lds r24, 0x03EB |
||
960 | 57e: 90 91 ec 03 lds r25, 0x03EC |
||
961 | 582: 82 17 cp r24, r18 |
||
962 | 584: 93 07 cpc r25, r19 |
||
963 | 586: 64 f4 brge .+24 ; 0x5a0 <__stack+0xa1> |
||
964 | alt_inc=1; |
||
965 | 588: f0 92 de 03 sts 0x03DE, r15 |
||
966 | alt_dec=0; |
||
967 | 58c: 10 92 df 03 sts 0x03DF, r1 |
||
968 | alt_delta=DebugOut.Analog[5]-old_alt; |
||
969 | 590: a9 01 movw r20, r18 |
||
970 | 592: 48 1b sub r20, r24 |
||
971 | 594: 59 0b sbc r21, r25 |
||
972 | 596: 50 93 dd 03 sts 0x03DD, r21 |
||
973 | 59a: 40 93 dc 03 sts 0x03DC, r20 |
||
974 | 59e: 17 c0 rjmp .+46 ; 0x5ce <__stack+0xcf> |
||
975 | } |
||
976 | else { |
||
977 | if(DebugOut.Analog[5]<old_alt) { |
||
978 | 5a0: 28 17 cp r18, r24 |
||
979 | 5a2: 39 07 cpc r19, r25 |
||
980 | 5a4: 5c f4 brge .+22 ; 0x5bc <__stack+0xbd> |
||
981 | alt_inc=0; |
||
982 | 5a6: 10 92 de 03 sts 0x03DE, r1 |
||
983 | alt_dec=1; |
||
984 | 5aa: f0 92 df 03 sts 0x03DF, r15 |
||
985 | alt_delta=old_alt-DebugOut.Analog[5]; |
||
986 | 5ae: 82 1b sub r24, r18 |
||
987 | 5b0: 93 0b sbc r25, r19 |
||
988 | 5b2: 90 93 dd 03 sts 0x03DD, r25 |
||
989 | 5b6: 80 93 dc 03 sts 0x03DC, r24 |
||
990 | 5ba: 09 c0 rjmp .+18 ; 0x5ce <__stack+0xcf> |
||
991 | } |
||
992 | else { |
||
993 | alt_inc=0; |
||
994 | 5bc: 10 92 de 03 sts 0x03DE, r1 |
||
995 | alt_dec=0; |
||
996 | 5c0: 10 92 df 03 sts 0x03DF, r1 |
||
997 | alt_delta=0; |
||
998 | 5c4: 10 92 dd 03 sts 0x03DD, r1 |
||
999 | 5c8: 10 92 dc 03 sts 0x03DC, r1 |
||
1000 | 5cc: 0c c0 rjmp .+24 ; 0x5e6 <__stack+0xe7> |
||
1001 | } |
||
1002 | } |
||
1003 | if(alt_delta>60) alt_delta=60; |
||
1004 | 5ce: 80 91 dc 03 lds r24, 0x03DC |
||
1005 | 5d2: 90 91 dd 03 lds r25, 0x03DD |
||
1006 | 5d6: cd 97 sbiw r24, 0x3d ; 61 |
||
1007 | 5d8: 30 f0 brcs .+12 ; 0x5e6 <__stack+0xe7> |
||
1008 | 5da: 8c e3 ldi r24, 0x3C ; 60 |
||
1009 | 5dc: 90 e0 ldi r25, 0x00 ; 0 |
||
1010 | 5de: 90 93 dd 03 sts 0x03DD, r25 |
||
1011 | 5e2: 80 93 dc 03 sts 0x03DC, r24 |
||
1012 | if(alt_delta<0) alt_delta=0; |
||
1013 | |||
1014 | old_alt=DebugOut.Analog[5]; |
||
1015 | 5e6: 30 93 ec 03 sts 0x03EC, r19 |
||
1016 | 5ea: 20 93 eb 03 sts 0x03EB, r18 |
||
1017 | if(DebugOut.Analog[5]<0) { |
||
1018 | 5ee: 33 23 and r19, r19 |
||
1019 | 5f0: 5c f4 brge .+22 ; 0x608 <__stack+0x109> |
||
1020 | altv[0]='-'; |
||
1021 | 5f2: 8d e2 ldi r24, 0x2D ; 45 |
||
1022 | 5f4: 80 93 30 01 sts 0x0130, r24 |
||
1023 | DebugOut.Analog[5]=(0xffff-(unsigned int)DebugOut.Analog[5]); |
||
1024 | 5f8: c9 01 movw r24, r18 |
||
1025 | 5fa: 80 95 com r24 |
||
1026 | 5fc: 90 95 com r25 |
||
1027 | 5fe: 90 93 6f 04 sts 0x046F, r25 |
||
1028 | 602: 80 93 6e 04 sts 0x046E, r24 |
||
1029 | 606: 03 c0 rjmp .+6 ; 0x60e <__stack+0x10f> |
||
1030 | } |
||
1031 | else { |
||
1032 | altv[0]='+'; |
||
1033 | 608: 8b e2 ldi r24, 0x2B ; 43 |
||
1034 | 60a: 80 93 30 01 sts 0x0130, r24 |
||
1035 | } |
||
1036 | convert_uint16((unsigned char *)&altv[1],5,(unsigned int)DebugOut.Analog[5]); |
||
1037 | 60e: 40 91 6e 04 lds r20, 0x046E |
||
1038 | 612: 50 91 6f 04 lds r21, 0x046F |
||
1039 | 616: 65 e0 ldi r22, 0x05 ; 5 |
||
1040 | 618: 70 e0 ldi r23, 0x00 ; 0 |
||
1041 | 61a: 81 e3 ldi r24, 0x31 ; 49 |
||
1042 | 61c: 91 e0 ldi r25, 0x01 ; 1 |
||
1043 | 61e: ac de rcall .-680 ; 0x378 <convert_uint16> |
||
1044 | |||
1045 | //Voltage value |
||
1046 | convert_uint16((unsigned char *)&templine[0],5,(unsigned int)DebugOut.Analog[9]); |
||
1047 | 620: 40 91 76 04 lds r20, 0x0476 |
||
1048 | 624: 50 91 77 04 lds r21, 0x0477 |
||
1049 | 628: 65 e0 ldi r22, 0x05 ; 5 |
||
1050 | 62a: 70 e0 ldi r23, 0x00 ; 0 |
||
1051 | 62c: c6 01 movw r24, r12 |
||
1052 | 62e: a4 de rcall .-696 ; 0x378 <convert_uint16> |
||
1053 | ubat[3]=templine[2]; |
||
1054 | 630: 80 91 f1 03 lds r24, 0x03F1 |
||
1055 | 634: 80 93 1b 01 sts 0x011B, r24 |
||
1056 | ubat[4]=templine[3]; |
||
1057 | 638: 80 91 f2 03 lds r24, 0x03F2 |
||
1058 | 63c: 80 93 1c 01 sts 0x011C, r24 |
||
1059 | ubat[6]=templine[4]; |
||
1060 | 640: 80 91 f3 03 lds r24, 0x03F3 |
||
1061 | 644: 80 93 1e 01 sts 0x011E, r24 |
||
1062 | |||
1063 | if(DebugOut.Analog[9]>90) bat[0]=0x08; else bat[0]=0x04; |
||
1064 | 648: 80 91 76 04 lds r24, 0x0476 |
||
1065 | 64c: 90 91 77 04 lds r25, 0x0477 |
||
1066 | 650: 8b 35 cpi r24, 0x5B ; 91 |
||
1067 | 652: 91 05 cpc r25, r1 |
||
1068 | 654: 34 f0 brlt .+12 ; 0x662 <__stack+0x163> |
||
1069 | 656: 00 93 10 01 sts 0x0110, r16 |
||
1070 | if(DebugOut.Analog[9]>95) bat[1]=0x08; else bat[1]=0x04; |
||
1071 | 65a: 80 36 cpi r24, 0x60 ; 96 |
||
1072 | 65c: 91 05 cpc r25, r1 |
||
1073 | 65e: 24 f4 brge .+8 ; 0x668 <__stack+0x169> |
||
1074 | 660: 09 c0 rjmp .+18 ; 0x674 <__stack+0x175> |
||
1075 | 662: 10 93 10 01 sts 0x0110, r17 |
||
1076 | 666: 06 c0 rjmp .+12 ; 0x674 <__stack+0x175> |
||
1077 | 668: 00 93 11 01 sts 0x0111, r16 |
||
1078 | if(DebugOut.Analog[9]>100) bat[2]=0x08; else bat[2]=0x04; |
||
1079 | 66c: 85 36 cpi r24, 0x65 ; 101 |
||
1080 | 66e: 91 05 cpc r25, r1 |
||
1081 | 670: 24 f4 brge .+8 ; 0x67a <__stack+0x17b> |
||
1082 | 672: 09 c0 rjmp .+18 ; 0x686 <__stack+0x187> |
||
1083 | 674: 10 93 11 01 sts 0x0111, r17 |
||
1084 | 678: 06 c0 rjmp .+12 ; 0x686 <__stack+0x187> |
||
1085 | 67a: 00 93 12 01 sts 0x0112, r16 |
||
1086 | if(DebugOut.Analog[9]>105) bat[3]=0x08; else bat[3]=0x04; |
||
1087 | 67e: 8a 36 cpi r24, 0x6A ; 106 |
||
1088 | 680: 91 05 cpc r25, r1 |
||
1089 | 682: 24 f4 brge .+8 ; 0x68c <__stack+0x18d> |
||
1090 | 684: 09 c0 rjmp .+18 ; 0x698 <__stack+0x199> |
||
1091 | 686: 10 93 12 01 sts 0x0112, r17 |
||
1092 | 68a: 06 c0 rjmp .+12 ; 0x698 <__stack+0x199> |
||
1093 | 68c: 00 93 13 01 sts 0x0113, r16 |
||
1094 | if(DebugOut.Analog[9]>110) bat[4]=0x08; else bat[4]=0x04; |
||
1095 | 690: 8f 36 cpi r24, 0x6F ; 111 |
||
1096 | 692: 91 05 cpc r25, r1 |
||
1097 | 694: 24 f4 brge .+8 ; 0x69e <__stack+0x19f> |
||
1098 | 696: 09 c0 rjmp .+18 ; 0x6aa <__stack+0x1ab> |
||
1099 | 698: 10 93 13 01 sts 0x0113, r17 |
||
1100 | 69c: 06 c0 rjmp .+12 ; 0x6aa <__stack+0x1ab> |
||
1101 | 69e: 00 93 14 01 sts 0x0114, r16 |
||
1102 | if(DebugOut.Analog[9]>115) bat[5]=0x08; else bat[5]=0x04; |
||
1103 | 6a2: 84 37 cpi r24, 0x74 ; 116 |
||
1104 | 6a4: 91 05 cpc r25, r1 |
||
1105 | 6a6: 24 f4 brge .+8 ; 0x6b0 <__stack+0x1b1> |
||
1106 | 6a8: 09 c0 rjmp .+18 ; 0x6bc <__stack+0x1bd> |
||
1107 | 6aa: 10 93 14 01 sts 0x0114, r17 |
||
1108 | 6ae: 06 c0 rjmp .+12 ; 0x6bc <__stack+0x1bd> |
||
1109 | 6b0: 00 93 15 01 sts 0x0115, r16 |
||
1110 | if(DebugOut.Analog[9]>120) bat[6]=0x08; else bat[6]=0x04; |
||
1111 | 6b4: 89 37 cpi r24, 0x79 ; 121 |
||
1112 | 6b6: 91 05 cpc r25, r1 |
||
1113 | 6b8: 24 f4 brge .+8 ; 0x6c2 <__stack+0x1c3> |
||
1114 | 6ba: 09 c0 rjmp .+18 ; 0x6ce <__stack+0x1cf> |
||
1115 | 6bc: 10 93 15 01 sts 0x0115, r17 |
||
1116 | 6c0: 06 c0 rjmp .+12 ; 0x6ce <__stack+0x1cf> |
||
1117 | 6c2: 00 93 16 01 sts 0x0116, r16 |
||
1118 | if(DebugOut.Analog[9]>125) bat[7]=0x08; else bat[7]=0x04; |
||
1119 | 6c6: 8e 37 cpi r24, 0x7E ; 126 |
||
1120 | 6c8: 91 05 cpc r25, r1 |
||
1121 | 6ca: 4c f4 brge .+18 ; 0x6de <__stack+0x1df> |
||
1122 | 6cc: b4 c0 rjmp .+360 ; 0x836 <__stack+0x337> |
||
1123 | 6ce: 10 93 16 01 sts 0x0116, r17 |
||
1124 | 6d2: 10 93 17 01 sts 0x0117, r17 |
||
1125 | |||
1126 | if(DebugOut.Analog[9]<94) lowbat=1; else lowbat = 0; |
||
1127 | 6d6: 8e 35 cpi r24, 0x5E ; 94 |
||
1128 | 6d8: 91 05 cpc r25, r1 |
||
1129 | 6da: 24 f0 brlt .+8 ; 0x6e4 <__stack+0x1e5> |
||
1130 | 6dc: 06 c0 rjmp .+12 ; 0x6ea <__stack+0x1eb> |
||
1131 | 6de: 00 93 17 01 sts 0x0117, r16 |
||
1132 | 6e2: 03 c0 rjmp .+6 ; 0x6ea <__stack+0x1eb> |
||
1133 | 6e4: f0 92 d8 03 sts 0x03D8, r15 |
||
1134 | 6e8: 02 c0 rjmp .+4 ; 0x6ee <__stack+0x1ef> |
||
1135 | 6ea: 10 92 d8 03 sts 0x03D8, r1 |
||
1136 | |||
1137 | //RX level |
||
1138 | i=((unsigned int)DebugOut.Analog[10]*100)/255; |
||
1139 | 6ee: 20 91 78 04 lds r18, 0x0478 |
||
1140 | 6f2: 30 91 79 04 lds r19, 0x0479 |
||
1141 | 6f6: 84 e6 ldi r24, 0x64 ; 100 |
||
1142 | 6f8: 90 e0 ldi r25, 0x00 ; 0 |
||
1143 | 6fa: ac 01 movw r20, r24 |
||
1144 | 6fc: 24 9f mul r18, r20 |
||
1145 | 6fe: c0 01 movw r24, r0 |
||
1146 | 700: 25 9f mul r18, r21 |
||
1147 | 702: 90 0d add r25, r0 |
||
1148 | 704: 34 9f mul r19, r20 |
||
1149 | 706: 90 0d add r25, r0 |
||
1150 | 708: 11 24 eor r1, r1 |
||
1151 | 70a: 6f ef ldi r22, 0xFF ; 255 |
||
1152 | 70c: 70 e0 ldi r23, 0x00 ; 0 |
||
1153 | 70e: 2c d5 rcall .+2648 ; 0x1168 <__udivmodhi4> |
||
1154 | 710: eb 01 movw r28, r22 |
||
1155 | |||
1156 | convert_uint16((unsigned char *)&templine[0],5,(unsigned int)i); |
||
1157 | 712: ab 01 movw r20, r22 |
||
1158 | 714: 65 e0 ldi r22, 0x05 ; 5 |
||
1159 | 716: 70 e0 ldi r23, 0x00 ; 0 |
||
1160 | 718: c6 01 movw r24, r12 |
||
1161 | 71a: 2e de rcall .-932 ; 0x378 <convert_uint16> |
||
1162 | urx[4]=templine[2]; |
||
1163 | 71c: 80 91 f1 03 lds r24, 0x03F1 |
||
1164 | 720: 80 93 2c 01 sts 0x012C, r24 |
||
1165 | urx[5]=templine[3]; |
||
1166 | 724: 80 91 f2 03 lds r24, 0x03F2 |
||
1167 | 728: 80 93 2d 01 sts 0x012D, r24 |
||
1168 | urx[6]=templine[4]; |
||
1169 | 72c: 80 91 f3 03 lds r24, 0x03F3 |
||
1170 | 730: 80 93 2e 01 sts 0x012E, r24 |
||
1171 | |||
1172 | if(i>10) rx[0]=0x08; else rx[0]=0x04; |
||
1173 | 734: cb 30 cpi r28, 0x0B ; 11 |
||
1174 | 736: d1 05 cpc r29, r1 |
||
1175 | 738: 30 f0 brcs .+12 ; 0x746 <__stack+0x247> |
||
1176 | 73a: 00 93 20 01 sts 0x0120, r16 |
||
1177 | if(i>20) rx[1]=0x08; else rx[1]=0x04; |
||
1178 | 73e: c5 31 cpi r28, 0x15 ; 21 |
||
1179 | 740: d1 05 cpc r29, r1 |
||
1180 | 742: 20 f4 brcc .+8 ; 0x74c <__stack+0x24d> |
||
1181 | 744: 09 c0 rjmp .+18 ; 0x758 <__stack+0x259> |
||
1182 | 746: 10 93 20 01 sts 0x0120, r17 |
||
1183 | 74a: 06 c0 rjmp .+12 ; 0x758 <__stack+0x259> |
||
1184 | 74c: 00 93 21 01 sts 0x0121, r16 |
||
1185 | if(i>30) rx[2]=0x08; else rx[2]=0x04; |
||
1186 | 750: cf 31 cpi r28, 0x1F ; 31 |
||
1187 | 752: d1 05 cpc r29, r1 |
||
1188 | 754: 20 f4 brcc .+8 ; 0x75e <__stack+0x25f> |
||
1189 | 756: 09 c0 rjmp .+18 ; 0x76a <__stack+0x26b> |
||
1190 | 758: 10 93 21 01 sts 0x0121, r17 |
||
1191 | 75c: 06 c0 rjmp .+12 ; 0x76a <__stack+0x26b> |
||
1192 | 75e: 00 93 22 01 sts 0x0122, r16 |
||
1193 | if(i>40) rx[3]=0x08; else rx[3]=0x04; |
||
1194 | 762: c9 32 cpi r28, 0x29 ; 41 |
||
1195 | 764: d1 05 cpc r29, r1 |
||
1196 | 766: 20 f4 brcc .+8 ; 0x770 <__stack+0x271> |
||
1197 | 768: 09 c0 rjmp .+18 ; 0x77c <__stack+0x27d> |
||
1198 | 76a: 10 93 22 01 sts 0x0122, r17 |
||
1199 | 76e: 06 c0 rjmp .+12 ; 0x77c <__stack+0x27d> |
||
1200 | 770: 00 93 23 01 sts 0x0123, r16 |
||
1201 | if(i>50) rx[4]=0x08; else rx[4]=0x04; |
||
1202 | 774: c3 33 cpi r28, 0x33 ; 51 |
||
1203 | 776: d1 05 cpc r29, r1 |
||
1204 | 778: 20 f4 brcc .+8 ; 0x782 <__stack+0x283> |
||
1205 | 77a: 09 c0 rjmp .+18 ; 0x78e <__stack+0x28f> |
||
1206 | 77c: 10 93 23 01 sts 0x0123, r17 |
||
1207 | 780: 06 c0 rjmp .+12 ; 0x78e <__stack+0x28f> |
||
1208 | 782: 00 93 24 01 sts 0x0124, r16 |
||
1209 | if(i>60) rx[5]=0x08; else rx[5]=0x04; |
||
1210 | 786: cd 33 cpi r28, 0x3D ; 61 |
||
1211 | 788: d1 05 cpc r29, r1 |
||
1212 | 78a: 20 f4 brcc .+8 ; 0x794 <__stack+0x295> |
||
1213 | 78c: 09 c0 rjmp .+18 ; 0x7a0 <__stack+0x2a1> |
||
1214 | 78e: 10 93 24 01 sts 0x0124, r17 |
||
1215 | 792: 06 c0 rjmp .+12 ; 0x7a0 <__stack+0x2a1> |
||
1216 | 794: 00 93 25 01 sts 0x0125, r16 |
||
1217 | if(i>70) rx[6]=0x08; else rx[6]=0x04; |
||
1218 | 798: c7 34 cpi r28, 0x47 ; 71 |
||
1219 | 79a: d1 05 cpc r29, r1 |
||
1220 | 79c: 20 f4 brcc .+8 ; 0x7a6 <__stack+0x2a7> |
||
1221 | 79e: 09 c0 rjmp .+18 ; 0x7b2 <__stack+0x2b3> |
||
1222 | 7a0: 10 93 25 01 sts 0x0125, r17 |
||
1223 | 7a4: 06 c0 rjmp .+12 ; 0x7b2 <__stack+0x2b3> |
||
1224 | 7a6: 00 93 26 01 sts 0x0126, r16 |
||
1225 | if(i>80) rx[7]=0x08; else rx[7]=0x04; |
||
1226 | 7aa: c1 35 cpi r28, 0x51 ; 81 |
||
1227 | 7ac: d1 05 cpc r29, r1 |
||
1228 | 7ae: 20 f4 brcc .+8 ; 0x7b8 <__stack+0x2b9> |
||
1229 | 7b0: 06 c0 rjmp .+12 ; 0x7be <__stack+0x2bf> |
||
1230 | 7b2: 10 93 26 01 sts 0x0126, r17 |
||
1231 | 7b6: 03 c0 rjmp .+6 ; 0x7be <__stack+0x2bf> |
||
1232 | 7b8: 00 93 27 01 sts 0x0127, r16 |
||
1233 | 7bc: 02 c0 rjmp .+4 ; 0x7c2 <__stack+0x2c3> |
||
1234 | 7be: 10 93 27 01 sts 0x0127, r17 |
||
1235 | |||
1236 | // nick |
||
1237 | i1=DebugOut.Analog[0]/50; |
||
1238 | 7c2: 80 91 64 04 lds r24, 0x0464 |
||
1239 | 7c6: 90 91 65 04 lds r25, 0x0465 |
||
1240 | 7ca: 62 e3 ldi r22, 0x32 ; 50 |
||
1241 | 7cc: 70 e0 ldi r23, 0x00 ; 0 |
||
1242 | 7ce: e0 d4 rcall .+2496 ; 0x1190 <__divmodhi4> |
||
1243 | i1=((GR_Lines/2)-i1); |
||
1244 | 7d0: 84 e1 ldi r24, 0x14 ; 20 |
||
1245 | 7d2: 90 e0 ldi r25, 0x00 ; 0 |
||
1246 | 7d4: ec 01 movw r28, r24 |
||
1247 | 7d6: c6 1b sub r28, r22 |
||
1248 | 7d8: d7 0b sbc r29, r23 |
||
1249 | if(i1<0) i1=0; |
||
1250 | 7da: ea f0 brmi .+58 ; 0x816 <__stack+0x317> |
||
1251 | if(i1>37) i1=37; |
||
1252 | 7dc: c6 32 cpi r28, 0x26 ; 38 |
||
1253 | 7de: d1 05 cpc r29, r1 |
||
1254 | 7e0: 14 f5 brge .+68 ; 0x826 <__stack+0x327> |
||
1255 | GR_Clear(); |
||
1256 | 7e2: 55 dc rcall .-1878 ; 0x8e <GR_Clear> |
||
1257 | GR_Copy(&grlevel[0],i1*7,21); |
||
1258 | 7e4: be 01 movw r22, r28 |
||
1259 | 7e6: 66 0f add r22, r22 |
||
1260 | 7e8: 77 1f adc r23, r23 |
||
1261 | 7ea: 66 0f add r22, r22 |
||
1262 | 7ec: 77 1f adc r23, r23 |
||
1263 | 7ee: 66 0f add r22, r22 |
||
1264 | 7f0: 77 1f adc r23, r23 |
||
1265 | 7f2: 6c 1b sub r22, r28 |
||
1266 | 7f4: 7d 0b sbc r23, r29 |
||
1267 | 7f6: 45 e1 ldi r20, 0x15 ; 21 |
||
1268 | 7f8: 50 e0 ldi r21, 0x00 ; 0 |
||
1269 | 7fa: c5 01 movw r24, r10 |
||
1270 | 7fc: 37 dc rcall .-1938 ; 0x6c <GR_Copy> |
||
1271 | if(i1!=20) GR_Copy(&grlevel0[0],20*7,7); |
||
1272 | 7fe: 64 97 sbiw r28, 0x14 ; 20 |
||
1273 | 800: 39 f0 breq .+14 ; 0x810 <__stack+0x311> |
||
1274 | 802: 47 e0 ldi r20, 0x07 ; 7 |
||
1275 | 804: 50 e0 ldi r21, 0x00 ; 0 |
||
1276 | 806: 6c e8 ldi r22, 0x8C ; 140 |
||
1277 | 808: 70 e0 ldi r23, 0x00 ; 0 |
||
1278 | 80a: 80 ed ldi r24, 0xD0 ; 208 |
||
1279 | 80c: 93 e0 ldi r25, 0x03 ; 3 |
||
1280 | 80e: 2e dc rcall .-1956 ; 0x6c <GR_Copy> |
||
1281 | break; |
||
1282 | |||
1283 | |||
1284 | |||
1285 | default: |
||
1286 | break; |
||
1287 | |||
1288 | } |
||
1289 | NeuerDatensatzEmpfangen=0; |
||
1290 | 810: 10 92 e2 03 sts 0x03E2, r1 |
||
1291 | 814: 7f ce rjmp .-770 ; 0x514 <__stack+0x15> |
||
1292 | 816: 3b dc rcall .-1930 ; 0x8e <GR_Clear> |
||
1293 | 818: 45 e1 ldi r20, 0x15 ; 21 |
||
1294 | 81a: 50 e0 ldi r21, 0x00 ; 0 |
||
1295 | 81c: 60 e0 ldi r22, 0x00 ; 0 |
||
1296 | 81e: 70 e0 ldi r23, 0x00 ; 0 |
||
1297 | 820: c5 01 movw r24, r10 |
||
1298 | 822: 24 dc rcall .-1976 ; 0x6c <GR_Copy> |
||
1299 | 824: ee cf rjmp .-36 ; 0x802 <__stack+0x303> |
||
1300 | 826: 33 dc rcall .-1946 ; 0x8e <GR_Clear> |
||
1301 | 828: 45 e1 ldi r20, 0x15 ; 21 |
||
1302 | 82a: 50 e0 ldi r21, 0x00 ; 0 |
||
1303 | 82c: 63 e0 ldi r22, 0x03 ; 3 |
||
1304 | 82e: 71 e0 ldi r23, 0x01 ; 1 |
||
1305 | 830: c5 01 movw r24, r10 |
||
1306 | 832: 1c dc rcall .-1992 ; 0x6c <GR_Copy> |
||
1307 | 834: e6 cf rjmp .-52 ; 0x802 <__stack+0x303> |
||
1308 | 836: 10 93 17 01 sts 0x0117, r17 |
||
1309 | 83a: 57 cf rjmp .-338 ; 0x6ea <__stack+0x1eb> |
||
1310 | |||
1311 | 0000083c <draw_line>: |
||
1312 | } |
||
1313 | } |
||
1314 | return(1); |
||
1315 | } /* main */ |
||
1316 | |||
1317 | |||
1318 | |||
1319 | //----------------------------------------------------------------------------- |
||
1320 | // draw line() |
||
1321 | // will be executed in interrupt context and will display the overlay content |
||
1322 | //-----------------------------------------------------------------------------*/ |
||
1323 | extern void draw_line() |
||
1324 | { |
||
1325 | 83c: 40 91 ed 03 lds r20, 0x03ED |
||
1326 | 840: 50 91 ee 03 lds r21, 0x03EE |
||
1327 | 844: ca 01 movw r24, r20 |
||
1328 | 846: 84 97 sbiw r24, 0x24 ; 36 |
||
1329 | 848: 07 97 sbiw r24, 0x07 ; 7 |
||
1330 | 84a: 08 f0 brcs .+2 ; 0x84e <draw_line+0x12> |
||
1331 | 84c: 03 c1 rjmp .+518 ; 0xa54 <draw_line+0x218> |
||
1332 | unsigned char *ltr_p; |
||
1333 | unsigned char *num_p; |
||
1334 | unsigned char *info_p; |
||
1335 | short ltemp; |
||
1336 | short ntemp; |
||
1337 | short itemp; |
||
1338 | unsigned int i1; |
||
1339 | unsigned char i=0; |
||
1340 | unsigned char c1; |
||
1341 | unsigned char c2; |
||
1342 | unsigned char c3; |
||
1343 | unsigned char c4; |
||
1344 | unsigned char c5; |
||
1345 | unsigned char c6; |
||
1346 | unsigned char c7; |
||
1347 | |||
1348 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
1349 | // Bat and Heading output |
||
1350 | if ((line > 35) && (line < 43)) |
||
1351 | { |
||
1352 | ltemp = (line - 36) * 27 - 64; |
||
1353 | ntemp = (line - 36) * 16 - 43; |
||
1354 | itemp = (line - 36) * 9; |
||
1355 | ltr_p = ltrs+ltemp; |
||
1356 | num_p = nums+ntemp; |
||
1357 | 84e: ca 01 movw r24, r20 |
||
1358 | 850: 82 95 swap r24 |
||
1359 | 852: 92 95 swap r25 |
||
1360 | 854: 90 7f andi r25, 0xF0 ; 240 |
||
1361 | 856: 98 27 eor r25, r24 |
||
1362 | 858: 80 7f andi r24, 0xF0 ; 240 |
||
1363 | 85a: 98 27 eor r25, r24 |
||
1364 | 85c: bc 01 movw r22, r24 |
||
1365 | 85e: 6f 55 subi r22, 0x5F ; 95 |
||
1366 | 860: 7f 4f sbci r23, 0xFF ; 255 |
||
1367 | info_p = infos+itemp; |
||
1368 | 862: ca 01 movw r24, r20 |
||
1369 | 864: 88 0f add r24, r24 |
||
1370 | 866: 99 1f adc r25, r25 |
||
1371 | 868: 88 0f add r24, r24 |
||
1372 | 86a: 99 1f adc r25, r25 |
||
1373 | 86c: 88 0f add r24, r24 |
||
1374 | 86e: 99 1f adc r25, r25 |
||
1375 | 870: 84 0f add r24, r20 |
||
1376 | 872: 95 1f adc r25, r21 |
||
1377 | 874: 9c 01 movw r18, r24 |
||
1378 | 876: 28 5c subi r18, 0xC8 ; 200 |
||
1379 | 878: 3d 4f sbci r19, 0xFD ; 253 |
||
1380 | // +++ Bat |
||
1381 | while(TCNT0<LINESTART); |
||
1382 | 87a: 86 b5 in r24, 0x26 ; 38 |
||
1383 | 87c: 88 3c cpi r24, 0xC8 ; 200 |
||
1384 | 87e: e8 f3 brcs .-6 ; 0x87a <draw_line+0x3e> |
||
1385 | TCNT0=0; |
||
1386 | 880: 16 bc out 0x26, r1 ; 38 |
||
1387 | SPSR=1; |
||
1388 | 882: 81 e0 ldi r24, 0x01 ; 1 |
||
1389 | 884: 8d bd out 0x2d, r24 ; 45 |
||
1390 | |||
1391 | DDRB|=1; //sink thru PB0 |
||
1392 | 886: 20 9a sbi 0x04, 0 ; 4 |
||
1393 | SPDR = info_p[bat[0]]; Wait(); |
||
1394 | 888: 80 91 10 01 lds r24, 0x0110 |
||
1395 | 88c: f9 01 movw r30, r18 |
||
1396 | 88e: e8 0f add r30, r24 |
||
1397 | 890: f1 1d adc r31, r1 |
||
1398 | 892: 80 81 ld r24, Z |
||
1399 | 894: 8e bd out 0x2e, r24 ; 46 |
||
1400 | 896: 0d b4 in r0, 0x2d ; 45 |
||
1401 | 898: 07 fe sbrs r0, 7 |
||
1402 | 89a: fd cf rjmp .-6 ; 0x896 <draw_line+0x5a> |
||
1403 | SPDR = info_p[bat[1]]; Wait(); |
||
1404 | 89c: 80 91 11 01 lds r24, 0x0111 |
||
1405 | 8a0: f9 01 movw r30, r18 |
||
1406 | 8a2: e8 0f add r30, r24 |
||
1407 | 8a4: f1 1d adc r31, r1 |
||
1408 | 8a6: 80 81 ld r24, Z |
||
1409 | 8a8: 8e bd out 0x2e, r24 ; 46 |
||
1410 | 8aa: 0d b4 in r0, 0x2d ; 45 |
||
1411 | 8ac: 07 fe sbrs r0, 7 |
||
1412 | 8ae: fd cf rjmp .-6 ; 0x8aa <draw_line+0x6e> |
||
1413 | SPDR = info_p[bat[2]]; Wait(); |
||
1414 | 8b0: 80 91 12 01 lds r24, 0x0112 |
||
1415 | 8b4: f9 01 movw r30, r18 |
||
1416 | 8b6: e8 0f add r30, r24 |
||
1417 | 8b8: f1 1d adc r31, r1 |
||
1418 | 8ba: 80 81 ld r24, Z |
||
1419 | 8bc: 8e bd out 0x2e, r24 ; 46 |
||
1420 | 8be: 0d b4 in r0, 0x2d ; 45 |
||
1421 | 8c0: 07 fe sbrs r0, 7 |
||
1422 | 8c2: fd cf rjmp .-6 ; 0x8be <draw_line+0x82> |
||
1423 | SPDR = info_p[bat[3]]; Wait(); |
||
1424 | 8c4: 80 91 13 01 lds r24, 0x0113 |
||
1425 | 8c8: f9 01 movw r30, r18 |
||
1426 | 8ca: e8 0f add r30, r24 |
||
1427 | 8cc: f1 1d adc r31, r1 |
||
1428 | 8ce: 80 81 ld r24, Z |
||
1429 | 8d0: 8e bd out 0x2e, r24 ; 46 |
||
1430 | 8d2: 0d b4 in r0, 0x2d ; 45 |
||
1431 | 8d4: 07 fe sbrs r0, 7 |
||
1432 | 8d6: fd cf rjmp .-6 ; 0x8d2 <draw_line+0x96> |
||
1433 | SPDR = info_p[bat[4]]; Wait(); |
||
1434 | 8d8: 80 91 14 01 lds r24, 0x0114 |
||
1435 | 8dc: f9 01 movw r30, r18 |
||
1436 | 8de: e8 0f add r30, r24 |
||
1437 | 8e0: f1 1d adc r31, r1 |
||
1438 | 8e2: 80 81 ld r24, Z |
||
1439 | 8e4: 8e bd out 0x2e, r24 ; 46 |
||
1440 | 8e6: 0d b4 in r0, 0x2d ; 45 |
||
1441 | 8e8: 07 fe sbrs r0, 7 |
||
1442 | 8ea: fd cf rjmp .-6 ; 0x8e6 <draw_line+0xaa> |
||
1443 | SPDR = info_p[bat[5]]; Wait(); |
||
1444 | 8ec: 80 91 15 01 lds r24, 0x0115 |
||
1445 | 8f0: f9 01 movw r30, r18 |
||
1446 | 8f2: e8 0f add r30, r24 |
||
1447 | 8f4: f1 1d adc r31, r1 |
||
1448 | 8f6: 80 81 ld r24, Z |
||
1449 | 8f8: 8e bd out 0x2e, r24 ; 46 |
||
1450 | 8fa: 0d b4 in r0, 0x2d ; 45 |
||
1451 | 8fc: 07 fe sbrs r0, 7 |
||
1452 | 8fe: fd cf rjmp .-6 ; 0x8fa <draw_line+0xbe> |
||
1453 | SPDR = info_p[bat[6]]; Wait(); |
||
1454 | 900: 80 91 16 01 lds r24, 0x0116 |
||
1455 | 904: f9 01 movw r30, r18 |
||
1456 | 906: e8 0f add r30, r24 |
||
1457 | 908: f1 1d adc r31, r1 |
||
1458 | 90a: 80 81 ld r24, Z |
||
1459 | 90c: 8e bd out 0x2e, r24 ; 46 |
||
1460 | 90e: 0d b4 in r0, 0x2d ; 45 |
||
1461 | 910: 07 fe sbrs r0, 7 |
||
1462 | 912: fd cf rjmp .-6 ; 0x90e <draw_line+0xd2> |
||
1463 | SPDR = info_p[bat[7]]; Wait(); |
||
1464 | 914: 80 91 17 01 lds r24, 0x0117 |
||
1465 | 918: f9 01 movw r30, r18 |
||
1466 | 91a: e8 0f add r30, r24 |
||
1467 | 91c: f1 1d adc r31, r1 |
||
1468 | 91e: 80 81 ld r24, Z |
||
1469 | 920: 8e bd out 0x2e, r24 ; 46 |
||
1470 | 922: 0d b4 in r0, 0x2d ; 45 |
||
1471 | 924: 07 fe sbrs r0, 7 |
||
1472 | 926: fd cf rjmp .-6 ; 0x922 <draw_line+0xe6> |
||
1473 | DDRB&=0xFE; //PB0 Hi-Z again, and load a blank so spacing is right |
||
1474 | 928: 20 98 cbi 0x04, 0 ; 4 |
||
1475 | |||
1476 | // +++ Heading |
||
1477 | TCNT0=0; |
||
1478 | 92a: 16 bc out 0x26, r1 ; 38 |
||
1479 | while(TCNT0<80); |
||
1480 | 92c: 86 b5 in r24, 0x26 ; 38 |
||
1481 | 92e: 80 35 cpi r24, 0x50 ; 80 |
||
1482 | 930: e8 f3 brcs .-6 ; 0x92c <draw_line+0xf0> |
||
1483 | TCNT0=0; |
||
1484 | 932: 16 bc out 0x26, r1 ; 38 |
||
1485 | SPSR=0; |
||
1486 | 934: 1d bc out 0x2d, r1 ; 45 |
||
1487 | DDRB|=1; |
||
1488 | 936: 20 9a sbi 0x04, 0 ; 4 |
||
1489 | SPDR = info_p[heading[0]]; Wait(); |
||
1490 | 938: 80 91 0b 01 lds r24, 0x010B |
||
1491 | 93c: f9 01 movw r30, r18 |
||
1492 | 93e: e8 0f add r30, r24 |
||
1493 | 940: f1 1d adc r31, r1 |
||
1494 | 942: 80 81 ld r24, Z |
||
1495 | 944: 8e bd out 0x2e, r24 ; 46 |
||
1496 | 946: 0d b4 in r0, 0x2d ; 45 |
||
1497 | 948: 07 fe sbrs r0, 7 |
||
1498 | 94a: fd cf rjmp .-6 ; 0x946 <draw_line+0x10a> |
||
1499 | SPDR = num_p[heading[1]]; Wait(); |
||
1500 | 94c: 80 91 0c 01 lds r24, 0x010C |
||
1501 | 950: fb 01 movw r30, r22 |
||
1502 | 952: e8 0f add r30, r24 |
||
1503 | 954: f1 1d adc r31, r1 |
||
1504 | 956: 80 81 ld r24, Z |
||
1505 | 958: 8e bd out 0x2e, r24 ; 46 |
||
1506 | 95a: 0d b4 in r0, 0x2d ; 45 |
||
1507 | 95c: 07 fe sbrs r0, 7 |
||
1508 | 95e: fd cf rjmp .-6 ; 0x95a <draw_line+0x11e> |
||
1509 | SPDR = num_p[heading[2]]; Wait(); |
||
1510 | 960: 80 91 0d 01 lds r24, 0x010D |
||
1511 | 964: fb 01 movw r30, r22 |
||
1512 | 966: e8 0f add r30, r24 |
||
1513 | 968: f1 1d adc r31, r1 |
||
1514 | 96a: 80 81 ld r24, Z |
||
1515 | 96c: 8e bd out 0x2e, r24 ; 46 |
||
1516 | 96e: 0d b4 in r0, 0x2d ; 45 |
||
1517 | 970: 07 fe sbrs r0, 7 |
||
1518 | 972: fd cf rjmp .-6 ; 0x96e <draw_line+0x132> |
||
1519 | SPDR = num_p[heading[3]]; Wait(); |
||
1520 | 974: 80 91 0e 01 lds r24, 0x010E |
||
1521 | 978: fb 01 movw r30, r22 |
||
1522 | 97a: e8 0f add r30, r24 |
||
1523 | 97c: f1 1d adc r31, r1 |
||
1524 | 97e: 80 81 ld r24, Z |
||
1525 | 980: 8e bd out 0x2e, r24 ; 46 |
||
1526 | 982: 0d b4 in r0, 0x2d ; 45 |
||
1527 | 984: 07 fe sbrs r0, 7 |
||
1528 | 986: fd cf rjmp .-6 ; 0x982 <draw_line+0x146> |
||
1529 | SPDR = info_p[heading[4]]; Wait(); |
||
1530 | 988: 80 91 0f 01 lds r24, 0x010F |
||
1531 | 98c: f9 01 movw r30, r18 |
||
1532 | 98e: e8 0f add r30, r24 |
||
1533 | 990: f1 1d adc r31, r1 |
||
1534 | 992: 80 81 ld r24, Z |
||
1535 | 994: 8e bd out 0x2e, r24 ; 46 |
||
1536 | 996: 0d b4 in r0, 0x2d ; 45 |
||
1537 | 998: 07 fe sbrs r0, 7 |
||
1538 | 99a: fd cf rjmp .-6 ; 0x996 <draw_line+0x15a> |
||
1539 | DDRB&=0xFE; //PB0 Hi-Z again, and load a blank so spacing is right |
||
1540 | 99c: 20 98 cbi 0x04, 0 ; 4 |
||
1541 | |||
1542 | // +++ RX Level |
||
1543 | while(TCNT0<250); |
||
1544 | 99e: 86 b5 in r24, 0x26 ; 38 |
||
1545 | 9a0: 8a 3f cpi r24, 0xFA ; 250 |
||
1546 | 9a2: e8 f3 brcs .-6 ; 0x99e <draw_line+0x162> |
||
1547 | TCNT0=0; |
||
1548 | 9a4: 16 bc out 0x26, r1 ; 38 |
||
1549 | while(TCNT0<70); |
||
1550 | 9a6: 86 b5 in r24, 0x26 ; 38 |
||
1551 | 9a8: 86 34 cpi r24, 0x46 ; 70 |
||
1552 | 9aa: e8 f3 brcs .-6 ; 0x9a6 <draw_line+0x16a> |
||
1553 | SPSR=1; |
||
1554 | 9ac: 81 e0 ldi r24, 0x01 ; 1 |
||
1555 | 9ae: 8d bd out 0x2d, r24 ; 45 |
||
1556 | DDRB|=1; |
||
1557 | 9b0: 20 9a sbi 0x04, 0 ; 4 |
||
1558 | SPDR = info_p[rx[0]]; Wait(); |
||
1559 | 9b2: 80 91 20 01 lds r24, 0x0120 |
||
1560 | 9b6: f9 01 movw r30, r18 |
||
1561 | 9b8: e8 0f add r30, r24 |
||
1562 | 9ba: f1 1d adc r31, r1 |
||
1563 | 9bc: 80 81 ld r24, Z |
||
1564 | 9be: 8e bd out 0x2e, r24 ; 46 |
||
1565 | 9c0: 0d b4 in r0, 0x2d ; 45 |
||
1566 | 9c2: 07 fe sbrs r0, 7 |
||
1567 | 9c4: fd cf rjmp .-6 ; 0x9c0 <draw_line+0x184> |
||
1568 | SPDR = info_p[rx[1]]; Wait(); |
||
1569 | 9c6: 80 91 21 01 lds r24, 0x0121 |
||
1570 | 9ca: f9 01 movw r30, r18 |
||
1571 | 9cc: e8 0f add r30, r24 |
||
1572 | 9ce: f1 1d adc r31, r1 |
||
1573 | 9d0: 80 81 ld r24, Z |
||
1574 | 9d2: 8e bd out 0x2e, r24 ; 46 |
||
1575 | 9d4: 0d b4 in r0, 0x2d ; 45 |
||
1576 | 9d6: 07 fe sbrs r0, 7 |
||
1577 | 9d8: fd cf rjmp .-6 ; 0x9d4 <draw_line+0x198> |
||
1578 | SPDR = info_p[rx[2]]; Wait(); |
||
1579 | 9da: 80 91 22 01 lds r24, 0x0122 |
||
1580 | 9de: f9 01 movw r30, r18 |
||
1581 | 9e0: e8 0f add r30, r24 |
||
1582 | 9e2: f1 1d adc r31, r1 |
||
1583 | 9e4: 80 81 ld r24, Z |
||
1584 | 9e6: 8e bd out 0x2e, r24 ; 46 |
||
1585 | 9e8: 0d b4 in r0, 0x2d ; 45 |
||
1586 | 9ea: 07 fe sbrs r0, 7 |
||
1587 | 9ec: fd cf rjmp .-6 ; 0x9e8 <draw_line+0x1ac> |
||
1588 | SPDR = info_p[rx[3]]; Wait(); |
||
1589 | 9ee: 80 91 23 01 lds r24, 0x0123 |
||
1590 | 9f2: f9 01 movw r30, r18 |
||
1591 | 9f4: e8 0f add r30, r24 |
||
1592 | 9f6: f1 1d adc r31, r1 |
||
1593 | 9f8: 80 81 ld r24, Z |
||
1594 | 9fa: 8e bd out 0x2e, r24 ; 46 |
||
1595 | 9fc: 0d b4 in r0, 0x2d ; 45 |
||
1596 | 9fe: 07 fe sbrs r0, 7 |
||
1597 | a00: fd cf rjmp .-6 ; 0x9fc <draw_line+0x1c0> |
||
1598 | SPDR = info_p[rx[4]]; Wait(); |
||
1599 | a02: 80 91 24 01 lds r24, 0x0124 |
||
1600 | a06: f9 01 movw r30, r18 |
||
1601 | a08: e8 0f add r30, r24 |
||
1602 | a0a: f1 1d adc r31, r1 |
||
1603 | a0c: 80 81 ld r24, Z |
||
1604 | a0e: 8e bd out 0x2e, r24 ; 46 |
||
1605 | a10: 0d b4 in r0, 0x2d ; 45 |
||
1606 | a12: 07 fe sbrs r0, 7 |
||
1607 | a14: fd cf rjmp .-6 ; 0xa10 <draw_line+0x1d4> |
||
1608 | SPDR = info_p[rx[5]]; Wait(); |
||
1609 | a16: 80 91 25 01 lds r24, 0x0125 |
||
1610 | a1a: f9 01 movw r30, r18 |
||
1611 | a1c: e8 0f add r30, r24 |
||
1612 | a1e: f1 1d adc r31, r1 |
||
1613 | a20: 80 81 ld r24, Z |
||
1614 | a22: 8e bd out 0x2e, r24 ; 46 |
||
1615 | a24: 0d b4 in r0, 0x2d ; 45 |
||
1616 | a26: 07 fe sbrs r0, 7 |
||
1617 | a28: fd cf rjmp .-6 ; 0xa24 <draw_line+0x1e8> |
||
1618 | SPDR = info_p[rx[6]]; Wait(); |
||
1619 | a2a: 80 91 26 01 lds r24, 0x0126 |
||
1620 | a2e: f9 01 movw r30, r18 |
||
1621 | a30: e8 0f add r30, r24 |
||
1622 | a32: f1 1d adc r31, r1 |
||
1623 | a34: 80 81 ld r24, Z |
||
1624 | a36: 8e bd out 0x2e, r24 ; 46 |
||
1625 | a38: 0d b4 in r0, 0x2d ; 45 |
||
1626 | a3a: 07 fe sbrs r0, 7 |
||
1627 | a3c: fd cf rjmp .-6 ; 0xa38 <draw_line+0x1fc> |
||
1628 | SPDR = info_p[rx[7]]; Wait(); |
||
1629 | a3e: 80 91 27 01 lds r24, 0x0127 |
||
1630 | a42: f9 01 movw r30, r18 |
||
1631 | a44: e8 0f add r30, r24 |
||
1632 | a46: f1 1d adc r31, r1 |
||
1633 | a48: 80 81 ld r24, Z |
||
1634 | a4a: 8e bd out 0x2e, r24 ; 46 |
||
1635 | a4c: 0d b4 in r0, 0x2d ; 45 |
||
1636 | a4e: 07 fe sbrs r0, 7 |
||
1637 | a50: fd cf rjmp .-6 ; 0xa4c <draw_line+0x210> |
||
1638 | DDRB&=0xFE; |
||
1639 | a52: 20 98 cbi 0x04, 0 ; 4 |
||
1640 | } |
||
1641 | |||
1642 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
1643 | // UBat |
||
1644 | if ((line > 44) && (line < 52)) |
||
1645 | a54: ca 01 movw r24, r20 |
||
1646 | a56: 8d 97 sbiw r24, 0x2d ; 45 |
||
1647 | a58: 07 97 sbiw r24, 0x07 ; 7 |
||
1648 | a5a: 08 f0 brcs .+2 ; 0xa5e <draw_line+0x222> |
||
1649 | a5c: d4 c0 rjmp .+424 ; 0xc06 <draw_line+0x3ca> |
||
1650 | { |
||
1651 | ltemp = (line - 45) * 27 - 64; |
||
1652 | ntemp = (line - 45) * 16 - 43; |
||
1653 | itemp = (line - 45) * 9; |
||
1654 | ltr_p = ltrs+ltemp; |
||
1655 | a5e: ca 01 movw r24, r20 |
||
1656 | a60: 88 0f add r24, r24 |
||
1657 | a62: 99 1f adc r25, r25 |
||
1658 | a64: 84 0f add r24, r20 |
||
1659 | a66: 95 1f adc r25, r21 |
||
1660 | a68: 9c 01 movw r18, r24 |
||
1661 | a6a: 22 0f add r18, r18 |
||
1662 | a6c: 33 1f adc r19, r19 |
||
1663 | a6e: 22 0f add r18, r18 |
||
1664 | a70: 33 1f adc r19, r19 |
||
1665 | a72: 22 0f add r18, r18 |
||
1666 | a74: 33 1f adc r19, r19 |
||
1667 | a76: 82 0f add r24, r18 |
||
1668 | a78: 93 1f adc r25, r19 |
||
1669 | a7a: bc 01 movw r22, r24 |
||
1670 | a7c: 60 5b subi r22, 0xB0 ; 176 |
||
1671 | a7e: 72 40 sbci r23, 0x02 ; 2 |
||
1672 | num_p = nums+ntemp; |
||
1673 | a80: ca 01 movw r24, r20 |
||
1674 | a82: 82 95 swap r24 |
||
1675 | a84: 92 95 swap r25 |
||
1676 | a86: 90 7f andi r25, 0xF0 ; 240 |
||
1677 | a88: 98 27 eor r25, r24 |
||
1678 | a8a: 80 7f andi r24, 0xF0 ; 240 |
||
1679 | a8c: 98 27 eor r25, r24 |
||
1680 | a8e: 9c 01 movw r18, r24 |
||
1681 | a90: 2f 5e subi r18, 0xEF ; 239 |
||
1682 | a92: 3f 4f sbci r19, 0xFF ; 255 |
||
1683 | info_p = infos+itemp; |
||
1684 | // +++ UBat |
||
1685 | while(TCNT0<LINESTART); |
||
1686 | a94: 86 b5 in r24, 0x26 ; 38 |
||
1687 | a96: 88 3c cpi r24, 0xC8 ; 200 |
||
1688 | a98: e8 f3 brcs .-6 ; 0xa94 <draw_line+0x258> |
||
1689 | TCNT0=0; |
||
1690 | a9a: 16 bc out 0x26, r1 ; 38 |
||
1691 | SPSR=1; |
||
1692 | a9c: 81 e0 ldi r24, 0x01 ; 1 |
||
1693 | a9e: 8d bd out 0x2d, r24 ; 45 |
||
1694 | DDRB|=1; |
||
1695 | aa0: 20 9a sbi 0x04, 0 ; 4 |
||
1696 | SPDR = ltr_p[ubat[0]]; Wait(); |
||
1697 | aa2: 80 91 18 01 lds r24, 0x0118 |
||
1698 | aa6: fb 01 movw r30, r22 |
||
1699 | aa8: e8 0f add r30, r24 |
||
1700 | aaa: f1 1d adc r31, r1 |
||
1701 | aac: 80 81 ld r24, Z |
||
1702 | aae: 8e bd out 0x2e, r24 ; 46 |
||
1703 | ab0: 0d b4 in r0, 0x2d ; 45 |
||
1704 | ab2: 07 fe sbrs r0, 7 |
||
1705 | ab4: fd cf rjmp .-6 ; 0xab0 <draw_line+0x274> |
||
1706 | SPDR = num_p[ubat[1]]; Wait(); |
||
1707 | ab6: 80 91 19 01 lds r24, 0x0119 |
||
1708 | aba: f9 01 movw r30, r18 |
||
1709 | abc: e8 0f add r30, r24 |
||
1710 | abe: f1 1d adc r31, r1 |
||
1711 | ac0: 80 81 ld r24, Z |
||
1712 | ac2: 8e bd out 0x2e, r24 ; 46 |
||
1713 | ac4: 0d b4 in r0, 0x2d ; 45 |
||
1714 | ac6: 07 fe sbrs r0, 7 |
||
1715 | ac8: fd cf rjmp .-6 ; 0xac4 <draw_line+0x288> |
||
1716 | SPDR = ltr_p[ubat[2]]; Wait(); |
||
1717 | aca: 80 91 1a 01 lds r24, 0x011A |
||
1718 | ace: fb 01 movw r30, r22 |
||
1719 | ad0: e8 0f add r30, r24 |
||
1720 | ad2: f1 1d adc r31, r1 |
||
1721 | ad4: 80 81 ld r24, Z |
||
1722 | ad6: 8e bd out 0x2e, r24 ; 46 |
||
1723 | ad8: 0d b4 in r0, 0x2d ; 45 |
||
1724 | ada: 07 fe sbrs r0, 7 |
||
1725 | adc: fd cf rjmp .-6 ; 0xad8 <draw_line+0x29c> |
||
1726 | SPDR = num_p[ubat[3]]; Wait(); |
||
1727 | ade: 80 91 1b 01 lds r24, 0x011B |
||
1728 | ae2: f9 01 movw r30, r18 |
||
1729 | ae4: e8 0f add r30, r24 |
||
1730 | ae6: f1 1d adc r31, r1 |
||
1731 | ae8: 80 81 ld r24, Z |
||
1732 | aea: 8e bd out 0x2e, r24 ; 46 |
||
1733 | aec: 0d b4 in r0, 0x2d ; 45 |
||
1734 | aee: 07 fe sbrs r0, 7 |
||
1735 | af0: fd cf rjmp .-6 ; 0xaec <draw_line+0x2b0> |
||
1736 | SPDR = num_p[ubat[4]]; Wait(); |
||
1737 | af2: 80 91 1c 01 lds r24, 0x011C |
||
1738 | af6: f9 01 movw r30, r18 |
||
1739 | af8: e8 0f add r30, r24 |
||
1740 | afa: f1 1d adc r31, r1 |
||
1741 | afc: 80 81 ld r24, Z |
||
1742 | afe: 8e bd out 0x2e, r24 ; 46 |
||
1743 | b00: 0d b4 in r0, 0x2d ; 45 |
||
1744 | b02: 07 fe sbrs r0, 7 |
||
1745 | b04: fd cf rjmp .-6 ; 0xb00 <draw_line+0x2c4> |
||
1746 | SPDR = num_p[ubat[5]]; Wait(); |
||
1747 | b06: 80 91 1d 01 lds r24, 0x011D |
||
1748 | b0a: f9 01 movw r30, r18 |
||
1749 | b0c: e8 0f add r30, r24 |
||
1750 | b0e: f1 1d adc r31, r1 |
||
1751 | b10: 80 81 ld r24, Z |
||
1752 | b12: 8e bd out 0x2e, r24 ; 46 |
||
1753 | b14: 0d b4 in r0, 0x2d ; 45 |
||
1754 | b16: 07 fe sbrs r0, 7 |
||
1755 | b18: fd cf rjmp .-6 ; 0xb14 <draw_line+0x2d8> |
||
1756 | SPDR = num_p[ubat[6]]; Wait(); |
||
1757 | b1a: 80 91 1e 01 lds r24, 0x011E |
||
1758 | b1e: f9 01 movw r30, r18 |
||
1759 | b20: e8 0f add r30, r24 |
||
1760 | b22: f1 1d adc r31, r1 |
||
1761 | b24: 80 81 ld r24, Z |
||
1762 | b26: 8e bd out 0x2e, r24 ; 46 |
||
1763 | b28: 0d b4 in r0, 0x2d ; 45 |
||
1764 | b2a: 07 fe sbrs r0, 7 |
||
1765 | b2c: fd cf rjmp .-6 ; 0xb28 <draw_line+0x2ec> |
||
1766 | SPDR = ltr_p[ubat[7]]; Wait(); |
||
1767 | b2e: 80 91 1f 01 lds r24, 0x011F |
||
1768 | b32: fb 01 movw r30, r22 |
||
1769 | b34: e8 0f add r30, r24 |
||
1770 | b36: f1 1d adc r31, r1 |
||
1771 | b38: 80 81 ld r24, Z |
||
1772 | b3a: 8e bd out 0x2e, r24 ; 46 |
||
1773 | b3c: 0d b4 in r0, 0x2d ; 45 |
||
1774 | b3e: 07 fe sbrs r0, 7 |
||
1775 | b40: fd cf rjmp .-6 ; 0xb3c <draw_line+0x300> |
||
1776 | DDRB&=0xFE; |
||
1777 | b42: 20 98 cbi 0x04, 0 ; 4 |
||
1778 | TCNT0=0; |
||
1779 | b44: 16 bc out 0x26, r1 ; 38 |
||
1780 | while(TCNT0<80); |
||
1781 | b46: 86 b5 in r24, 0x26 ; 38 |
||
1782 | b48: 80 35 cpi r24, 0x50 ; 80 |
||
1783 | b4a: e8 f3 brcs .-6 ; 0xb46 <draw_line+0x30a> |
||
1784 | TCNT0=0; |
||
1785 | b4c: 16 bc out 0x26, r1 ; 38 |
||
1786 | while(TCNT0<250); |
||
1787 | b4e: 86 b5 in r24, 0x26 ; 38 |
||
1788 | b50: 8a 3f cpi r24, 0xFA ; 250 |
||
1789 | b52: e8 f3 brcs .-6 ; 0xb4e <draw_line+0x312> |
||
1790 | TCNT0=0; |
||
1791 | b54: 16 bc out 0x26, r1 ; 38 |
||
1792 | while(TCNT0<70); |
||
1793 | b56: 86 b5 in r24, 0x26 ; 38 |
||
1794 | b58: 86 34 cpi r24, 0x46 ; 70 |
||
1795 | b5a: e8 f3 brcs .-6 ; 0xb56 <draw_line+0x31a> |
||
1796 | TCNT0=0; |
||
1797 | b5c: 16 bc out 0x26, r1 ; 38 |
||
1798 | SPSR=1; |
||
1799 | b5e: 81 e0 ldi r24, 0x01 ; 1 |
||
1800 | b60: 8d bd out 0x2d, r24 ; 45 |
||
1801 | DDRB|=1; |
||
1802 | b62: 20 9a sbi 0x04, 0 ; 4 |
||
1803 | SPDR = ltr_p[urx[0]]; Wait(); |
||
1804 | b64: 80 91 28 01 lds r24, 0x0128 |
||
1805 | b68: fb 01 movw r30, r22 |
||
1806 | b6a: e8 0f add r30, r24 |
||
1807 | b6c: f1 1d adc r31, r1 |
||
1808 | b6e: 80 81 ld r24, Z |
||
1809 | b70: 8e bd out 0x2e, r24 ; 46 |
||
1810 | b72: 0d b4 in r0, 0x2d ; 45 |
||
1811 | b74: 07 fe sbrs r0, 7 |
||
1812 | b76: fd cf rjmp .-6 ; 0xb72 <draw_line+0x336> |
||
1813 | SPDR = ltr_p[urx[1]]; Wait(); |
||
1814 | b78: 80 91 29 01 lds r24, 0x0129 |
||
1815 | b7c: fb 01 movw r30, r22 |
||
1816 | b7e: e8 0f add r30, r24 |
||
1817 | b80: f1 1d adc r31, r1 |
||
1818 | b82: 80 81 ld r24, Z |
||
1819 | b84: 8e bd out 0x2e, r24 ; 46 |
||
1820 | b86: 0d b4 in r0, 0x2d ; 45 |
||
1821 | b88: 07 fe sbrs r0, 7 |
||
1822 | b8a: fd cf rjmp .-6 ; 0xb86 <draw_line+0x34a> |
||
1823 | SPDR = num_p[urx[2]]; Wait(); |
||
1824 | b8c: 80 91 2a 01 lds r24, 0x012A |
||
1825 | b90: f9 01 movw r30, r18 |
||
1826 | b92: e8 0f add r30, r24 |
||
1827 | b94: f1 1d adc r31, r1 |
||
1828 | b96: 80 81 ld r24, Z |
||
1829 | b98: 8e bd out 0x2e, r24 ; 46 |
||
1830 | b9a: 0d b4 in r0, 0x2d ; 45 |
||
1831 | b9c: 07 fe sbrs r0, 7 |
||
1832 | b9e: fd cf rjmp .-6 ; 0xb9a <draw_line+0x35e> |
||
1833 | SPDR = ltr_p[urx[3]]; Wait(); |
||
1834 | ba0: 80 91 2b 01 lds r24, 0x012B |
||
1835 | ba4: fb 01 movw r30, r22 |
||
1836 | ba6: e8 0f add r30, r24 |
||
1837 | ba8: f1 1d adc r31, r1 |
||
1838 | baa: 80 81 ld r24, Z |
||
1839 | bac: 8e bd out 0x2e, r24 ; 46 |
||
1840 | bae: 0d b4 in r0, 0x2d ; 45 |
||
1841 | bb0: 07 fe sbrs r0, 7 |
||
1842 | bb2: fd cf rjmp .-6 ; 0xbae <draw_line+0x372> |
||
1843 | SPDR = num_p[urx[4]]; Wait(); |
||
1844 | bb4: 80 91 2c 01 lds r24, 0x012C |
||
1845 | bb8: f9 01 movw r30, r18 |
||
1846 | bba: e8 0f add r30, r24 |
||
1847 | bbc: f1 1d adc r31, r1 |
||
1848 | bbe: 80 81 ld r24, Z |
||
1849 | bc0: 8e bd out 0x2e, r24 ; 46 |
||
1850 | bc2: 0d b4 in r0, 0x2d ; 45 |
||
1851 | bc4: 07 fe sbrs r0, 7 |
||
1852 | bc6: fd cf rjmp .-6 ; 0xbc2 <draw_line+0x386> |
||
1853 | SPDR = num_p[urx[5]]; Wait(); |
||
1854 | bc8: 80 91 2d 01 lds r24, 0x012D |
||
1855 | bcc: f9 01 movw r30, r18 |
||
1856 | bce: e8 0f add r30, r24 |
||
1857 | bd0: f1 1d adc r31, r1 |
||
1858 | bd2: 80 81 ld r24, Z |
||
1859 | bd4: 8e bd out 0x2e, r24 ; 46 |
||
1860 | bd6: 0d b4 in r0, 0x2d ; 45 |
||
1861 | bd8: 07 fe sbrs r0, 7 |
||
1862 | bda: fd cf rjmp .-6 ; 0xbd6 <draw_line+0x39a> |
||
1863 | SPDR = num_p[urx[6]]; Wait(); |
||
1864 | bdc: 80 91 2e 01 lds r24, 0x012E |
||
1865 | be0: f9 01 movw r30, r18 |
||
1866 | be2: e8 0f add r30, r24 |
||
1867 | be4: f1 1d adc r31, r1 |
||
1868 | be6: 80 81 ld r24, Z |
||
1869 | be8: 8e bd out 0x2e, r24 ; 46 |
||
1870 | bea: 0d b4 in r0, 0x2d ; 45 |
||
1871 | bec: 07 fe sbrs r0, 7 |
||
1872 | bee: fd cf rjmp .-6 ; 0xbea <draw_line+0x3ae> |
||
1873 | SPDR = num_p[urx[7]]; Wait(); |
||
1874 | bf0: 80 91 2f 01 lds r24, 0x012F |
||
1875 | bf4: f9 01 movw r30, r18 |
||
1876 | bf6: e8 0f add r30, r24 |
||
1877 | bf8: f1 1d adc r31, r1 |
||
1878 | bfa: 80 81 ld r24, Z |
||
1879 | bfc: 8e bd out 0x2e, r24 ; 46 |
||
1880 | bfe: 0d b4 in r0, 0x2d ; 45 |
||
1881 | c00: 07 fe sbrs r0, 7 |
||
1882 | c02: fd cf rjmp .-6 ; 0xbfe <draw_line+0x3c2> |
||
1883 | DDRB&=0xFE; |
||
1884 | c04: 20 98 cbi 0x04, 0 ; 4 |
||
1885 | |||
1886 | } |
||
1887 | |||
1888 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
1889 | // Message |
||
1890 | if ((line > 60) && (line < 68) && (showmessage1) && (lowbat)) |
||
1891 | c06: ca 01 movw r24, r20 |
||
1892 | c08: cd 97 sbiw r24, 0x3d ; 61 |
||
1893 | c0a: 07 97 sbiw r24, 0x07 ; 7 |
||
1894 | c0c: 08 f0 brcs .+2 ; 0xc10 <draw_line+0x3d4> |
||
1895 | c0e: 9c c0 rjmp .+312 ; 0xd48 <draw_line+0x50c> |
||
1896 | c10: 80 91 d9 03 lds r24, 0x03D9 |
||
1897 | c14: 88 23 and r24, r24 |
||
1898 | c16: 09 f4 brne .+2 ; 0xc1a <draw_line+0x3de> |
||
1899 | c18: 97 c0 rjmp .+302 ; 0xd48 <draw_line+0x50c> |
||
1900 | c1a: 80 91 d8 03 lds r24, 0x03D8 |
||
1901 | c1e: 88 23 and r24, r24 |
||
1902 | c20: 09 f4 brne .+2 ; 0xc24 <draw_line+0x3e8> |
||
1903 | c22: 92 c0 rjmp .+292 ; 0xd48 <draw_line+0x50c> |
||
1904 | { |
||
1905 | ltemp = (line - 61) * 27 - 64; |
||
1906 | ntemp = (line - 61) * 16 - 43; |
||
1907 | itemp = (line - 61) * 9; |
||
1908 | ltr_p = ltrs+ltemp; |
||
1909 | c24: ca 01 movw r24, r20 |
||
1910 | c26: 88 0f add r24, r24 |
||
1911 | c28: 99 1f adc r25, r25 |
||
1912 | c2a: 84 0f add r24, r20 |
||
1913 | c2c: 95 1f adc r25, r21 |
||
1914 | c2e: 9c 01 movw r18, r24 |
||
1915 | c30: 22 0f add r18, r18 |
||
1916 | c32: 33 1f adc r19, r19 |
||
1917 | c34: 22 0f add r18, r18 |
||
1918 | c36: 33 1f adc r19, r19 |
||
1919 | c38: 22 0f add r18, r18 |
||
1920 | c3a: 33 1f adc r19, r19 |
||
1921 | c3c: 82 0f add r24, r18 |
||
1922 | c3e: 93 1f adc r25, r19 |
||
1923 | c40: 9c 01 movw r18, r24 |
||
1924 | c42: 20 56 subi r18, 0x60 ; 96 |
||
1925 | c44: 34 40 sbci r19, 0x04 ; 4 |
||
1926 | num_p = nums+ntemp; |
||
1927 | info_p = infos+itemp; |
||
1928 | // +++ UBat |
||
1929 | while(TCNT0<LINESTART); |
||
1930 | c46: 86 b5 in r24, 0x26 ; 38 |
||
1931 | c48: 88 3c cpi r24, 0xC8 ; 200 |
||
1932 | c4a: e8 f3 brcs .-6 ; 0xc46 <draw_line+0x40a> |
||
1933 | TCNT0=0; |
||
1934 | c4c: 16 bc out 0x26, r1 ; 38 |
||
1935 | while(TCNT0<250); |
||
1936 | c4e: 86 b5 in r24, 0x26 ; 38 |
||
1937 | c50: 8a 3f cpi r24, 0xFA ; 250 |
||
1938 | c52: e8 f3 brcs .-6 ; 0xc4e <draw_line+0x412> |
||
1939 | SPSR=1; |
||
1940 | c54: 81 e0 ldi r24, 0x01 ; 1 |
||
1941 | c56: 8d bd out 0x2d, r24 ; 45 |
||
1942 | SPDR = ltr_p[Message_LowBat[0]]; Wait(); |
||
1943 | c58: f9 01 movw r30, r18 |
||
1944 | c5a: e0 5c subi r30, 0xC0 ; 192 |
||
1945 | c5c: ff 4f sbci r31, 0xFF ; 255 |
||
1946 | c5e: 80 81 ld r24, Z |
||
1947 | c60: 8e bd out 0x2e, r24 ; 46 |
||
1948 | c62: 0d b4 in r0, 0x2d ; 45 |
||
1949 | c64: 07 fe sbrs r0, 7 |
||
1950 | c66: fd cf rjmp .-6 ; 0xc62 <draw_line+0x426> |
||
1951 | SPDR = ltr_p[Message_LowBat[1]]; Wait(); |
||
1952 | c68: f9 01 movw r30, r18 |
||
1953 | c6a: e0 5c subi r30, 0xC0 ; 192 |
||
1954 | c6c: ff 4f sbci r31, 0xFF ; 255 |
||
1955 | c6e: 80 81 ld r24, Z |
||
1956 | c70: 8e bd out 0x2e, r24 ; 46 |
||
1957 | c72: 0d b4 in r0, 0x2d ; 45 |
||
1958 | c74: 07 fe sbrs r0, 7 |
||
1959 | c76: fd cf rjmp .-6 ; 0xc72 <draw_line+0x436> |
||
1960 | SPDR = ltr_p[Message_LowBat[2]]; Wait(); |
||
1961 | c78: f9 01 movw r30, r18 |
||
1962 | c7a: e4 5b subi r30, 0xB4 ; 180 |
||
1963 | c7c: ff 4f sbci r31, 0xFF ; 255 |
||
1964 | c7e: 80 81 ld r24, Z |
||
1965 | c80: 8e bd out 0x2e, r24 ; 46 |
||
1966 | c82: 0d b4 in r0, 0x2d ; 45 |
||
1967 | c84: 07 fe sbrs r0, 7 |
||
1968 | c86: fd cf rjmp .-6 ; 0xc82 <draw_line+0x446> |
||
1969 | SPDR = ltr_p[Message_LowBat[3]]; Wait(); |
||
1970 | c88: f9 01 movw r30, r18 |
||
1971 | c8a: e1 5b subi r30, 0xB1 ; 177 |
||
1972 | c8c: ff 4f sbci r31, 0xFF ; 255 |
||
1973 | c8e: 80 81 ld r24, Z |
||
1974 | c90: 8e bd out 0x2e, r24 ; 46 |
||
1975 | c92: 0d b4 in r0, 0x2d ; 45 |
||
1976 | c94: 07 fe sbrs r0, 7 |
||
1977 | c96: fd cf rjmp .-6 ; 0xc92 <draw_line+0x456> |
||
1978 | SPDR = ltr_p[Message_LowBat[4]]; Wait(); |
||
1979 | c98: f9 01 movw r30, r18 |
||
1980 | c9a: e9 5a subi r30, 0xA9 ; 169 |
||
1981 | c9c: ff 4f sbci r31, 0xFF ; 255 |
||
1982 | c9e: 80 81 ld r24, Z |
||
1983 | ca0: 8e bd out 0x2e, r24 ; 46 |
||
1984 | ca2: 0d b4 in r0, 0x2d ; 45 |
||
1985 | ca4: 07 fe sbrs r0, 7 |
||
1986 | ca6: fd cf rjmp .-6 ; 0xca2 <draw_line+0x466> |
||
1987 | SPDR = ltr_p[Message_LowBat[5]]; Wait(); |
||
1988 | ca8: f9 01 movw r30, r18 |
||
1989 | caa: e0 5c subi r30, 0xC0 ; 192 |
||
1990 | cac: ff 4f sbci r31, 0xFF ; 255 |
||
1991 | cae: 80 81 ld r24, Z |
||
1992 | cb0: 8e bd out 0x2e, r24 ; 46 |
||
1993 | cb2: 0d b4 in r0, 0x2d ; 45 |
||
1994 | cb4: 07 fe sbrs r0, 7 |
||
1995 | cb6: fd cf rjmp .-6 ; 0xcb2 <draw_line+0x476> |
||
1996 | SPDR = ltr_p[Message_LowBat[6]]; Wait(); |
||
1997 | cb8: f9 01 movw r30, r18 |
||
1998 | cba: ee 5b subi r30, 0xBE ; 190 |
||
1999 | cbc: ff 4f sbci r31, 0xFF ; 255 |
||
2000 | cbe: 80 81 ld r24, Z |
||
2001 | cc0: 8e bd out 0x2e, r24 ; 46 |
||
2002 | cc2: 0d b4 in r0, 0x2d ; 45 |
||
2003 | cc4: 07 fe sbrs r0, 7 |
||
2004 | cc6: fd cf rjmp .-6 ; 0xcc2 <draw_line+0x486> |
||
2005 | SPDR = ltr_p[Message_LowBat[7]]; Wait(); |
||
2006 | cc8: f9 01 movw r30, r18 |
||
2007 | cca: ef 5b subi r30, 0xBF ; 191 |
||
2008 | ccc: ff 4f sbci r31, 0xFF ; 255 |
||
2009 | cce: 80 81 ld r24, Z |
||
2010 | cd0: 8e bd out 0x2e, r24 ; 46 |
||
2011 | cd2: 0d b4 in r0, 0x2d ; 45 |
||
2012 | cd4: 07 fe sbrs r0, 7 |
||
2013 | cd6: fd cf rjmp .-6 ; 0xcd2 <draw_line+0x496> |
||
2014 | SPDR = ltr_p[Message_LowBat[8]]; Wait(); |
||
2015 | cd8: f9 01 movw r30, r18 |
||
2016 | cda: ec 5a subi r30, 0xAC ; 172 |
||
2017 | cdc: ff 4f sbci r31, 0xFF ; 255 |
||
2018 | cde: 80 81 ld r24, Z |
||
2019 | ce0: 8e bd out 0x2e, r24 ; 46 |
||
2020 | ce2: 0d b4 in r0, 0x2d ; 45 |
||
2021 | ce4: 07 fe sbrs r0, 7 |
||
2022 | ce6: fd cf rjmp .-6 ; 0xce2 <draw_line+0x4a6> |
||
2023 | SPDR = ltr_p[Message_LowBat[9]]; Wait(); |
||
2024 | ce8: f9 01 movw r30, r18 |
||
2025 | cea: ec 5a subi r30, 0xAC ; 172 |
||
2026 | cec: ff 4f sbci r31, 0xFF ; 255 |
||
2027 | cee: 80 81 ld r24, Z |
||
2028 | cf0: 8e bd out 0x2e, r24 ; 46 |
||
2029 | cf2: 0d b4 in r0, 0x2d ; 45 |
||
2030 | cf4: 07 fe sbrs r0, 7 |
||
2031 | cf6: fd cf rjmp .-6 ; 0xcf2 <draw_line+0x4b6> |
||
2032 | SPDR = ltr_p[Message_LowBat[10]]; Wait(); |
||
2033 | cf8: f9 01 movw r30, r18 |
||
2034 | cfa: eb 5b subi r30, 0xBB ; 187 |
||
2035 | cfc: ff 4f sbci r31, 0xFF ; 255 |
||
2036 | cfe: 80 81 ld r24, Z |
||
2037 | d00: 8e bd out 0x2e, r24 ; 46 |
||
2038 | d02: 0d b4 in r0, 0x2d ; 45 |
||
2039 | d04: 07 fe sbrs r0, 7 |
||
2040 | d06: fd cf rjmp .-6 ; 0xd02 <draw_line+0x4c6> |
||
2041 | SPDR = ltr_p[Message_LowBat[11]]; Wait(); |
||
2042 | d08: f9 01 movw r30, r18 |
||
2043 | d0a: ee 5a subi r30, 0xAE ; 174 |
||
2044 | d0c: ff 4f sbci r31, 0xFF ; 255 |
||
2045 | d0e: 80 81 ld r24, Z |
||
2046 | d10: 8e bd out 0x2e, r24 ; 46 |
||
2047 | d12: 0d b4 in r0, 0x2d ; 45 |
||
2048 | d14: 07 fe sbrs r0, 7 |
||
2049 | d16: fd cf rjmp .-6 ; 0xd12 <draw_line+0x4d6> |
||
2050 | SPDR = ltr_p[Message_LowBat[12]]; Wait(); |
||
2051 | d18: f9 01 movw r30, r18 |
||
2052 | d1a: e7 5a subi r30, 0xA7 ; 167 |
||
2053 | d1c: ff 4f sbci r31, 0xFF ; 255 |
||
2054 | d1e: 80 81 ld r24, Z |
||
2055 | d20: 8e bd out 0x2e, r24 ; 46 |
||
2056 | d22: 0d b4 in r0, 0x2d ; 45 |
||
2057 | d24: 07 fe sbrs r0, 7 |
||
2058 | d26: fd cf rjmp .-6 ; 0xd22 <draw_line+0x4e6> |
||
2059 | SPDR = ltr_p[Message_LowBat[13]]; Wait(); |
||
2060 | d28: f9 01 movw r30, r18 |
||
2061 | d2a: e0 5c subi r30, 0xC0 ; 192 |
||
2062 | d2c: ff 4f sbci r31, 0xFF ; 255 |
||
2063 | d2e: 80 81 ld r24, Z |
||
2064 | d30: 8e bd out 0x2e, r24 ; 46 |
||
2065 | d32: 0d b4 in r0, 0x2d ; 45 |
||
2066 | d34: 07 fe sbrs r0, 7 |
||
2067 | d36: fd cf rjmp .-6 ; 0xd32 <draw_line+0x4f6> |
||
2068 | SPDR = ltr_p[Message_LowBat[14]]; Wait(); |
||
2069 | d38: f9 01 movw r30, r18 |
||
2070 | d3a: e0 5c subi r30, 0xC0 ; 192 |
||
2071 | d3c: ff 4f sbci r31, 0xFF ; 255 |
||
2072 | d3e: 80 81 ld r24, Z |
||
2073 | d40: 8e bd out 0x2e, r24 ; 46 |
||
2074 | d42: 0d b4 in r0, 0x2d ; 45 |
||
2075 | d44: 07 fe sbrs r0, 7 |
||
2076 | d46: fd cf rjmp .-6 ; 0xd42 <draw_line+0x506> |
||
2077 | } |
||
2078 | |||
2079 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2080 | // alt value |
||
2081 | |||
2082 | if((line > 80) && (line <250)) |
||
2083 | d48: ca 01 movw r24, r20 |
||
2084 | d4a: 81 55 subi r24, 0x51 ; 81 |
||
2085 | d4c: 90 40 sbci r25, 0x00 ; 0 |
||
2086 | d4e: 89 3a cpi r24, 0xA9 ; 169 |
||
2087 | d50: 91 05 cpc r25, r1 |
||
2088 | d52: 20 f4 brcc .+8 ; 0xd5c <draw_line+0x520> |
||
2089 | { |
||
2090 | while(TCNT0<LINESTART); |
||
2091 | d54: 86 b5 in r24, 0x26 ; 38 |
||
2092 | d56: 88 3c cpi r24, 0xC8 ; 200 |
||
2093 | d58: e8 f3 brcs .-6 ; 0xd54 <draw_line+0x518> |
||
2094 | TCNT0=0; |
||
2095 | d5a: 16 bc out 0x26, r1 ; 38 |
||
2096 | } |
||
2097 | |||
2098 | if ((line > 170) && (line < 178)) |
||
2099 | d5c: ca 01 movw r24, r20 |
||
2100 | d5e: 8b 5a subi r24, 0xAB ; 171 |
||
2101 | d60: 90 40 sbci r25, 0x00 ; 0 |
||
2102 | d62: 07 97 sbiw r24, 0x07 ; 7 |
||
2103 | d64: 08 f0 brcs .+2 ; 0xd68 <draw_line+0x52c> |
||
2104 | d66: 4d c0 rjmp .+154 ; 0xe02 <draw_line+0x5c6> |
||
2105 | { |
||
2106 | ltemp = (line - 171) * 27 - 64; |
||
2107 | ntemp = (line - 171) * 16 - 43; |
||
2108 | itemp = (line - 171) * 9; |
||
2109 | ltr_p = ltrs+ltemp; |
||
2110 | num_p = nums+ntemp; |
||
2111 | d68: ca 01 movw r24, r20 |
||
2112 | d6a: 82 95 swap r24 |
||
2113 | d6c: 92 95 swap r25 |
||
2114 | d6e: 90 7f andi r25, 0xF0 ; 240 |
||
2115 | d70: 98 27 eor r25, r24 |
||
2116 | d72: 80 7f andi r24, 0xF0 ; 240 |
||
2117 | d74: 98 27 eor r25, r24 |
||
2118 | d76: 9c 01 movw r18, r24 |
||
2119 | d78: 2f 5c subi r18, 0xCF ; 207 |
||
2120 | d7a: 37 40 sbci r19, 0x07 ; 7 |
||
2121 | info_p = infos+itemp; |
||
2122 | while(TCNT0<10); |
||
2123 | d7c: 86 b5 in r24, 0x26 ; 38 |
||
2124 | d7e: 8a 30 cpi r24, 0x0A ; 10 |
||
2125 | d80: e8 f3 brcs .-6 ; 0xd7c <draw_line+0x540> |
||
2126 | SPSR=1; |
||
2127 | d82: 81 e0 ldi r24, 0x01 ; 1 |
||
2128 | d84: 8d bd out 0x2d, r24 ; 45 |
||
2129 | DDRB|=1; |
||
2130 | d86: 20 9a sbi 0x04, 0 ; 4 |
||
2131 | SPDR = num_p[altv[0]]; Wait(); |
||
2132 | d88: 80 91 30 01 lds r24, 0x0130 |
||
2133 | d8c: f9 01 movw r30, r18 |
||
2134 | d8e: e8 0f add r30, r24 |
||
2135 | d90: f1 1d adc r31, r1 |
||
2136 | d92: 80 81 ld r24, Z |
||
2137 | d94: 8e bd out 0x2e, r24 ; 46 |
||
2138 | d96: 0d b4 in r0, 0x2d ; 45 |
||
2139 | d98: 07 fe sbrs r0, 7 |
||
2140 | d9a: fd cf rjmp .-6 ; 0xd96 <draw_line+0x55a> |
||
2141 | SPDR = num_p[altv[1]]; Wait(); |
||
2142 | d9c: 80 91 31 01 lds r24, 0x0131 |
||
2143 | da0: f9 01 movw r30, r18 |
||
2144 | da2: e8 0f add r30, r24 |
||
2145 | da4: f1 1d adc r31, r1 |
||
2146 | da6: 80 81 ld r24, Z |
||
2147 | da8: 8e bd out 0x2e, r24 ; 46 |
||
2148 | daa: 0d b4 in r0, 0x2d ; 45 |
||
2149 | dac: 07 fe sbrs r0, 7 |
||
2150 | dae: fd cf rjmp .-6 ; 0xdaa <draw_line+0x56e> |
||
2151 | SPDR = num_p[altv[2]]; Wait(); |
||
2152 | db0: 80 91 32 01 lds r24, 0x0132 |
||
2153 | db4: f9 01 movw r30, r18 |
||
2154 | db6: e8 0f add r30, r24 |
||
2155 | db8: f1 1d adc r31, r1 |
||
2156 | dba: 80 81 ld r24, Z |
||
2157 | dbc: 8e bd out 0x2e, r24 ; 46 |
||
2158 | dbe: 0d b4 in r0, 0x2d ; 45 |
||
2159 | dc0: 07 fe sbrs r0, 7 |
||
2160 | dc2: fd cf rjmp .-6 ; 0xdbe <draw_line+0x582> |
||
2161 | SPDR = num_p[altv[3]]; Wait(); |
||
2162 | dc4: 80 91 33 01 lds r24, 0x0133 |
||
2163 | dc8: f9 01 movw r30, r18 |
||
2164 | dca: e8 0f add r30, r24 |
||
2165 | dcc: f1 1d adc r31, r1 |
||
2166 | dce: 80 81 ld r24, Z |
||
2167 | dd0: 8e bd out 0x2e, r24 ; 46 |
||
2168 | dd2: 0d b4 in r0, 0x2d ; 45 |
||
2169 | dd4: 07 fe sbrs r0, 7 |
||
2170 | dd6: fd cf rjmp .-6 ; 0xdd2 <draw_line+0x596> |
||
2171 | SPDR = num_p[altv[4]]; Wait(); |
||
2172 | dd8: 80 91 34 01 lds r24, 0x0134 |
||
2173 | ddc: f9 01 movw r30, r18 |
||
2174 | dde: e8 0f add r30, r24 |
||
2175 | de0: f1 1d adc r31, r1 |
||
2176 | de2: 80 81 ld r24, Z |
||
2177 | de4: 8e bd out 0x2e, r24 ; 46 |
||
2178 | de6: 0d b4 in r0, 0x2d ; 45 |
||
2179 | de8: 07 fe sbrs r0, 7 |
||
2180 | dea: fd cf rjmp .-6 ; 0xde6 <draw_line+0x5aa> |
||
2181 | SPDR = num_p[altv[5]]; Wait(); |
||
2182 | dec: 80 91 35 01 lds r24, 0x0135 |
||
2183 | df0: f9 01 movw r30, r18 |
||
2184 | df2: e8 0f add r30, r24 |
||
2185 | df4: f1 1d adc r31, r1 |
||
2186 | df6: 80 81 ld r24, Z |
||
2187 | df8: 8e bd out 0x2e, r24 ; 46 |
||
2188 | dfa: 0d b4 in r0, 0x2d ; 45 |
||
2189 | dfc: 07 fe sbrs r0, 7 |
||
2190 | dfe: fd cf rjmp .-6 ; 0xdfa <draw_line+0x5be> |
||
2191 | DDRB&=0xFE; |
||
2192 | e00: 20 98 cbi 0x04, 0 ; 4 |
||
2193 | } |
||
2194 | |||
2195 | if ((line > 179) && (line < (179 + alt_delta)) && alt_dec) |
||
2196 | e02: 44 3b cpi r20, 0xB4 ; 180 |
||
2197 | e04: 51 05 cpc r21, r1 |
||
2198 | e06: b0 f0 brcs .+44 ; 0xe34 <draw_line+0x5f8> |
||
2199 | e08: 80 91 dc 03 lds r24, 0x03DC |
||
2200 | e0c: 90 91 dd 03 lds r25, 0x03DD |
||
2201 | e10: 8d 54 subi r24, 0x4D ; 77 |
||
2202 | e12: 9f 4f sbci r25, 0xFF ; 255 |
||
2203 | e14: 48 17 cp r20, r24 |
||
2204 | e16: 59 07 cpc r21, r25 |
||
2205 | e18: 68 f4 brcc .+26 ; 0xe34 <draw_line+0x5f8> |
||
2206 | e1a: 80 91 df 03 lds r24, 0x03DF |
||
2207 | e1e: 88 23 and r24, r24 |
||
2208 | e20: 49 f0 breq .+18 ; 0xe34 <draw_line+0x5f8> |
||
2209 | { |
||
2210 | while(TCNT0<50); |
||
2211 | e22: 86 b5 in r24, 0x26 ; 38 |
||
2212 | e24: 82 33 cpi r24, 0x32 ; 50 |
||
2213 | e26: e8 f3 brcs .-6 ; 0xe22 <draw_line+0x5e6> |
||
2214 | SPDR = bar1; Wait(); |
||
2215 | e28: 80 91 36 01 lds r24, 0x0136 |
||
2216 | e2c: 8e bd out 0x2e, r24 ; 46 |
||
2217 | e2e: 0d b4 in r0, 0x2d ; 45 |
||
2218 | e30: 07 fe sbrs r0, 7 |
||
2219 | e32: fd cf rjmp .-6 ; 0xe2e <draw_line+0x5f2> |
||
2220 | } |
||
2221 | |||
2222 | if ((line > (169 - alt_delta)) && (line < 169) && alt_inc) |
||
2223 | e34: 40 91 ed 03 lds r20, 0x03ED |
||
2224 | e38: 50 91 ee 03 lds r21, 0x03EE |
||
2225 | e3c: 20 91 dc 03 lds r18, 0x03DC |
||
2226 | e40: 30 91 dd 03 lds r19, 0x03DD |
||
2227 | e44: 89 ea ldi r24, 0xA9 ; 169 |
||
2228 | e46: 90 e0 ldi r25, 0x00 ; 0 |
||
2229 | e48: 82 1b sub r24, r18 |
||
2230 | e4a: 93 0b sbc r25, r19 |
||
2231 | e4c: 84 17 cp r24, r20 |
||
2232 | e4e: 95 07 cpc r25, r21 |
||
2233 | e50: 80 f4 brcc .+32 ; 0xe72 <draw_line+0x636> |
||
2234 | e52: 49 3a cpi r20, 0xA9 ; 169 |
||
2235 | e54: 51 05 cpc r21, r1 |
||
2236 | e56: 68 f4 brcc .+26 ; 0xe72 <draw_line+0x636> |
||
2237 | e58: 80 91 de 03 lds r24, 0x03DE |
||
2238 | e5c: 88 23 and r24, r24 |
||
2239 | e5e: 49 f0 breq .+18 ; 0xe72 <draw_line+0x636> |
||
2240 | { |
||
2241 | while(TCNT0<50); |
||
2242 | e60: 86 b5 in r24, 0x26 ; 38 |
||
2243 | e62: 82 33 cpi r24, 0x32 ; 50 |
||
2244 | e64: e8 f3 brcs .-6 ; 0xe60 <draw_line+0x624> |
||
2245 | SPDR = bar1; Wait(); |
||
2246 | e66: 80 91 36 01 lds r24, 0x0136 |
||
2247 | e6a: 8e bd out 0x2e, r24 ; 46 |
||
2248 | e6c: 0d b4 in r0, 0x2d ; 45 |
||
2249 | e6e: 07 fe sbrs r0, 7 |
||
2250 | e70: fd cf rjmp .-6 ; 0xe6c <draw_line+0x630> |
||
2251 | } |
||
2252 | asm("nop"); |
||
2253 | e72: 00 00 nop |
||
2254 | |||
2255 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||
2256 | // grafic array |
||
2257 | if ((line > 90) && (line < 250) && (showgraphic==1)) |
||
2258 | e74: ca 01 movw r24, r20 |
||
2259 | e76: 8b 55 subi r24, 0x5B ; 91 |
||
2260 | e78: 90 40 sbci r25, 0x00 ; 0 |
||
2261 | e7a: 8f 39 cpi r24, 0x9F ; 159 |
||
2262 | e7c: 91 05 cpc r25, r1 |
||
2263 | e7e: 08 f0 brcs .+2 ; 0xe82 <draw_line+0x646> |
||
2264 | e80: 84 c0 rjmp .+264 ; 0xf8a <draw_line+0x74e> |
||
2265 | e82: 80 91 00 01 lds r24, 0x0100 |
||
2266 | e86: 81 30 cpi r24, 0x01 ; 1 |
||
2267 | e88: 09 f0 breq .+2 ; 0xe8c <draw_line+0x650> |
||
2268 | e8a: 7f c0 rjmp .+254 ; 0xf8a <draw_line+0x74e> |
||
2269 | { |
||
2270 | |||
2271 | while(TCNT0<250); |
||
2272 | e8c: 86 b5 in r24, 0x26 ; 38 |
||
2273 | e8e: 8a 3f cpi r24, 0xFA ; 250 |
||
2274 | e90: e8 f3 brcs .-6 ; 0xe8c <draw_line+0x650> |
||
2275 | TCNT0=0; |
||
2276 | e92: 16 bc out 0x26, r1 ; 38 |
||
2277 | |||
2278 | i1=7*((line-90)>>2); |
||
2279 | e94: ca 01 movw r24, r20 |
||
2280 | e96: 8a 55 subi r24, 0x5A ; 90 |
||
2281 | e98: 90 40 sbci r25, 0x00 ; 0 |
||
2282 | e9a: 96 95 lsr r25 |
||
2283 | e9c: 87 95 ror r24 |
||
2284 | e9e: 96 95 lsr r25 |
||
2285 | ea0: 87 95 ror r24 |
||
2286 | ea2: fc 01 movw r30, r24 |
||
2287 | ea4: ee 0f add r30, r30 |
||
2288 | ea6: ff 1f adc r31, r31 |
||
2289 | ea8: ee 0f add r30, r30 |
||
2290 | eaa: ff 1f adc r31, r31 |
||
2291 | eac: ee 0f add r30, r30 |
||
2292 | eae: ff 1f adc r31, r31 |
||
2293 | eb0: e8 1b sub r30, r24 |
||
2294 | eb2: f9 0b sbc r31, r25 |
||
2295 | i=0; |
||
2296 | c1=dmem[i1++]; |
||
2297 | eb4: 87 e3 ldi r24, 0x37 ; 55 |
||
2298 | eb6: 91 e0 ldi r25, 0x01 ; 1 |
||
2299 | eb8: df 01 movw r26, r30 |
||
2300 | eba: a8 0f add r26, r24 |
||
2301 | ebc: b9 1f adc r27, r25 |
||
2302 | ebe: 4c 91 ld r20, X |
||
2303 | ec0: 31 96 adiw r30, 0x01 ; 1 |
||
2304 | c2=dmem[i1++]; |
||
2305 | ec2: df 01 movw r26, r30 |
||
2306 | ec4: a8 0f add r26, r24 |
||
2307 | ec6: b9 1f adc r27, r25 |
||
2308 | ec8: 3c 91 ld r19, X |
||
2309 | eca: 31 96 adiw r30, 0x01 ; 1 |
||
2310 | c3=dmem[i1++]; |
||
2311 | ecc: df 01 movw r26, r30 |
||
2312 | ece: a8 0f add r26, r24 |
||
2313 | ed0: b9 1f adc r27, r25 |
||
2314 | ed2: 5c 91 ld r21, X |
||
2315 | ed4: 31 96 adiw r30, 0x01 ; 1 |
||
2316 | c4=dmem[i1++]; |
||
2317 | ed6: df 01 movw r26, r30 |
||
2318 | ed8: a8 0f add r26, r24 |
||
2319 | eda: b9 1f adc r27, r25 |
||
2320 | edc: 6c 91 ld r22, X |
||
2321 | ede: 31 96 adiw r30, 0x01 ; 1 |
||
2322 | c5=dmem[i1++]; |
||
2323 | ee0: df 01 movw r26, r30 |
||
2324 | ee2: a8 0f add r26, r24 |
||
2325 | ee4: b9 1f adc r27, r25 |
||
2326 | ee6: ac 91 ld r26, X |
||
2327 | ee8: 31 96 adiw r30, 0x01 ; 1 |
||
2328 | c6=dmem[i1++]; |
||
2329 | eea: e8 0f add r30, r24 |
||
2330 | eec: f9 1f adc r31, r25 |
||
2331 | eee: 70 81 ld r23, Z |
||
2332 | c7=dmem[i1++]; |
||
2333 | ef0: 91 81 ldd r25, Z+1 ; 0x01 |
||
2334 | while(TCNT0<20); |
||
2335 | ef2: 86 b5 in r24, 0x26 ; 38 |
||
2336 | ef4: 84 31 cpi r24, 0x14 ; 20 |
||
2337 | ef6: e8 f3 brcs .-6 ; 0xef2 <draw_line+0x6b6> |
||
2338 | if (showgraphicb) DDRB|=1; |
||
2339 | ef8: 80 91 01 01 lds r24, 0x0101 |
||
2340 | efc: 88 23 and r24, r24 |
||
2341 | efe: 11 f4 brne .+4 ; 0xf04 <draw_line+0x6c8> |
||
2342 | f00: 20 e0 ldi r18, 0x00 ; 0 |
||
2343 | f02: 02 c0 rjmp .+4 ; 0xf08 <draw_line+0x6cc> |
||
2344 | f04: 20 9a sbi 0x04, 0 ; 4 |
||
2345 | f06: 20 e0 ldi r18, 0x00 ; 0 |
||
2346 | do { |
||
2347 | PORTB=((c1<<2)&0x04); |
||
2348 | f08: 84 2f mov r24, r20 |
||
2349 | f0a: 88 0f add r24, r24 |
||
2350 | f0c: 88 0f add r24, r24 |
||
2351 | f0e: 84 70 andi r24, 0x04 ; 4 |
||
2352 | f10: 85 b9 out 0x05, r24 ; 5 |
||
2353 | c1=c1>>1; |
||
2354 | f12: 46 95 lsr r20 |
||
2355 | i++; |
||
2356 | f14: 2f 5f subi r18, 0xFF ; 255 |
||
2357 | } while(i<8); |
||
2358 | f16: 28 30 cpi r18, 0x08 ; 8 |
||
2359 | f18: b9 f7 brne .-18 ; 0xf08 <draw_line+0x6cc> |
||
2360 | do { |
||
2361 | PORTB=((c2<<2)&0x04); |
||
2362 | f1a: 83 2f mov r24, r19 |
||
2363 | f1c: 88 0f add r24, r24 |
||
2364 | f1e: 88 0f add r24, r24 |
||
2365 | f20: 84 70 andi r24, 0x04 ; 4 |
||
2366 | f22: 85 b9 out 0x05, r24 ; 5 |
||
2367 | c2=c2>>1; |
||
2368 | f24: 36 95 lsr r19 |
||
2369 | i++; |
||
2370 | f26: 2f 5f subi r18, 0xFF ; 255 |
||
2371 | } while(i<16); |
||
2372 | f28: 20 31 cpi r18, 0x10 ; 16 |
||
2373 | f2a: b9 f7 brne .-18 ; 0xf1a <draw_line+0x6de> |
||
2374 | do { |
||
2375 | PORTB=((c3<<2)&0x04); |
||
2376 | f2c: 85 2f mov r24, r21 |
||
2377 | f2e: 88 0f add r24, r24 |
||
2378 | f30: 88 0f add r24, r24 |
||
2379 | f32: 84 70 andi r24, 0x04 ; 4 |
||
2380 | f34: 85 b9 out 0x05, r24 ; 5 |
||
2381 | c3=c3>>1; |
||
2382 | f36: 56 95 lsr r21 |
||
2383 | i++; |
||
2384 | f38: 2f 5f subi r18, 0xFF ; 255 |
||
2385 | } while(i<24); |
||
2386 | f3a: 28 31 cpi r18, 0x18 ; 24 |
||
2387 | f3c: b9 f7 brne .-18 ; 0xf2c <draw_line+0x6f0> |
||
2388 | do { |
||
2389 | PORTB=((c4<<2)&0x04); |
||
2390 | f3e: 86 2f mov r24, r22 |
||
2391 | f40: 88 0f add r24, r24 |
||
2392 | f42: 88 0f add r24, r24 |
||
2393 | f44: 84 70 andi r24, 0x04 ; 4 |
||
2394 | f46: 85 b9 out 0x05, r24 ; 5 |
||
2395 | c4=c4>>1; |
||
2396 | f48: 66 95 lsr r22 |
||
2397 | i++; |
||
2398 | f4a: 2f 5f subi r18, 0xFF ; 255 |
||
2399 | } while(i<32); |
||
2400 | f4c: 20 32 cpi r18, 0x20 ; 32 |
||
2401 | f4e: b9 f7 brne .-18 ; 0xf3e <draw_line+0x702> |
||
2402 | do { |
||
2403 | PORTB=((c5<<2)&0x04); |
||
2404 | f50: 8a 2f mov r24, r26 |
||
2405 | f52: 88 0f add r24, r24 |
||
2406 | f54: 88 0f add r24, r24 |
||
2407 | f56: 84 70 andi r24, 0x04 ; 4 |
||
2408 | f58: 85 b9 out 0x05, r24 ; 5 |
||
2409 | c5=c5>>1; |
||
2410 | f5a: a6 95 lsr r26 |
||
2411 | i++; |
||
2412 | f5c: 2f 5f subi r18, 0xFF ; 255 |
||
2413 | } while(i<40); |
||
2414 | f5e: 28 32 cpi r18, 0x28 ; 40 |
||
2415 | f60: b9 f7 brne .-18 ; 0xf50 <draw_line+0x714> |
||
2416 | do { |
||
2417 | PORTB=((c6<<2)&0x04); |
||
2418 | f62: 87 2f mov r24, r23 |
||
2419 | f64: 88 0f add r24, r24 |
||
2420 | f66: 88 0f add r24, r24 |
||
2421 | f68: 84 70 andi r24, 0x04 ; 4 |
||
2422 | f6a: 85 b9 out 0x05, r24 ; 5 |
||
2423 | c6=c6>>1; |
||
2424 | f6c: 76 95 lsr r23 |
||
2425 | i++; |
||
2426 | f6e: 2f 5f subi r18, 0xFF ; 255 |
||
2427 | } while(i<48); |
||
2428 | f70: 20 33 cpi r18, 0x30 ; 48 |
||
2429 | f72: b9 f7 brne .-18 ; 0xf62 <draw_line+0x726> |
||
2430 | do { |
||
2431 | PORTB=((c7<<2)&0x04); |
||
2432 | f74: 89 2f mov r24, r25 |
||
2433 | f76: 88 0f add r24, r24 |
||
2434 | f78: 88 0f add r24, r24 |
||
2435 | f7a: 84 70 andi r24, 0x04 ; 4 |
||
2436 | f7c: 85 b9 out 0x05, r24 ; 5 |
||
2437 | c7=c7>>1; |
||
2438 | f7e: 96 95 lsr r25 |
||
2439 | i++; |
||
2440 | f80: 2f 5f subi r18, 0xFF ; 255 |
||
2441 | } while(i<56); |
||
2442 | f82: 28 33 cpi r18, 0x38 ; 56 |
||
2443 | f84: b9 f7 brne .-18 ; 0xf74 <draw_line+0x738> |
||
2444 | PORTB=0x00; |
||
2445 | f86: 15 b8 out 0x05, r1 ; 5 |
||
2446 | DDRB&=0xFE; |
||
2447 | f88: 20 98 cbi 0x04, 0 ; 4 |
||
2448 | } |
||
2449 | |||
2450 | |||
2451 | // Debug - remove for release |
||
2452 | // if ((line > 270) && (line < 278)) |
||
2453 | // { |
||
2454 | // SPSR=1; |
||
2455 | // ltemp = (line - 271) * 27 - 64; |
||
2456 | // ntemp = (line - 271) * 16 - 43; |
||
2457 | // itemp = (line - 271) * 8; |
||
2458 | // ltr_p = ltrs+ltemp; |
||
2459 | // num_p = nums+ntemp; |
||
2460 | // info_p = infos+itemp; |
||
2461 | // while(TCNT0<LINESTART); |
||
2462 | // DDRB|=1; //sink thru PB0 |
||
2463 | // SPDR = ltr_p[rxtx[0]]; Wait(); |
||
2464 | // SPDR = ltr_p[rxtx[1]]; Wait(); |
||
2465 | // SPDR = ltr_p[rxtx[2]]; Wait(); |
||
2466 | // SPDR = info_p[rxtx[3]]; Wait(); |
||
2467 | // SPDR = ltr_p[rxtx[4]]; Wait(); |
||
2468 | // SPDR = ltr_p[rxtx[5]]; Wait(); |
||
2469 | // SPDR = ltr_p[rxtx[6]]; Wait(); |
||
2470 | // SPDR = ltr_p[rxtx[7]]; Wait(); |
||
2471 | // SPDR = info_p[rxtx[8]]; Wait(); |
||
2472 | // TCNT0=0; |
||
2473 | // while(TCNT0<3); // 3 wait a little bit before turning off dimmer so that the |
||
2474 | // // length of black box on the right matches the one on the left |
||
2475 | // DDRB&=0xFE; //PB0 Hi-Z again, and load a blank so spacing is right |
||
2476 | // } |
||
2477 | |||
2478 | |||
2479 | // if ((line > 280) && (line < 288)) |
||
2480 | // { |
||
2481 | // SPSR=1; |
||
2482 | // ltemp = (line - 281) * 27 - 64; |
||
2483 | // ntemp = (line - 281) * 16 - 43; |
||
2484 | // ltr_p = ltrs+ltemp; //by calculating this pointer you only have to |
||
2485 | // num_p = nums+ntemp; //add ltemp/ntemp once per line, instead of for |
||
2486 | //every char. This tightens up printing a bit |
||
2487 | //saves about 3 assembly instructions per char |
||
2488 | |||
2489 | // SPDR = ltr_p['@']; Wait(); //goofy hack to make SPSR=0 work, write an empty char at SPSR=1 first |
||
2490 | // SPSR=1; |
||
2491 | // while(TCNT0<LINESTART); |
||
2492 | // DDRB|=1; //sink thru PB0 |
||
2493 | // //;display_line1[0]='A'; |
||
2494 | // SPDR = ltr_p[display_line1[0]]; Wait(); |
||
2495 | // SPDR = ltr_p[display_line1[1]]; Wait(); |
||
2496 | // SPDR = ltr_p[display_line1[2]]; Wait(); |
||
2497 | // SPDR = ltr_p[display_line1[3]]; Wait(); |
||
2498 | // SPDR = ltr_p[display_line1[4]]; Wait(); |
||
2499 | // SPDR = ltr_p[display_line1[5]]; Wait(); |
||
2500 | // TCNT0=0; |
||
2501 | // while(TCNT0<3); // 3 wait a little bit before turning off dimmer so that the |
||
2502 | // // length of black box on the right matches the one on the left |
||
2503 | // DDRB&=0xFE; //PB0 Hi-Z again, and load a blank so spacing is right |
||
2504 | // } |
||
2505 | |||
2506 | if ((line > 300) && (line < 308)) |
||
2507 | f8a: 20 91 ed 03 lds r18, 0x03ED |
||
2508 | f8e: 30 91 ee 03 lds r19, 0x03EE |
||
2509 | f92: c9 01 movw r24, r18 |
||
2510 | f94: 8d 52 subi r24, 0x2D ; 45 |
||
2511 | f96: 91 40 sbci r25, 0x01 ; 1 |
||
2512 | f98: 07 97 sbiw r24, 0x07 ; 7 |
||
2513 | f9a: 08 f0 brcs .+2 ; 0xf9e <draw_line+0x762> |
||
2514 | f9c: a2 c0 rjmp .+324 ; 0x10e2 <draw_line+0x8a6> |
||
2515 | { |
||
2516 | SPSR=1; |
||
2517 | f9e: 81 e0 ldi r24, 0x01 ; 1 |
||
2518 | fa0: 8d bd out 0x2d, r24 ; 45 |
||
2519 | ltemp = (line - 301) * 27 - 64; |
||
2520 | ntemp = (line - 301) * 16 - 43; |
||
2521 | ltr_p = ltrs+ltemp; |
||
2522 | fa2: c9 01 movw r24, r18 |
||
2523 | fa4: 88 0f add r24, r24 |
||
2524 | fa6: 99 1f adc r25, r25 |
||
2525 | fa8: 82 0f add r24, r18 |
||
2526 | faa: 93 1f adc r25, r19 |
||
2527 | fac: 9c 01 movw r18, r24 |
||
2528 | fae: 22 0f add r18, r18 |
||
2529 | fb0: 33 1f adc r19, r19 |
||
2530 | fb2: 22 0f add r18, r18 |
||
2531 | fb4: 33 1f adc r19, r19 |
||
2532 | fb6: 22 0f add r18, r18 |
||
2533 | fb8: 33 1f adc r19, r19 |
||
2534 | fba: 82 0f add r24, r18 |
||
2535 | fbc: 93 1f adc r25, r19 |
||
2536 | fbe: 9c 01 movw r18, r24 |
||
2537 | fc0: 20 5b subi r18, 0xB0 ; 176 |
||
2538 | fc2: 3d 41 sbci r19, 0x1D ; 29 |
||
2539 | num_p = nums+ntemp; |
||
2540 | while(TCNT0<LINESTART+COPYRIGHTSTART); |
||
2541 | fc4: 86 b5 in r24, 0x26 ; 38 |
||
2542 | fc6: 88 3c cpi r24, 0xC8 ; 200 |
||
2543 | fc8: e8 f3 brcs .-6 ; 0xfc4 <draw_line+0x788> |
||
2544 | SPDR = ltr_p[head[0]]; Wait(); |
||
2545 | fca: f9 01 movw r30, r18 |
||
2546 | fcc: ed 5b subi r30, 0xBD ; 189 |
||
2547 | fce: ff 4f sbci r31, 0xFF ; 255 |
||
2548 | fd0: 80 81 ld r24, Z |
||
2549 | fd2: 8e bd out 0x2e, r24 ; 46 |
||
2550 | fd4: 0d b4 in r0, 0x2d ; 45 |
||
2551 | fd6: 07 fe sbrs r0, 7 |
||
2552 | fd8: fd cf rjmp .-6 ; 0xfd4 <draw_line+0x798> |
||
2553 | SPDR = ltr_p[head[1]]; Wait(); |
||
2554 | fda: f9 01 movw r30, r18 |
||
2555 | fdc: e0 5c subi r30, 0xC0 ; 192 |
||
2556 | fde: ff 4f sbci r31, 0xFF ; 255 |
||
2557 | fe0: 80 81 ld r24, Z |
||
2558 | fe2: 8e bd out 0x2e, r24 ; 46 |
||
2559 | fe4: 0d b4 in r0, 0x2d ; 45 |
||
2560 | fe6: 07 fe sbrs r0, 7 |
||
2561 | fe8: fd cf rjmp .-6 ; 0xfe4 <draw_line+0x7a8> |
||
2562 | SPDR = ltr_p[head[2]]; Wait(); |
||
2563 | fea: f9 01 movw r30, r18 |
||
2564 | fec: e9 5b subi r30, 0xB9 ; 185 |
||
2565 | fee: ff 4f sbci r31, 0xFF ; 255 |
||
2566 | ff0: 80 81 ld r24, Z |
||
2567 | ff2: 8e bd out 0x2e, r24 ; 46 |
||
2568 | ff4: 0d b4 in r0, 0x2d ; 45 |
||
2569 | ff6: 07 fe sbrs r0, 7 |
||
2570 | ff8: fd cf rjmp .-6 ; 0xff4 <draw_line+0x7b8> |
||
2571 | SPDR = ltr_p[head[3]]; Wait(); |
||
2572 | ffa: f9 01 movw r30, r18 |
||
2573 | ffc: eb 5a subi r30, 0xAB ; 171 |
||
2574 | ffe: ff 4f sbci r31, 0xFF ; 255 |
||
2575 | 1000: 80 81 ld r24, Z |
||
2576 | 1002: 8e bd out 0x2e, r24 ; 46 |
||
2577 | 1004: 0d b4 in r0, 0x2d ; 45 |
||
2578 | 1006: 07 fe sbrs r0, 7 |
||
2579 | 1008: fd cf rjmp .-6 ; 0x1004 <draw_line+0x7c8> |
||
2580 | SPDR = ltr_p[head[4]]; Wait(); |
||
2581 | 100a: f9 01 movw r30, r18 |
||
2582 | 100c: e2 5b subi r30, 0xB2 ; 178 |
||
2583 | 100e: ff 4f sbci r31, 0xFF ; 255 |
||
2584 | 1010: 80 81 ld r24, Z |
||
2585 | 1012: 8e bd out 0x2e, r24 ; 46 |
||
2586 | 1014: 0d b4 in r0, 0x2d ; 45 |
||
2587 | 1016: 07 fe sbrs r0, 7 |
||
2588 | 1018: fd cf rjmp .-6 ; 0x1014 <draw_line+0x7d8> |
||
2589 | SPDR = ltr_p[head[5]]; Wait(); |
||
2590 | 101a: f9 01 movw r30, r18 |
||
2591 | 101c: ec 5a subi r30, 0xAC ; 172 |
||
2592 | 101e: ff 4f sbci r31, 0xFF ; 255 |
||
2593 | 1020: 80 81 ld r24, Z |
||
2594 | 1022: 8e bd out 0x2e, r24 ; 46 |
||
2595 | 1024: 0d b4 in r0, 0x2d ; 45 |
||
2596 | 1026: 07 fe sbrs r0, 7 |
||
2597 | 1028: fd cf rjmp .-6 ; 0x1024 <draw_line+0x7e8> |
||
2598 | SPDR = ltr_p[head[6]]; Wait(); |
||
2599 | 102a: f9 01 movw r30, r18 |
||
2600 | 102c: eb 5b subi r30, 0xBB ; 187 |
||
2601 | 102e: ff 4f sbci r31, 0xFF ; 255 |
||
2602 | 1030: 80 81 ld r24, Z |
||
2603 | 1032: 8e bd out 0x2e, r24 ; 46 |
||
2604 | 1034: 0d b4 in r0, 0x2d ; 45 |
||
2605 | 1036: 07 fe sbrs r0, 7 |
||
2606 | 1038: fd cf rjmp .-6 ; 0x1034 <draw_line+0x7f8> |
||
2607 | SPDR = ltr_p[head[7]]; Wait(); |
||
2608 | 103a: f9 01 movw r30, r18 |
||
2609 | 103c: ee 5a subi r30, 0xAE ; 174 |
||
2610 | 103e: ff 4f sbci r31, 0xFF ; 255 |
||
2611 | 1040: 80 81 ld r24, Z |
||
2612 | 1042: 8e bd out 0x2e, r24 ; 46 |
||
2613 | 1044: 0d b4 in r0, 0x2d ; 45 |
||
2614 | 1046: 07 fe sbrs r0, 7 |
||
2615 | 1048: fd cf rjmp .-6 ; 0x1044 <draw_line+0x808> |
||
2616 | SPDR = ltr_p[head[8]]; Wait(); |
||
2617 | 104a: f9 01 movw r30, r18 |
||
2618 | 104c: e0 5c subi r30, 0xC0 ; 192 |
||
2619 | 104e: ff 4f sbci r31, 0xFF ; 255 |
||
2620 | 1050: 80 81 ld r24, Z |
||
2621 | 1052: 8e bd out 0x2e, r24 ; 46 |
||
2622 | 1054: 0d b4 in r0, 0x2d ; 45 |
||
2623 | 1056: 07 fe sbrs r0, 7 |
||
2624 | 1058: fd cf rjmp .-6 ; 0x1054 <draw_line+0x818> |
||
2625 | SPDR = ltr_p[head[9]]; Wait(); |
||
2626 | 105a: f9 01 movw r30, r18 |
||
2627 | 105c: e4 5b subi r30, 0xB4 ; 180 |
||
2628 | 105e: ff 4f sbci r31, 0xFF ; 255 |
||
2629 | 1060: 80 81 ld r24, Z |
||
2630 | 1062: 8e bd out 0x2e, r24 ; 46 |
||
2631 | 1064: 0d b4 in r0, 0x2d ; 45 |
||
2632 | 1066: 07 fe sbrs r0, 7 |
||
2633 | 1068: fd cf rjmp .-6 ; 0x1064 <draw_line+0x828> |
||
2634 | SPDR = ltr_p[head[10]]; Wait(); |
||
2635 | 106a: f9 01 movw r30, r18 |
||
2636 | 106c: e1 5b subi r30, 0xB1 ; 177 |
||
2637 | 106e: ff 4f sbci r31, 0xFF ; 255 |
||
2638 | 1070: 80 81 ld r24, Z |
||
2639 | 1072: 8e bd out 0x2e, r24 ; 46 |
||
2640 | 1074: 0d b4 in r0, 0x2d ; 45 |
||
2641 | 1076: 07 fe sbrs r0, 7 |
||
2642 | 1078: fd cf rjmp .-6 ; 0x1074 <draw_line+0x838> |
||
2643 | SPDR = ltr_p[head[11]]; Wait(); |
||
2644 | 107a: f9 01 movw r30, r18 |
||
2645 | 107c: e9 5b subi r30, 0xB9 ; 185 |
||
2646 | 107e: ff 4f sbci r31, 0xFF ; 255 |
||
2647 | 1080: 80 81 ld r24, Z |
||
2648 | 1082: 8e bd out 0x2e, r24 ; 46 |
||
2649 | 1084: 0d b4 in r0, 0x2d ; 45 |
||
2650 | 1086: 07 fe sbrs r0, 7 |
||
2651 | 1088: fd cf rjmp .-6 ; 0x1084 <draw_line+0x848> |
||
2652 | SPDR = ltr_p[head[12]]; Wait(); |
||
2653 | 108a: f9 01 movw r30, r18 |
||
2654 | 108c: eb 5b subi r30, 0xBB ; 187 |
||
2655 | 108e: ff 4f sbci r31, 0xFF ; 255 |
||
2656 | 1090: 80 81 ld r24, Z |
||
2657 | 1092: 8e bd out 0x2e, r24 ; 46 |
||
2658 | 1094: 0d b4 in r0, 0x2d ; 45 |
||
2659 | 1096: 07 fe sbrs r0, 7 |
||
2660 | 1098: fd cf rjmp .-6 ; 0x1094 <draw_line+0x858> |
||
2661 | SPDR = ltr_p[head[13]]; Wait(); |
||
2662 | 109a: f9 01 movw r30, r18 |
||
2663 | 109c: e3 5b subi r30, 0xB3 ; 179 |
||
2664 | 109e: ff 4f sbci r31, 0xFF ; 255 |
||
2665 | 10a0: 80 81 ld r24, Z |
||
2666 | 10a2: 8e bd out 0x2e, r24 ; 46 |
||
2667 | 10a4: 0d b4 in r0, 0x2d ; 45 |
||
2668 | 10a6: 07 fe sbrs r0, 7 |
||
2669 | 10a8: fd cf rjmp .-6 ; 0x10a4 <draw_line+0x868> |
||
2670 | SPDR = ltr_p[head[14]]; Wait(); |
||
2671 | 10aa: f9 01 movw r30, r18 |
||
2672 | 10ac: ef 5b subi r30, 0xBF ; 191 |
||
2673 | 10ae: ff 4f sbci r31, 0xFF ; 255 |
||
2674 | 10b0: 80 81 ld r24, Z |
||
2675 | 10b2: 8e bd out 0x2e, r24 ; 46 |
||
2676 | 10b4: 0d b4 in r0, 0x2d ; 45 |
||
2677 | 10b6: 07 fe sbrs r0, 7 |
||
2678 | 10b8: fd cf rjmp .-6 ; 0x10b4 <draw_line+0x878> |
||
2679 | SPDR = ltr_p[head[15]]; Wait(); |
||
2680 | 10ba: f9 01 movw r30, r18 |
||
2681 | 10bc: e2 5b subi r30, 0xB2 ; 178 |
||
2682 | 10be: ff 4f sbci r31, 0xFF ; 255 |
||
2683 | 10c0: 80 81 ld r24, Z |
||
2684 | 10c2: 8e bd out 0x2e, r24 ; 46 |
||
2685 | 10c4: 0d b4 in r0, 0x2d ; 45 |
||
2686 | 10c6: 07 fe sbrs r0, 7 |
||
2687 | 10c8: fd cf rjmp .-6 ; 0x10c4 <draw_line+0x888> |
||
2688 | SPDR = ltr_p[head[16]]; Wait(); |
||
2689 | 10ca: f9 01 movw r30, r18 |
||
2690 | 10cc: e2 5b subi r30, 0xB2 ; 178 |
||
2691 | 10ce: ff 4f sbci r31, 0xFF ; 255 |
||
2692 | 10d0: 80 81 ld r24, Z |
||
2693 | 10d2: 8e bd out 0x2e, r24 ; 46 |
||
2694 | 10d4: 0d b4 in r0, 0x2d ; 45 |
||
2695 | 10d6: 07 fe sbrs r0, 7 |
||
2696 | 10d8: fd cf rjmp .-6 ; 0x10d4 <draw_line+0x898> |
||
2697 | TCNT0=0; |
||
2698 | 10da: 16 bc out 0x26, r1 ; 38 |
||
2699 | while(TCNT0<2); |
||
2700 | 10dc: 86 b5 in r24, 0x26 ; 38 |
||
2701 | 10de: 82 30 cpi r24, 0x02 ; 2 |
||
2702 | 10e0: e8 f3 brcs .-6 ; 0x10dc <draw_line+0x8a0> |
||
2703 | 10e2: 08 95 ret |
||
2704 | |||
2705 | 000010e4 <__vector_1>: |
||
2706 | } |
||
2707 | } // end draw_line() |
||
2708 | |||
2709 | |||
2710 | //----------------------------------------------------------------------------- |
||
2711 | // H-Sync Interrupt |
||
2712 | //-----------------------------------------------------------------------------*/ |
||
2713 | SIGNAL(SIG_INTERRUPT0) |
||
2714 | { |
||
2715 | 10e4: 1f 92 push r1 |
||
2716 | 10e6: 0f 92 push r0 |
||
2717 | 10e8: 0f b6 in r0, 0x3f ; 63 |
||
2718 | 10ea: 0f 92 push r0 |
||
2719 | 10ec: 11 24 eor r1, r1 |
||
2720 | 10ee: 2f 93 push r18 |
||
2721 | 10f0: 3f 93 push r19 |
||
2722 | 10f2: 4f 93 push r20 |
||
2723 | 10f4: 5f 93 push r21 |
||
2724 | 10f6: 6f 93 push r22 |
||
2725 | 10f8: 7f 93 push r23 |
||
2726 | 10fa: 8f 93 push r24 |
||
2727 | 10fc: 9f 93 push r25 |
||
2728 | 10fe: af 93 push r26 |
||
2729 | 1100: bf 93 push r27 |
||
2730 | 1102: ef 93 push r30 |
||
2731 | 1104: ff 93 push r31 |
||
2732 | TCNT0=0; // reset timer |
||
2733 | 1106: 16 bc out 0x26, r1 ; 38 |
||
2734 | line++; // increment line counter |
||
2735 | 1108: 80 91 ed 03 lds r24, 0x03ED |
||
2736 | 110c: 90 91 ee 03 lds r25, 0x03EE |
||
2737 | 1110: 01 96 adiw r24, 0x01 ; 1 |
||
2738 | 1112: 90 93 ee 03 sts 0x03EE, r25 |
||
2739 | 1116: 80 93 ed 03 sts 0x03ED, r24 |
||
2740 | draw_line(); // output the line |
||
2741 | 111a: 90 db rcall .-2272 ; 0x83c <draw_line> |
||
2742 | 111c: ff 91 pop r31 |
||
2743 | 111e: ef 91 pop r30 |
||
2744 | 1120: bf 91 pop r27 |
||
2745 | 1122: af 91 pop r26 |
||
2746 | 1124: 9f 91 pop r25 |
||
2747 | 1126: 8f 91 pop r24 |
||
2748 | 1128: 7f 91 pop r23 |
||
2749 | 112a: 6f 91 pop r22 |
||
2750 | 112c: 5f 91 pop r21 |
||
2751 | 112e: 4f 91 pop r20 |
||
2752 | 1130: 3f 91 pop r19 |
||
2753 | 1132: 2f 91 pop r18 |
||
2754 | 1134: 0f 90 pop r0 |
||
2755 | 1136: 0f be out 0x3f, r0 ; 63 |
||
2756 | 1138: 0f 90 pop r0 |
||
2757 | 113a: 1f 90 pop r1 |
||
2758 | 113c: 18 95 reti |
||
2759 | |||
2760 | 0000113e <__vector_2>: |
||
2761 | } |
||
2762 | |||
2763 | |||
2764 | //----------------------------------------------------------------------------- |
||
2765 | // V-Sync Interrupt |
||
2766 | //-----------------------------------------------------------------------------*/ |
||
2767 | SIGNAL(SIG_INTERRUPT1) |
||
2768 | { |
||
2769 | 113e: 1f 92 push r1 |
||
2770 | 1140: 0f 92 push r0 |
||
2771 | 1142: 0f b6 in r0, 0x3f ; 63 |
||
2772 | 1144: 0f 92 push r0 |
||
2773 | 1146: 11 24 eor r1, r1 |
||
2774 | 1148: 8f 93 push r24 |
||
2775 | line = 0; |
||
2776 | 114a: 10 92 ee 03 sts 0x03EE, r1 |
||
2777 | 114e: 10 92 ed 03 sts 0x03ED, r1 |
||
2778 | framecounter++; |
||
2779 | 1152: 80 91 da 03 lds r24, 0x03DA |
||
2780 | 1156: 8f 5f subi r24, 0xFF ; 255 |
||
2781 | 1158: 80 93 da 03 sts 0x03DA, r24 |
||
2782 | 115c: 8f 91 pop r24 |
||
2783 | 115e: 0f 90 pop r0 |
||
2784 | 1160: 0f be out 0x3f, r0 ; 63 |
||
2785 | 1162: 0f 90 pop r0 |
||
2786 | 1164: 1f 90 pop r1 |
||
2787 | 1166: 18 95 reti |
||
2788 | |||
2789 | 00001168 <__udivmodhi4>: |
||
2790 | 1168: aa 1b sub r26, r26 |
||
2791 | 116a: bb 1b sub r27, r27 |
||
2792 | 116c: 51 e1 ldi r21, 0x11 ; 17 |
||
2793 | 116e: 07 c0 rjmp .+14 ; 0x117e <__udivmodhi4_ep> |
||
2794 | |||
2795 | 00001170 <__udivmodhi4_loop>: |
||
2796 | 1170: aa 1f adc r26, r26 |
||
2797 | 1172: bb 1f adc r27, r27 |
||
2798 | 1174: a6 17 cp r26, r22 |
||
2799 | 1176: b7 07 cpc r27, r23 |
||
2800 | 1178: 10 f0 brcs .+4 ; 0x117e <__udivmodhi4_ep> |
||
2801 | 117a: a6 1b sub r26, r22 |
||
2802 | 117c: b7 0b sbc r27, r23 |
||
2803 | |||
2804 | 0000117e <__udivmodhi4_ep>: |
||
2805 | 117e: 88 1f adc r24, r24 |
||
2806 | 1180: 99 1f adc r25, r25 |
||
2807 | 1182: 5a 95 dec r21 |
||
2808 | 1184: a9 f7 brne .-22 ; 0x1170 <__udivmodhi4_loop> |
||
2809 | 1186: 80 95 com r24 |
||
2810 | 1188: 90 95 com r25 |
||
2811 | 118a: bc 01 movw r22, r24 |
||
2812 | 118c: cd 01 movw r24, r26 |
||
2813 | 118e: 08 95 ret |
||
2814 | |||
2815 | 00001190 <__divmodhi4>: |
||
2816 | 1190: 97 fb bst r25, 7 |
||
2817 | 1192: 09 2e mov r0, r25 |
||
2818 | 1194: 07 26 eor r0, r23 |
||
2819 | 1196: 0a d0 rcall .+20 ; 0x11ac <__divmodhi4_neg1> |
||
2820 | 1198: 77 fd sbrc r23, 7 |
||
2821 | 119a: 04 d0 rcall .+8 ; 0x11a4 <__divmodhi4_neg2> |
||
2822 | 119c: e5 df rcall .-54 ; 0x1168 <__udivmodhi4> |
||
2823 | 119e: 06 d0 rcall .+12 ; 0x11ac <__divmodhi4_neg1> |
||
2824 | 11a0: 00 20 and r0, r0 |
||
2825 | 11a2: 1a f4 brpl .+6 ; 0x11aa <__divmodhi4_exit> |
||
2826 | |||
2827 | 000011a4 <__divmodhi4_neg2>: |
||
2828 | 11a4: 70 95 com r23 |
||
2829 | 11a6: 61 95 neg r22 |
||
2830 | 11a8: 7f 4f sbci r23, 0xFF ; 255 |
||
2831 | |||
2832 | 000011aa <__divmodhi4_exit>: |
||
2833 | 11aa: 08 95 ret |
||
2834 | |||
2835 | 000011ac <__divmodhi4_neg1>: |
||
2836 | 11ac: f6 f7 brtc .-4 ; 0x11aa <__divmodhi4_exit> |
||
2837 | 11ae: 90 95 com r25 |
||
2838 | 11b0: 81 95 neg r24 |
||
2839 | 11b2: 9f 4f sbci r25, 0xFF ; 255 |
||
2840 | 11b4: 08 95 ret |
||
2841 | |||
2842 | 000011b6 <_exit>: |
||
2843 | 11b6: ff cf rjmp .-2 ; 0x11b6 <_exit> |