led und off/on taster eingebaut
This commit is contained in:
parent
0f8c5d627b
commit
fd37a5a985
|
@ -0,0 +1,502 @@
|
|||
1 .file "lcd_routines.c"
|
||||
2 __SREG__ = 0x3f
|
||||
3 __SP_H__ = 0x3e
|
||||
4 __SP_L__ = 0x3d
|
||||
5 __CCP__ = 0x34
|
||||
6 __tmp_reg__ = 0
|
||||
7 __zero_reg__ = 1
|
||||
15 .Ltext0:
|
||||
17 lcd_enable:
|
||||
18 .LFB6:
|
||||
19 .LM1:
|
||||
20 /* prologue: function */
|
||||
21 /* frame size = 0 */
|
||||
22 /* stack size = 0 */
|
||||
23 .L__stack_usage = 0
|
||||
24 .LM2:
|
||||
25 0000 DD9A sbi 59-32,5
|
||||
26 .LVL0:
|
||||
27 .LBB22:
|
||||
28 .LBB23:
|
||||
29 .LM3:
|
||||
30 0002 8AE6 ldi r24,lo8(106)
|
||||
31 0004 8A95 1:dec r24
|
||||
32 0006 01F4 brne 1b
|
||||
33 0008 00C0 rjmp .
|
||||
34 .LBE23:
|
||||
35 .LBE22:
|
||||
36 .LM4:
|
||||
37 000a DD98 cbi 59-32,5
|
||||
38 /* epilogue start */
|
||||
39 .LM5:
|
||||
40 000c 0895 ret
|
||||
41 .LFE6:
|
||||
44 lcd_out:
|
||||
45 .LFB7:
|
||||
46 .LM6:
|
||||
47 .LVL1:
|
||||
48 /* prologue: function */
|
||||
49 /* frame size = 0 */
|
||||
50 /* stack size = 0 */
|
||||
51 .L__stack_usage = 0
|
||||
52 .LM7:
|
||||
53 000e 9BB3 in r25,59-32
|
||||
54 0010 907F andi r25,lo8(-16)
|
||||
55 0012 9BBB out 59-32,r25
|
||||
56 .LM8:
|
||||
57 0014 9BB3 in r25,59-32
|
||||
58 0016 8295 swap r24
|
||||
59 .LVL2:
|
||||
60 0018 8F70 andi r24,lo8(15)
|
||||
61 001a 892B or r24,r25
|
||||
62 001c 8BBB out 59-32,r24
|
||||
63 .LM9:
|
||||
64 001e 0E94 0000 call lcd_enable
|
||||
65 /* epilogue start */
|
||||
66 .LM10:
|
||||
67 0022 0895 ret
|
||||
68 .LFE7:
|
||||
70 .global lcd_data
|
||||
72 lcd_data:
|
||||
73 .LFB9:
|
||||
74 .LM11:
|
||||
75 .LVL3:
|
||||
76 0024 1F93 push r17
|
||||
77 /* prologue: function */
|
||||
78 /* frame size = 0 */
|
||||
79 /* stack size = 1 */
|
||||
80 .L__stack_usage = 1
|
||||
81 0026 182F mov r17,r24
|
||||
82 .LM12:
|
||||
83 0028 DC9A sbi 59-32,4
|
||||
84 .LM13:
|
||||
85 002a 0E94 0000 call lcd_out
|
||||
86 .LVL4:
|
||||
87 .LM14:
|
||||
88 002e 812F mov r24,r17
|
||||
89 0030 8295 swap r24
|
||||
90 0032 807F andi r24,lo8(-16)
|
||||
91 0034 0E94 0000 call lcd_out
|
||||
92 .LVL5:
|
||||
93 .LBB24:
|
||||
94 .LBB25:
|
||||
95 .LM15:
|
||||
96 0038 85EF ldi r24,lo8(-11)
|
||||
97 003a 8A95 1:dec r24
|
||||
98 003c 01F4 brne 1b
|
||||
99 003e 0000 nop
|
||||
100 /* epilogue start */
|
||||
101 .LBE25:
|
||||
102 .LBE24:
|
||||
103 .LM16:
|
||||
104 0040 1F91 pop r17
|
||||
105 .LVL6:
|
||||
106 0042 0895 ret
|
||||
107 .LFE9:
|
||||
109 .global lcd_command
|
||||
111 lcd_command:
|
||||
112 .LFB10:
|
||||
113 .LM17:
|
||||
114 .LVL7:
|
||||
115 0044 1F93 push r17
|
||||
116 /* prologue: function */
|
||||
117 /* frame size = 0 */
|
||||
118 /* stack size = 1 */
|
||||
119 .L__stack_usage = 1
|
||||
120 0046 182F mov r17,r24
|
||||
121 .LM18:
|
||||
122 0048 DC98 cbi 59-32,4
|
||||
123 .LM19:
|
||||
124 004a 0E94 0000 call lcd_out
|
||||
125 .LVL8:
|
||||
126 .LM20:
|
||||
127 004e 812F mov r24,r17
|
||||
128 0050 8295 swap r24
|
||||
129 0052 807F andi r24,lo8(-16)
|
||||
130 0054 0E94 0000 call lcd_out
|
||||
131 .LVL9:
|
||||
132 .LBB26:
|
||||
133 .LBB27:
|
||||
134 .LM21:
|
||||
135 0058 80EE ldi r24,lo8(-32)
|
||||
136 005a 8A95 1:dec r24
|
||||
137 005c 01F4 brne 1b
|
||||
138 /* epilogue start */
|
||||
139 .LBE27:
|
||||
140 .LBE26:
|
||||
141 .LM22:
|
||||
142 005e 1F91 pop r17
|
||||
143 .LVL10:
|
||||
144 0060 0895 ret
|
||||
145 .LFE10:
|
||||
147 .global lcd_clear
|
||||
149 lcd_clear:
|
||||
150 .LFB11:
|
||||
151 .LM23:
|
||||
152 /* prologue: function */
|
||||
153 /* frame size = 0 */
|
||||
154 /* stack size = 0 */
|
||||
155 .L__stack_usage = 0
|
||||
156 .LM24:
|
||||
157 0062 81E0 ldi r24,lo8(1)
|
||||
158 0064 0E94 0000 call lcd_command
|
||||
159 .LVL11:
|
||||
160 .LBB28:
|
||||
161 .LBB29:
|
||||
162 .LM25:
|
||||
163 0068 8FE3 ldi r24,lo8(7999)
|
||||
164 006a 9FE1 ldi r25,hi8(7999)
|
||||
165 006c 0197 1:sbiw r24,1
|
||||
166 006e 01F4 brne 1b
|
||||
167 0070 00C0 rjmp .
|
||||
168 0072 0000 nop
|
||||
169 /* epilogue start */
|
||||
170 .LBE29:
|
||||
171 .LBE28:
|
||||
172 .LM26:
|
||||
173 0074 0895 ret
|
||||
174 .LFE11:
|
||||
176 .global lcd_init
|
||||
178 lcd_init:
|
||||
179 .LFB8:
|
||||
180 .LM27:
|
||||
181 /* prologue: function */
|
||||
182 /* frame size = 0 */
|
||||
183 /* stack size = 0 */
|
||||
184 .L__stack_usage = 0
|
||||
185 .LVL12:
|
||||
186 .LM28:
|
||||
187 0076 8AB3 in r24,58-32
|
||||
188 0078 8F63 ori r24,lo8(63)
|
||||
189 007a 8ABB out 58-32,r24
|
||||
190 .LM29:
|
||||
191 007c 8BB3 in r24,59-32
|
||||
192 007e 807C andi r24,lo8(-64)
|
||||
193 0080 8BBB out 59-32,r24
|
||||
194 .LVL13:
|
||||
195 .LBB30:
|
||||
196 .LBB31:
|
||||
197 .LM30:
|
||||
198 0082 8FE5 ldi r24,lo8(-5537)
|
||||
199 0084 9AEE ldi r25,hi8(-5537)
|
||||
200 0086 0197 1:sbiw r24,1
|
||||
201 0088 01F4 brne 1b
|
||||
202 008a 00C0 rjmp .
|
||||
203 008c 0000 nop
|
||||
204 .LBE31:
|
||||
205 .LBE30:
|
||||
206 .LM31:
|
||||
207 008e 80E3 ldi r24,lo8(48)
|
||||
208 0090 0E94 0000 call lcd_out
|
||||
209 .LVL14:
|
||||
210 .LBB32:
|
||||
211 .LBB33:
|
||||
212 .LM32:
|
||||
213 0094 8FE1 ldi r24,lo8(19999)
|
||||
214 0096 9EE4 ldi r25,hi8(19999)
|
||||
215 0098 0197 1:sbiw r24,1
|
||||
216 009a 01F4 brne 1b
|
||||
217 009c 00C0 rjmp .
|
||||
218 009e 0000 nop
|
||||
219 .LBE33:
|
||||
220 .LBE32:
|
||||
221 .LM33:
|
||||
222 00a0 0E94 0000 call lcd_enable
|
||||
223 .LVL15:
|
||||
224 .LBB34:
|
||||
225 .LBB35:
|
||||
226 .LM34:
|
||||
227 00a4 8FE9 ldi r24,lo8(3999)
|
||||
228 00a6 9FE0 ldi r25,hi8(3999)
|
||||
229 00a8 0197 1:sbiw r24,1
|
||||
230 00aa 01F4 brne 1b
|
||||
231 00ac 00C0 rjmp .
|
||||
232 00ae 0000 nop
|
||||
233 .LBE35:
|
||||
234 .LBE34:
|
||||
235 .LM35:
|
||||
236 00b0 0E94 0000 call lcd_enable
|
||||
237 .LVL16:
|
||||
238 .LBB36:
|
||||
239 .LBB37:
|
||||
240 .LM36:
|
||||
241 00b4 8FE9 ldi r24,lo8(3999)
|
||||
242 00b6 9FE0 ldi r25,hi8(3999)
|
||||
243 00b8 0197 1:sbiw r24,1
|
||||
244 00ba 01F4 brne 1b
|
||||
245 00bc 00C0 rjmp .
|
||||
246 00be 0000 nop
|
||||
247 .LBE37:
|
||||
248 .LBE36:
|
||||
249 .LM37:
|
||||
250 00c0 80E2 ldi r24,lo8(32)
|
||||
251 00c2 0E94 0000 call lcd_out
|
||||
252 .LVL17:
|
||||
253 .LBB38:
|
||||
254 .LBB39:
|
||||
255 .LM38:
|
||||
256 00c6 8FE1 ldi r24,lo8(19999)
|
||||
257 00c8 9EE4 ldi r25,hi8(19999)
|
||||
258 00ca 0197 1:sbiw r24,1
|
||||
259 00cc 01F4 brne 1b
|
||||
260 00ce 00C0 rjmp .
|
||||
261 00d0 0000 nop
|
||||
262 .LBE39:
|
||||
263 .LBE38:
|
||||
264 .LM39:
|
||||
265 00d2 88E2 ldi r24,lo8(40)
|
||||
266 00d4 0E94 0000 call lcd_command
|
||||
267 .LM40:
|
||||
268 00d8 8CE0 ldi r24,lo8(12)
|
||||
269 00da 0E94 0000 call lcd_command
|
||||
270 .LM41:
|
||||
271 00de 86E0 ldi r24,lo8(6)
|
||||
272 00e0 0E94 0000 call lcd_command
|
||||
273 .LM42:
|
||||
274 00e4 0E94 0000 call lcd_clear
|
||||
275 /* epilogue start */
|
||||
276 .LM43:
|
||||
277 00e8 0895 ret
|
||||
278 .LFE8:
|
||||
280 .global lcd_home
|
||||
282 lcd_home:
|
||||
283 .LFB12:
|
||||
284 .LM44:
|
||||
285 /* prologue: function */
|
||||
286 /* frame size = 0 */
|
||||
287 /* stack size = 0 */
|
||||
288 .L__stack_usage = 0
|
||||
289 .LM45:
|
||||
290 00ea 82E0 ldi r24,lo8(2)
|
||||
291 00ec 0E94 0000 call lcd_command
|
||||
292 .LVL18:
|
||||
293 .LBB40:
|
||||
294 .LBB41:
|
||||
295 .LM46:
|
||||
296 00f0 8FE3 ldi r24,lo8(7999)
|
||||
297 00f2 9FE1 ldi r25,hi8(7999)
|
||||
298 00f4 0197 1:sbiw r24,1
|
||||
299 00f6 01F4 brne 1b
|
||||
300 00f8 00C0 rjmp .
|
||||
301 00fa 0000 nop
|
||||
302 /* epilogue start */
|
||||
303 .LBE41:
|
||||
304 .LBE40:
|
||||
305 .LM47:
|
||||
306 00fc 0895 ret
|
||||
307 .LFE12:
|
||||
309 .global lcd_setcursor
|
||||
311 lcd_setcursor:
|
||||
312 .LFB13:
|
||||
313 .LM48:
|
||||
314 .LVL19:
|
||||
315 /* prologue: function */
|
||||
316 /* frame size = 0 */
|
||||
317 /* stack size = 0 */
|
||||
318 .L__stack_usage = 0
|
||||
319 .LM49:
|
||||
320 00fe 6230 cpi r22,lo8(2)
|
||||
321 0100 01F0 breq .L11
|
||||
322 0102 6330 cpi r22,lo8(3)
|
||||
323 0104 00F4 brsh .L14
|
||||
324 0106 6130 cpi r22,lo8(1)
|
||||
325 0108 01F4 brne .L8
|
||||
326 010a 00C0 rjmp .L16
|
||||
327 .L14:
|
||||
328 010c 6330 cpi r22,lo8(3)
|
||||
329 010e 01F0 breq .L12
|
||||
330 0110 6430 cpi r22,lo8(4)
|
||||
331 0112 01F4 brne .L8
|
||||
332 0114 00C0 rjmp .L17
|
||||
333 .L16:
|
||||
334 .LM50:
|
||||
335 0116 8058 subi r24,lo8(-(-128))
|
||||
336 .LVL20:
|
||||
337 .LM51:
|
||||
338 0118 00C0 rjmp .L15
|
||||
339 .LVL21:
|
||||
340 .L11:
|
||||
341 .LM52:
|
||||
342 011a 8054 subi r24,lo8(-(-64))
|
||||
343 .LVL22:
|
||||
344 .LM53:
|
||||
345 011c 00C0 rjmp .L15
|
||||
346 .LVL23:
|
||||
347 .L12:
|
||||
348 .LM54:
|
||||
349 011e 8057 subi r24,lo8(-(-112))
|
||||
350 .LVL24:
|
||||
351 .LM55:
|
||||
352 0120 00C0 rjmp .L15
|
||||
353 .LVL25:
|
||||
354 .L17:
|
||||
355 .LM56:
|
||||
356 0122 8053 subi r24,lo8(-(-48))
|
||||
357 .LVL26:
|
||||
358 .L15:
|
||||
359 .LM57:
|
||||
360 0124 0E94 0000 call lcd_command
|
||||
361 .LVL27:
|
||||
362 .L8:
|
||||
363 0128 0895 ret
|
||||
364 .LFE13:
|
||||
366 .global lcd_string
|
||||
368 lcd_string:
|
||||
369 .LFB14:
|
||||
370 .LM58:
|
||||
371 .LVL28:
|
||||
372 012a EF92 push r14
|
||||
373 012c FF92 push r15
|
||||
374 012e CF93 push r28
|
||||
375 0130 DF93 push r29
|
||||
376 /* prologue: function */
|
||||
377 /* frame size = 0 */
|
||||
378 /* stack size = 4 */
|
||||
379 .L__stack_usage = 4
|
||||
380 .LM59:
|
||||
381 0132 E82E mov r14,r24
|
||||
382 0134 E701 movw r28,r14
|
||||
383 0136 7E01 movw r14,r28
|
||||
384 0138 F92E mov r15,r25
|
||||
385 013a E701 movw r28,r14
|
||||
386 .LM60:
|
||||
387 013c 00C0 rjmp .L19
|
||||
388 .LVL29:
|
||||
389 .L20:
|
||||
390 .LM61:
|
||||
391 013e 0E94 0000 call lcd_data
|
||||
392 .L19:
|
||||
393 .LM62:
|
||||
394 0142 8991 ld r24,Y+
|
||||
395 0144 8823 tst r24
|
||||
396 0146 01F4 brne .L20
|
||||
397 /* epilogue start */
|
||||
398 .LM63:
|
||||
399 0148 DF91 pop r29
|
||||
400 014a CF91 pop r28
|
||||
401 014c FF90 pop r15
|
||||
402 014e EF90 pop r14
|
||||
403 0150 0895 ret
|
||||
404 .LFE14:
|
||||
406 .global lcd_string_p
|
||||
408 lcd_string_p:
|
||||
409 .LFB15:
|
||||
410 .LM64:
|
||||
411 .LVL30:
|
||||
412 0152 CF93 push r28
|
||||
413 0154 DF93 push r29
|
||||
414 /* prologue: function */
|
||||
415 /* frame size = 0 */
|
||||
416 /* stack size = 2 */
|
||||
417 .L__stack_usage = 2
|
||||
418 0156 EC01 movw r28,r24
|
||||
419 .LM65:
|
||||
420 0158 00C0 rjmp .L22
|
||||
421 .LVL31:
|
||||
422 .L23:
|
||||
423 .LM66:
|
||||
424 015a 0E94 0000 call lcd_data
|
||||
425 .LVL32:
|
||||
426 .L22:
|
||||
427 .LM67:
|
||||
428 015e FE01 movw r30,r28
|
||||
429 .LVL33:
|
||||
430 .LBB42:
|
||||
431 .LM68:
|
||||
432 0160 2196 adiw r28,1
|
||||
433 .LVL34:
|
||||
434 /* #APP */
|
||||
435 ; 167 "lcd_routines.c" 1
|
||||
436 0162 8491 lpm r24, Z
|
||||
437
|
||||
438 ; 0 "" 2
|
||||
439 .LVL35:
|
||||
440 /* #NOAPP */
|
||||
441 .LBE42:
|
||||
442 0164 8823 tst r24
|
||||
443 0166 01F4 brne .L23
|
||||
444 /* epilogue start */
|
||||
445 .LM69:
|
||||
446 0168 DF91 pop r29
|
||||
447 016a CF91 pop r28
|
||||
448 .LVL36:
|
||||
449 016c 0895 ret
|
||||
450 .LFE15:
|
||||
452 .global lcd_generatechar
|
||||
454 lcd_generatechar:
|
||||
455 .LFB16:
|
||||
456 .LM70:
|
||||
457 .LVL37:
|
||||
458 016e EF92 push r14
|
||||
459 0170 FF92 push r15
|
||||
460 0172 1F93 push r17
|
||||
461 0174 DF93 push r29
|
||||
462 0176 CF93 push r28
|
||||
463 0178 00D0 rcall .
|
||||
464 017a CDB7 in r28,__SP_L__
|
||||
465 017c DEB7 in r29,__SP_H__
|
||||
466 /* prologue: function */
|
||||
467 /* frame size = 2 */
|
||||
468 /* stack size = 7 */
|
||||
469 .L__stack_usage = 7
|
||||
470 .LM71:
|
||||
471 017e 880F lsl r24
|
||||
472 0180 880F lsl r24
|
||||
473 0182 880F lsl r24
|
||||
474 .LVL38:
|
||||
475 0184 8064 ori r24,lo8(64)
|
||||
476 0186 6983 std Y+1,r22
|
||||
477 0188 7A83 std Y+2,r23
|
||||
478 018a 0E94 0000 call lcd_command
|
||||
479 .LVL39:
|
||||
480 018e 6981 ldd r22,Y+1
|
||||
481 0190 7A81 ldd r23,Y+2
|
||||
482 0192 462F mov r20,r22
|
||||
483 0194 572F mov r21,r23
|
||||
484 0196 7A01 movw r14,r20
|
||||
485 0198 18E0 ldi r17,lo8(8)
|
||||
486 .LVL40:
|
||||
487 .L25:
|
||||
488 .LBB43:
|
||||
489 .LM72:
|
||||
490 019a F701 movw r30,r14
|
||||
491 019c 8191 ld r24,Z+
|
||||
492 019e 7F01 movw r14,r30
|
||||
493 01a0 0E94 0000 call lcd_data
|
||||
494 01a4 1150 subi r17,lo8(-(-1))
|
||||
495 .LM73:
|
||||
496 01a6 01F4 brne .L25
|
||||
497 /* epilogue start */
|
||||
498 .LBE43:
|
||||
499 .LM74:
|
||||
500 01a8 0F90 pop __tmp_reg__
|
||||
501 01aa 0F90 pop __tmp_reg__
|
||||
502 01ac CF91 pop r28
|
||||
503 01ae DF91 pop r29
|
||||
504 01b0 1F91 pop r17
|
||||
505 01b2 FF90 pop r15
|
||||
506 01b4 EF90 pop r14
|
||||
507 01b6 0895 ret
|
||||
508 .LFE16:
|
||||
614 .Letext0:
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 lcd_routines.c
|
||||
/tmp/cc7NhYw7.s:2 *ABS*:000000000000003f __SREG__
|
||||
/tmp/cc7NhYw7.s:3 *ABS*:000000000000003e __SP_H__
|
||||
/tmp/cc7NhYw7.s:4 *ABS*:000000000000003d __SP_L__
|
||||
/tmp/cc7NhYw7.s:5 *ABS*:0000000000000034 __CCP__
|
||||
/tmp/cc7NhYw7.s:6 *ABS*:0000000000000000 __tmp_reg__
|
||||
/tmp/cc7NhYw7.s:7 *ABS*:0000000000000001 __zero_reg__
|
||||
/tmp/cc7NhYw7.s:17 .text:0000000000000000 lcd_enable
|
||||
/tmp/cc7NhYw7.s:44 .text:000000000000000e lcd_out
|
||||
/tmp/cc7NhYw7.s:72 .text:0000000000000024 lcd_data
|
||||
/tmp/cc7NhYw7.s:111 .text:0000000000000044 lcd_command
|
||||
/tmp/cc7NhYw7.s:149 .text:0000000000000062 lcd_clear
|
||||
/tmp/cc7NhYw7.s:178 .text:0000000000000076 lcd_init
|
||||
/tmp/cc7NhYw7.s:282 .text:00000000000000ea lcd_home
|
||||
/tmp/cc7NhYw7.s:311 .text:00000000000000fe lcd_setcursor
|
||||
/tmp/cc7NhYw7.s:368 .text:000000000000012a lcd_string
|
||||
/tmp/cc7NhYw7.s:408 .text:0000000000000152 lcd_string_p
|
||||
/tmp/cc7NhYw7.s:454 .text:000000000000016e lcd_generatechar
|
||||
|
||||
NO UNDEFINED SYMBOLS
|
Binary file not shown.
62
main.c
62
main.c
|
@ -6,22 +6,27 @@
|
|||
#include "lcd_routines.h"
|
||||
#include "uart.h"
|
||||
|
||||
#define SAVE PD2
|
||||
#define SIGNAL PD3
|
||||
#define FREQ_DOWN PD4
|
||||
#define FREQ_UP PD5
|
||||
#define AMP_DOWN PD6
|
||||
#define AMP_UP PD7
|
||||
#define KEY_DDR DDRD
|
||||
#define KEY_PORT PORTD
|
||||
#define KEY_PIN PIND
|
||||
#define SAVE PD2
|
||||
#define SIGNAL PD3
|
||||
#define FREQ_DOWN PD4
|
||||
#define FREQ_UP PD5
|
||||
#define AMP_DOWN PD6
|
||||
#define AMP_UP PD7
|
||||
#define KEY_DDR DDRD
|
||||
#define KEY_PORT PORTD
|
||||
#define KEY_PIN PIND
|
||||
#define KEY_ON_DDR DDRB
|
||||
#define KEY_ON_PORT PORTB
|
||||
#define KEY_ON_PIN PINB
|
||||
#define KEY_ON PB0
|
||||
|
||||
#define LED_PIN PA7
|
||||
#define LED_PORT PORTA
|
||||
#define LED_DDR DDRA
|
||||
|
||||
#define led_on() LED_PORT |= _BV(LED_PORT);
|
||||
#define led_off() LED_PORT &= ~_BV(LED_PORT);
|
||||
#define led_on() LED_PORT |= _BV(LED_PIN);
|
||||
#define led_off() LED_PORT &= ~_BV(LED_PIN);
|
||||
#define led_toggle() LED_PORT ^= _BV(LED_PIN)
|
||||
|
||||
#define UART_BAUD_RATE 9600
|
||||
|
||||
|
@ -31,15 +36,12 @@
|
|||
#define REPEAT_START 50
|
||||
#define REPEAT_NEXT 20
|
||||
|
||||
volatile uint8_t key_state; // debounced and inverted key state:
|
||||
// bit = 1: key pressed
|
||||
volatile uint8_t key_press; // key press detect
|
||||
|
||||
volatile uint8_t key_rpt; // key long press and repeat
|
||||
volatile uint16_t key_state;
|
||||
volatile uint16_t key_press;
|
||||
|
||||
/* prototypes */
|
||||
void init_io();
|
||||
uint8_t get_key_press(uint8_t key_mask);
|
||||
uint16_t get_key_press(uint16_t key_mask);
|
||||
|
||||
int main(void) {
|
||||
init_io();
|
||||
|
@ -60,6 +62,10 @@ int main(void) {
|
|||
lcd_clear();
|
||||
} else if (c == '+') {
|
||||
lcd_setcursor(0, 2);
|
||||
} else if (c == '\'') {
|
||||
led_off();
|
||||
} else if (c == '#') {
|
||||
led_on();
|
||||
} else {
|
||||
lcd_data(c);
|
||||
}
|
||||
|
@ -80,6 +86,9 @@ int main(void) {
|
|||
if (get_key_press(_BV(AMP_DOWN))) {
|
||||
uart_putc('a');
|
||||
}
|
||||
if (get_key_press(_BV(KEY_ON) << 8)) {
|
||||
uart_putc('o');
|
||||
}
|
||||
if (get_key_press(_BV(SAVE))) {
|
||||
uart_putc('v');
|
||||
}
|
||||
|
@ -91,7 +100,12 @@ int main(void) {
|
|||
void init_io() {
|
||||
KEY_DDR &= ~ALL_KEYS; // configure key port for input
|
||||
KEY_PORT |= ALL_KEYS;
|
||||
|
||||
KEY_ON_DDR &= ~_BV(KEY_ON);
|
||||
KEY_ON_PORT |= _BV(KEY_ON);
|
||||
|
||||
LED_DDR |= _BV(LED_PIN);
|
||||
LED_PORT &= ~_BV(LED_PIN);
|
||||
|
||||
TCCR0 = (1 << CS02) | (1 << CS00); // divide by 1024
|
||||
TCNT0 = (uint8_t) (int16_t) -(F_CPU / 1024 * 10e-3 + 0.5); // preload for 10ms
|
||||
|
@ -99,27 +113,21 @@ void init_io() {
|
|||
}
|
||||
|
||||
ISR( TIMER0_OVF_vect ) {
|
||||
static uint8_t ct0, ct1, rpt;
|
||||
uint8_t i;
|
||||
static uint16_t ct0, ct1;
|
||||
uint16_t i;
|
||||
|
||||
TCNT0 = (uint8_t) (int16_t) -(F_CPU / 1024 * 10e-3 + 0.5); // preload for 10ms
|
||||
|
||||
i = key_state ^ ~KEY_PIN; // key changed ?
|
||||
i = key_state ^ ~(KEY_PIN | (KEY_ON_PIN << 8)); // key changed ?
|
||||
ct0 = ~(ct0 & i); // reset or count ct0
|
||||
ct1 = ct0 ^ (ct1 & i); // reset or count ct1
|
||||
i &= ct0 & ct1; // count until roll over ?
|
||||
key_state ^= i; // then toggle debounced state
|
||||
key_press |= key_state & i; // 0->1: key press detect
|
||||
|
||||
if ((key_state & REPEAT_MASK) == 0) // check repeat function
|
||||
rpt = REPEAT_START; // start delay
|
||||
if (--rpt == 0) {
|
||||
rpt = REPEAT_NEXT; // repeat delay
|
||||
key_rpt |= key_state & REPEAT_MASK;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t get_key_press(uint8_t key_mask) {
|
||||
uint16_t get_key_press(uint16_t key_mask) {
|
||||
cli();
|
||||
// read and clear atomic !
|
||||
key_mask &= key_press; // read key(s)
|
||||
|
|
|
@ -0,0 +1,96 @@
|
|||
:100000000C942A000C943C000C943C000C943C0092
|
||||
:100010000C943C000C943C000C943C000C943C0070
|
||||
:100020000C943C000C9450000C943C000C940D0279
|
||||
:100030000C9436020C943C000C943C000C943C0054
|
||||
:100040000C943C000C943C000C943C000C943C0040
|
||||
:100050000C943C0011241FBECFE5D4E0DEBFCDBF21
|
||||
:1000600010E0A0E6B0E001C01D92AD3AB107E1F7A3
|
||||
:100070000E94C2000C94F6020C94000081B38370BD
|
||||
:1000800081BB82B38C6F82BBB898C09AD79ADF9835
|
||||
:1000900085E083BF84E682BF89B7816089BF089508
|
||||
:1000A0001F920F920FB60F9211242F933F934F93ED
|
||||
:1000B0005F938F939F9384E682BF4091AB005091F2
|
||||
:1000C000AC0080B396B3392F20E090E0822B932BC5
|
||||
:1000D0008095909584279527209162003091630048
|
||||
:1000E00028233923209530953093630020936200B4
|
||||
:1000F00040916000509161004823592342275327C3
|
||||
:1001000050936100409360008223932384239523BE
|
||||
:100110002091AB003091AC00282739273093AC00F8
|
||||
:100120002093AB002091A9003091AA004091AB0030
|
||||
:100130005091AC0048235923422B532B5093AA00D3
|
||||
:100140004093A9009F918F915F914F913F912F9183
|
||||
:100150000F900FBE0F901F9018959C01F8948091FE
|
||||
:10016000A9009091AA00282339238091A900909199
|
||||
:10017000AA00822793279093AA008093A9007894DD
|
||||
:10018000C90108950E943E000E946C0187E690E03C
|
||||
:100190000E945B0280E060E00E94B00178940E94BF
|
||||
:1001A000BD0218161906E4F40E946F028A32910506
|
||||
:1001B00019F40E94620114C08B32910529F480E089
|
||||
:1001C00062E00E94B0010CC08732910511F4DF9803
|
||||
:1001D00007C08332910511F4DF9A02C00E944301E7
|
||||
:1001E00080E190E00E94AD00009719F086E60E9441
|
||||
:1001F0008A0280E290E00E94AD00009719F086E448
|
||||
:100200000E948A0288E090E00E94AD00009719F0F9
|
||||
:1002100083E70E948A0280E890E00E94AD00009788
|
||||
:1002200019F081E40E948A0280E490E00E94AD000F
|
||||
:10023000009719F081E60E948A0280E091E00E9416
|
||||
:10024000AD00009719F08FE60E948A0284E090E0EA
|
||||
:100250000E94AD00009709F4A2CF86E70E948A02AF
|
||||
:100260009ECFDD9A8AE68A95F1F700C0DD98089561
|
||||
:100270009BB3907F9BBB9BB382958F70892B8BBB6D
|
||||
:100280000E94310108951F93182FDC9A0E943801B3
|
||||
:10029000812F8295807F0E94380185EF8A95F1F742
|
||||
:1002A00000001F9108951F93182FDC980E943801B9
|
||||
:1002B000812F8295807F0E94380180EE8A95F1F728
|
||||
:1002C0001F91089581E00E9453018FE39FE1019700
|
||||
:1002D000F1F700C0000008958AB38F638ABB8BB327
|
||||
:1002E000807C8BBB8FE59AEE0197F1F700C0000090
|
||||
:1002F00080E30E9438018FE19EE40197F1F700C08E
|
||||
:1003000000000E9431018FE99FE00197F1F700C0E2
|
||||
:1003100000000E9431018FE99FE00197F1F700C0D2
|
||||
:10032000000080E20E9438018FE19EE40197F1F71E
|
||||
:1003300000C0000088E20E9453018CE00E9453013B
|
||||
:1003400086E00E9453010E946201089582E00E94AB
|
||||
:1003500053018FE39FE10197F1F700C0000008957A
|
||||
:10036000623061F0633018F4613079F405C06330B5
|
||||
:1003700039F0643051F406C0805805C0805403C081
|
||||
:10038000805701C080530E9453010895EF92FF925D
|
||||
:10039000CF93DF93E82EE7017E01F92EE70102C03B
|
||||
:1003A0000E94430189918823D9F7DF91CF91FF9073
|
||||
:1003B000EF900895CF93DF93EC0102C00E944301B8
|
||||
:1003C000FE01219684918823C9F7DF91CF9108958A
|
||||
:1003D000EF92FF921F93DF93CF9300D0CDB7DEB79C
|
||||
:1003E000880F880F880F806469837A830E94530185
|
||||
:1003F00069817A81462F572F7A0118E0F7018191A0
|
||||
:100400007F010E9443011150C9F70F900F90CF91C7
|
||||
:10041000DF911F91FF90EF9008951F920F920FB6FA
|
||||
:100420000F9211242F938F939F93EF93FF938BB190
|
||||
:100430009CB1E0916500EF5FEF7120916400E217DD
|
||||
:1004400041F08871E0936500F0E0E857FF4F90833A
|
||||
:1004500001C082E08093A800FF91EF919F918F915E
|
||||
:100460002F910F900FBE0F901F9018951F920F9213
|
||||
:100470000FB60F9211248F939F93EF93FF93909158
|
||||
:10048000660080916700981761F0E0916700EF5F68
|
||||
:10049000EF71E0936700F0E0E859FF4F80818CB97D
|
||||
:1004A00001C05598FF91EF919F918F910F900FBED2
|
||||
:1004B0000F901F901895109266001092670010928E
|
||||
:1004C00065001092640097FF03C022E02BB99F776C
|
||||
:1004D00090BD89B988E98AB986E880BD0895909170
|
||||
:1004E000650080916400981789F0E0916400EF5FE7
|
||||
:1004F000EF71E0936400F0E0E857FF4F8081909146
|
||||
:10050000A800392F20E0280F311D02C020E031E083
|
||||
:10051000C9010895909166009F5F9F7120916700C7
|
||||
:100520009217E1F3E92FF0E0E859FF4F80839093B1
|
||||
:100530006600559A0895EF92FF92CF93DF93E82ECD
|
||||
:10054000E7017E01F92EE70102C00E948A0289912B
|
||||
:100550008823D9F7DF91CF91FF90EF900895CF9343
|
||||
:10056000DF93EC0102C00E948A02FE012196849171
|
||||
:100570008823C9F7DF91CF9108958091650020917C
|
||||
:10058000640090E04F96821B91096FE170E00E9439
|
||||
:10059000CF0208958091640080936500089597FBD1
|
||||
:1005A000092E07260AD077FD04D00CD006D00020F3
|
||||
:1005B0001AF4709561957F4F0895F6F7909581959F
|
||||
:1005C0009F4F0895AA1BBB1B51E107C0AA1FBB1F69
|
||||
:1005D000A617B70710F0A61BB70B881F991F5A95CF
|
||||
:1005E000A9F780959095BC01CD010895F894FFCFAF
|
||||
:00000001FF
|
|
@ -0,0 +1,363 @@
|
|||
1 .file "main.c"
|
||||
2 __SREG__ = 0x3f
|
||||
3 __SP_H__ = 0x3e
|
||||
4 __SP_L__ = 0x3d
|
||||
5 __CCP__ = 0x34
|
||||
6 __tmp_reg__ = 0
|
||||
7 __zero_reg__ = 1
|
||||
15 .Ltext0:
|
||||
16 .global init_io
|
||||
18 init_io:
|
||||
19 .LFB1:
|
||||
20 .LM1:
|
||||
21 /* prologue: function */
|
||||
22 /* frame size = 0 */
|
||||
23 /* stack size = 0 */
|
||||
24 .L__stack_usage = 0
|
||||
25 .LM2:
|
||||
26 0000 81B3 in r24,49-32
|
||||
27 0002 8370 andi r24,lo8(3)
|
||||
28 0004 81BB out 49-32,r24
|
||||
29 .LM3:
|
||||
30 0006 82B3 in r24,50-32
|
||||
31 0008 8C6F ori r24,lo8(-4)
|
||||
32 000a 82BB out 50-32,r24
|
||||
33 .LM4:
|
||||
34 000c B898 cbi 55-32,0
|
||||
35 .LM5:
|
||||
36 000e C09A sbi 56-32,0
|
||||
37 .LM6:
|
||||
38 0010 D79A sbi 58-32,7
|
||||
39 .LM7:
|
||||
40 0012 DF98 cbi 59-32,7
|
||||
41 .LM8:
|
||||
42 0014 85E0 ldi r24,lo8(5)
|
||||
43 0016 83BF out 83-32,r24
|
||||
44 .LM9:
|
||||
45 0018 84E6 ldi r24,lo8(100)
|
||||
46 001a 82BF out 82-32,r24
|
||||
47 .LM10:
|
||||
48 001c 89B7 in r24,89-32
|
||||
49 001e 8160 ori r24,lo8(1)
|
||||
50 0020 89BF out 89-32,r24
|
||||
51 /* epilogue start */
|
||||
52 .LM11:
|
||||
53 0022 0895 ret
|
||||
54 .LFE1:
|
||||
56 .global __vector_9
|
||||
58 __vector_9:
|
||||
59 .LFB2:
|
||||
60 .LM12:
|
||||
61 0024 1F92 push __zero_reg__
|
||||
62 0026 0F92 push r0
|
||||
63 0028 0FB6 in r0,__SREG__
|
||||
64 002a 0F92 push r0
|
||||
65 002c 1124 clr __zero_reg__
|
||||
66 002e 2F93 push r18
|
||||
67 0030 3F93 push r19
|
||||
68 0032 4F93 push r20
|
||||
69 0034 5F93 push r21
|
||||
70 0036 8F93 push r24
|
||||
71 0038 9F93 push r25
|
||||
72 /* prologue: Signal */
|
||||
73 /* frame size = 0 */
|
||||
74 /* stack size = 9 */
|
||||
75 .L__stack_usage = 9
|
||||
76 .LM13:
|
||||
77 003a 84E6 ldi r24,lo8(100)
|
||||
78 003c 82BF out 82-32,r24
|
||||
79 .LM14:
|
||||
80 003e 4091 0000 lds r20,key_state
|
||||
81 0042 5091 0000 lds r21,key_state+1
|
||||
82 0046 80B3 in r24,48-32
|
||||
83 0048 96B3 in r25,54-32
|
||||
84 004a 392F mov r19,r25
|
||||
85 004c 20E0 ldi r18,lo8(0)
|
||||
86 004e 90E0 ldi r25,lo8(0)
|
||||
87 0050 822B or r24,r18
|
||||
88 0052 932B or r25,r19
|
||||
89 0054 8095 com r24
|
||||
90 0056 9095 com r25
|
||||
91 0058 8427 eor r24,r20
|
||||
92 005a 9527 eor r25,r21
|
||||
93 .LVL0:
|
||||
94 .LM15:
|
||||
95 005c 2091 0000 lds r18,ct0.1588
|
||||
96 0060 3091 0000 lds r19,ct0.1588+1
|
||||
97 0064 2823 and r18,r24
|
||||
98 0066 3923 and r19,r25
|
||||
99 0068 2095 com r18
|
||||
100 006a 3095 com r19
|
||||
101 006c 3093 0000 sts ct0.1588+1,r19
|
||||
102 0070 2093 0000 sts ct0.1588,r18
|
||||
103 .LM16:
|
||||
104 0074 4091 0000 lds r20,ct1.1589
|
||||
105 0078 5091 0000 lds r21,ct1.1589+1
|
||||
106 007c 4823 and r20,r24
|
||||
107 007e 5923 and r21,r25
|
||||
108 0080 4227 eor r20,r18
|
||||
109 0082 5327 eor r21,r19
|
||||
110 0084 5093 0000 sts ct1.1589+1,r21
|
||||
111 0088 4093 0000 sts ct1.1589,r20
|
||||
112 .LM17:
|
||||
113 008c 8223 and r24,r18
|
||||
114 008e 9323 and r25,r19
|
||||
115 .LVL1:
|
||||
116 0090 8423 and r24,r20
|
||||
117 0092 9523 and r25,r21
|
||||
118 .LVL2:
|
||||
119 .LM18:
|
||||
120 0094 2091 0000 lds r18,key_state
|
||||
121 0098 3091 0000 lds r19,key_state+1
|
||||
122 009c 2827 eor r18,r24
|
||||
123 009e 3927 eor r19,r25
|
||||
124 00a0 3093 0000 sts key_state+1,r19
|
||||
125 00a4 2093 0000 sts key_state,r18
|
||||
126 .LM19:
|
||||
127 00a8 2091 0000 lds r18,key_press
|
||||
128 00ac 3091 0000 lds r19,key_press+1
|
||||
129 00b0 4091 0000 lds r20,key_state
|
||||
130 00b4 5091 0000 lds r21,key_state+1
|
||||
131 00b8 4823 and r20,r24
|
||||
132 00ba 5923 and r21,r25
|
||||
133 00bc 422B or r20,r18
|
||||
134 00be 532B or r21,r19
|
||||
135 00c0 5093 0000 sts key_press+1,r21
|
||||
136 00c4 4093 0000 sts key_press,r20
|
||||
137 /* epilogue start */
|
||||
138 .LM20:
|
||||
139 00c8 9F91 pop r25
|
||||
140 00ca 8F91 pop r24
|
||||
141 .LVL3:
|
||||
142 00cc 5F91 pop r21
|
||||
143 00ce 4F91 pop r20
|
||||
144 00d0 3F91 pop r19
|
||||
145 00d2 2F91 pop r18
|
||||
146 00d4 0F90 pop r0
|
||||
147 00d6 0FBE out __SREG__,r0
|
||||
148 00d8 0F90 pop r0
|
||||
149 00da 1F90 pop __zero_reg__
|
||||
150 00dc 1895 reti
|
||||
151 .LFE2:
|
||||
153 .global get_key_press
|
||||
155 get_key_press:
|
||||
156 .LFB3:
|
||||
157 .LM21:
|
||||
158 .LVL4:
|
||||
159 /* prologue: function */
|
||||
160 /* frame size = 0 */
|
||||
161 /* stack size = 0 */
|
||||
162 .L__stack_usage = 0
|
||||
163 00de 9C01 movw r18,r24
|
||||
164 .LM22:
|
||||
165 /* #APP */
|
||||
166 ; 131 "main.c" 1
|
||||
167 00e0 F894 cli
|
||||
168 ; 0 "" 2
|
||||
169 .LM23:
|
||||
170 /* #NOAPP */
|
||||
171 00e2 8091 0000 lds r24,key_press
|
||||
172 00e6 9091 0000 lds r25,key_press+1
|
||||
173 .LVL5:
|
||||
174 00ea 2823 and r18,r24
|
||||
175 00ec 3923 and r19,r25
|
||||
176 .LVL6:
|
||||
177 .LM24:
|
||||
178 00ee 8091 0000 lds r24,key_press
|
||||
179 00f2 9091 0000 lds r25,key_press+1
|
||||
180 00f6 8227 eor r24,r18
|
||||
181 00f8 9327 eor r25,r19
|
||||
182 00fa 9093 0000 sts key_press+1,r25
|
||||
183 00fe 8093 0000 sts key_press,r24
|
||||
184 .LM25:
|
||||
185 /* #APP */
|
||||
186 ; 135 "main.c" 1
|
||||
187 0102 7894 sei
|
||||
188 ; 0 "" 2
|
||||
189 .LM26:
|
||||
190 /* #NOAPP */
|
||||
191 0104 C901 movw r24,r18
|
||||
192 /* epilogue start */
|
||||
193 0106 0895 ret
|
||||
194 .LFE3:
|
||||
196 .global main
|
||||
198 main:
|
||||
199 .LFB0:
|
||||
200 .LM27:
|
||||
201 /* prologue: function */
|
||||
202 /* frame size = 0 */
|
||||
203 /* stack size = 0 */
|
||||
204 .L__stack_usage = 0
|
||||
205 .LM28:
|
||||
206 0108 0E94 0000 call init_io
|
||||
207 .LM29:
|
||||
208 010c 0E94 0000 call lcd_init
|
||||
209 .LM30:
|
||||
210 0110 87E6 ldi r24,lo8(103)
|
||||
211 0112 90E0 ldi r25,hi8(103)
|
||||
212 0114 0E94 0000 call uart_init
|
||||
213 .LM31:
|
||||
214 0118 80E0 ldi r24,lo8(0)
|
||||
215 011a 60E0 ldi r22,lo8(0)
|
||||
216 011c 0E94 0000 call lcd_setcursor
|
||||
217 .LM32:
|
||||
218 /* #APP */
|
||||
219 ; 55 "main.c" 1
|
||||
220 0120 7894 sei
|
||||
221 ; 0 "" 2
|
||||
222 /* #NOAPP */
|
||||
223 .L20:
|
||||
224 .LM33:
|
||||
225 0122 0E94 0000 call uart_available
|
||||
226 0126 1816 cp __zero_reg__,r24
|
||||
227 0128 1906 cpc __zero_reg__,r25
|
||||
228 012a 04F4 brge .L5
|
||||
229 .LM34:
|
||||
230 012c 0E94 0000 call uart_getc
|
||||
231 .LVL7:
|
||||
232 .LM35:
|
||||
233 0130 8A32 cpi r24,42
|
||||
234 0132 9105 cpc r25,__zero_reg__
|
||||
235 0134 01F4 brne .L6
|
||||
236 .LM36:
|
||||
237 0136 0E94 0000 call lcd_clear
|
||||
238 .LVL8:
|
||||
239 013a 00C0 rjmp .L5
|
||||
240 .LVL9:
|
||||
241 .L6:
|
||||
242 .LM37:
|
||||
243 013c 8B32 cpi r24,43
|
||||
244 013e 9105 cpc r25,__zero_reg__
|
||||
245 0140 01F4 brne .L7
|
||||
246 .LM38:
|
||||
247 0142 80E0 ldi r24,lo8(0)
|
||||
248 .LVL10:
|
||||
249 0144 62E0 ldi r22,lo8(2)
|
||||
250 0146 0E94 0000 call lcd_setcursor
|
||||
251 014a 00C0 rjmp .L5
|
||||
252 .LVL11:
|
||||
253 .L7:
|
||||
254 .LM39:
|
||||
255 014c 8732 cpi r24,39
|
||||
256 014e 9105 cpc r25,__zero_reg__
|
||||
257 0150 01F4 brne .L8
|
||||
258 .LM40:
|
||||
259 0152 DF98 cbi 59-32,7
|
||||
260 0154 00C0 rjmp .L5
|
||||
261 .L8:
|
||||
262 .LM41:
|
||||
263 0156 8332 cpi r24,35
|
||||
264 0158 9105 cpc r25,__zero_reg__
|
||||
265 015a 01F4 brne .L9
|
||||
266 .LM42:
|
||||
267 015c DF9A sbi 59-32,7
|
||||
268 015e 00C0 rjmp .L5
|
||||
269 .L9:
|
||||
270 .LM43:
|
||||
271 0160 0E94 0000 call lcd_data
|
||||
272 .LVL12:
|
||||
273 .L5:
|
||||
274 .LM44:
|
||||
275 0164 80E1 ldi r24,lo8(16)
|
||||
276 0166 90E0 ldi r25,hi8(16)
|
||||
277 0168 0E94 0000 call get_key_press
|
||||
278 016c 0097 sbiw r24,0
|
||||
279 016e 01F0 breq .L10
|
||||
280 .LM45:
|
||||
281 0170 86E6 ldi r24,lo8(102)
|
||||
282 0172 0E94 0000 call uart_putc
|
||||
283 .L10:
|
||||
284 .LM46:
|
||||
285 0176 80E2 ldi r24,lo8(32)
|
||||
286 0178 90E0 ldi r25,hi8(32)
|
||||
287 017a 0E94 0000 call get_key_press
|
||||
288 017e 0097 sbiw r24,0
|
||||
289 0180 01F0 breq .L11
|
||||
290 .LM47:
|
||||
291 0182 86E4 ldi r24,lo8(70)
|
||||
292 0184 0E94 0000 call uart_putc
|
||||
293 .L11:
|
||||
294 .LM48:
|
||||
295 0188 88E0 ldi r24,lo8(8)
|
||||
296 018a 90E0 ldi r25,hi8(8)
|
||||
297 018c 0E94 0000 call get_key_press
|
||||
298 0190 0097 sbiw r24,0
|
||||
299 0192 01F0 breq .L12
|
||||
300 .LM49:
|
||||
301 0194 83E7 ldi r24,lo8(115)
|
||||
302 0196 0E94 0000 call uart_putc
|
||||
303 .L12:
|
||||
304 .LM50:
|
||||
305 019a 80E8 ldi r24,lo8(128)
|
||||
306 019c 90E0 ldi r25,hi8(128)
|
||||
307 019e 0E94 0000 call get_key_press
|
||||
308 01a2 0097 sbiw r24,0
|
||||
309 01a4 01F0 breq .L13
|
||||
310 .LM51:
|
||||
311 01a6 81E4 ldi r24,lo8(65)
|
||||
312 01a8 0E94 0000 call uart_putc
|
||||
313 .L13:
|
||||
314 .LM52:
|
||||
315 01ac 80E4 ldi r24,lo8(64)
|
||||
316 01ae 90E0 ldi r25,hi8(64)
|
||||
317 01b0 0E94 0000 call get_key_press
|
||||
318 01b4 0097 sbiw r24,0
|
||||
319 01b6 01F0 breq .L14
|
||||
320 .LM53:
|
||||
321 01b8 81E6 ldi r24,lo8(97)
|
||||
322 01ba 0E94 0000 call uart_putc
|
||||
323 .L14:
|
||||
324 .LM54:
|
||||
325 01be 80E0 ldi r24,lo8(256)
|
||||
326 01c0 91E0 ldi r25,hi8(256)
|
||||
327 01c2 0E94 0000 call get_key_press
|
||||
328 01c6 0097 sbiw r24,0
|
||||
329 01c8 01F0 breq .L15
|
||||
330 .LM55:
|
||||
331 01ca 8FE6 ldi r24,lo8(111)
|
||||
332 01cc 0E94 0000 call uart_putc
|
||||
333 .L15:
|
||||
334 .LM56:
|
||||
335 01d0 84E0 ldi r24,lo8(4)
|
||||
336 01d2 90E0 ldi r25,hi8(4)
|
||||
337 01d4 0E94 0000 call get_key_press
|
||||
338 01d8 0097 sbiw r24,0
|
||||
339 01da 01F4 brne .+2
|
||||
340 01dc 00C0 rjmp .L20
|
||||
341 .LM57:
|
||||
342 01de 86E7 ldi r24,lo8(118)
|
||||
343 01e0 0E94 0000 call uart_putc
|
||||
344 01e4 00C0 rjmp .L20
|
||||
345 .LFE0:
|
||||
347 .comm key_state,2,1
|
||||
348 .comm key_press,2,1
|
||||
349 .lcomm ct1.1589,2
|
||||
350 .lcomm ct0.1588,2
|
||||
399 .Letext0:
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 main.c
|
||||
/tmp/cc8a5ehv.s:2 *ABS*:000000000000003f __SREG__
|
||||
/tmp/cc8a5ehv.s:3 *ABS*:000000000000003e __SP_H__
|
||||
/tmp/cc8a5ehv.s:4 *ABS*:000000000000003d __SP_L__
|
||||
/tmp/cc8a5ehv.s:5 *ABS*:0000000000000034 __CCP__
|
||||
/tmp/cc8a5ehv.s:6 *ABS*:0000000000000000 __tmp_reg__
|
||||
/tmp/cc8a5ehv.s:7 *ABS*:0000000000000001 __zero_reg__
|
||||
/tmp/cc8a5ehv.s:18 .text:0000000000000000 init_io
|
||||
/tmp/cc8a5ehv.s:58 .text:0000000000000024 __vector_9
|
||||
*COM*:0000000000000002 key_state
|
||||
/tmp/cc8a5ehv.s:349 .bss:0000000000000002 ct0.1588
|
||||
.bss:0000000000000000 ct1.1589
|
||||
*COM*:0000000000000002 key_press
|
||||
/tmp/cc8a5ehv.s:155 .text:00000000000000de get_key_press
|
||||
/tmp/cc8a5ehv.s:198 .text:0000000000000108 main
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
lcd_init
|
||||
uart_init
|
||||
lcd_setcursor
|
||||
uart_available
|
||||
uart_getc
|
||||
lcd_clear
|
||||
lcd_data
|
||||
uart_putc
|
||||
__do_clear_bss
|
|
@ -0,0 +1,511 @@
|
|||
Archive member included because of file (symbol)
|
||||
|
||||
/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
uart.o (__divmodhi4)
|
||||
/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o (exit)
|
||||
/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
main.o (__do_clear_bss)
|
||||
/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o)
|
||||
/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4)
|
||||
|
||||
Allocating common symbols
|
||||
Common symbol size file
|
||||
|
||||
key_press 0x2 main.o
|
||||
key_state 0x2 main.o
|
||||
|
||||
Memory Configuration
|
||||
|
||||
Name Origin Length Attributes
|
||||
text 0x0000000000000000 0x0000000000020000 xr
|
||||
data 0x0000000000800060 0x000000000000ffa0 rw !x
|
||||
eeprom 0x0000000000810000 0x0000000000010000 rw !x
|
||||
fuse 0x0000000000820000 0x0000000000000400 rw !x
|
||||
lock 0x0000000000830000 0x0000000000000400 rw !x
|
||||
signature 0x0000000000840000 0x0000000000000400 rw !x
|
||||
*default* 0x0000000000000000 0xffffffffffffffff
|
||||
|
||||
Linker script and memory map
|
||||
|
||||
LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
LOAD main.o
|
||||
LOAD lcd_routines.o
|
||||
LOAD uart.o
|
||||
LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a
|
||||
LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a
|
||||
LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a
|
||||
LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a
|
||||
|
||||
.hash
|
||||
*(.hash)
|
||||
|
||||
.dynsym
|
||||
*(.dynsym)
|
||||
|
||||
.dynstr
|
||||
*(.dynstr)
|
||||
|
||||
.gnu.version
|
||||
*(.gnu.version)
|
||||
|
||||
.gnu.version_d
|
||||
*(.gnu.version_d)
|
||||
|
||||
.gnu.version_r
|
||||
*(.gnu.version_r)
|
||||
|
||||
.rel.init
|
||||
*(.rel.init)
|
||||
|
||||
.rela.init
|
||||
*(.rela.init)
|
||||
|
||||
.rel.text
|
||||
*(.rel.text)
|
||||
*(.rel.text.*)
|
||||
*(.rel.gnu.linkonce.t*)
|
||||
|
||||
.rela.text
|
||||
*(.rela.text)
|
||||
*(.rela.text.*)
|
||||
*(.rela.gnu.linkonce.t*)
|
||||
|
||||
.rel.fini
|
||||
*(.rel.fini)
|
||||
|
||||
.rela.fini
|
||||
*(.rela.fini)
|
||||
|
||||
.rel.rodata
|
||||
*(.rel.rodata)
|
||||
*(.rel.rodata.*)
|
||||
*(.rel.gnu.linkonce.r*)
|
||||
|
||||
.rela.rodata
|
||||
*(.rela.rodata)
|
||||
*(.rela.rodata.*)
|
||||
*(.rela.gnu.linkonce.r*)
|
||||
|
||||
.rel.data
|
||||
*(.rel.data)
|
||||
*(.rel.data.*)
|
||||
*(.rel.gnu.linkonce.d*)
|
||||
|
||||
.rela.data
|
||||
*(.rela.data)
|
||||
*(.rela.data.*)
|
||||
*(.rela.gnu.linkonce.d*)
|
||||
|
||||
.rel.ctors
|
||||
*(.rel.ctors)
|
||||
|
||||
.rela.ctors
|
||||
*(.rela.ctors)
|
||||
|
||||
.rel.dtors
|
||||
*(.rel.dtors)
|
||||
|
||||
.rela.dtors
|
||||
*(.rela.dtors)
|
||||
|
||||
.rel.got
|
||||
*(.rel.got)
|
||||
|
||||
.rela.got
|
||||
*(.rela.got)
|
||||
|
||||
.rel.bss
|
||||
*(.rel.bss)
|
||||
|
||||
.rela.bss
|
||||
*(.rela.bss)
|
||||
|
||||
.rel.plt
|
||||
*(.rel.plt)
|
||||
|
||||
.rela.plt
|
||||
*(.rela.plt)
|
||||
|
||||
.text 0x0000000000000000 0x5f0
|
||||
*(.vectors)
|
||||
.vectors 0x0000000000000000 0x54 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
0x0000000000000000 __vectors
|
||||
0x0000000000000000 __vector_default
|
||||
*(.vectors)
|
||||
*(.progmem.gcc*)
|
||||
*(.progmem*)
|
||||
0x0000000000000054 . = ALIGN (0x2)
|
||||
0x0000000000000054 __trampolines_start = .
|
||||
*(.trampolines)
|
||||
.trampolines 0x0000000000000054 0x0 linker stubs
|
||||
*(.trampolines*)
|
||||
0x0000000000000054 __trampolines_end = .
|
||||
*(.jumptables)
|
||||
*(.jumptables*)
|
||||
*(.lowtext)
|
||||
*(.lowtext*)
|
||||
0x0000000000000054 __ctors_start = .
|
||||
*(.ctors)
|
||||
0x0000000000000054 __ctors_end = .
|
||||
0x0000000000000054 __dtors_start = .
|
||||
*(.dtors)
|
||||
0x0000000000000054 __dtors_end = .
|
||||
SORT(*)(.ctors)
|
||||
SORT(*)(.dtors)
|
||||
*(.init0)
|
||||
.init0 0x0000000000000054 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
0x0000000000000054 __init
|
||||
*(.init0)
|
||||
*(.init1)
|
||||
*(.init1)
|
||||
*(.init2)
|
||||
.init2 0x0000000000000054 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
*(.init2)
|
||||
*(.init3)
|
||||
*(.init3)
|
||||
*(.init4)
|
||||
.init4 0x0000000000000060 0x10 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
0x0000000000000060 __do_clear_bss
|
||||
*(.init4)
|
||||
*(.init5)
|
||||
*(.init5)
|
||||
*(.init6)
|
||||
*(.init6)
|
||||
*(.init7)
|
||||
*(.init7)
|
||||
*(.init8)
|
||||
*(.init8)
|
||||
*(.init9)
|
||||
.init9 0x0000000000000070 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
*(.init9)
|
||||
*(.text)
|
||||
.text 0x0000000000000078 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
0x0000000000000078 __vector_1
|
||||
0x0000000000000078 __bad_interrupt
|
||||
0x0000000000000078 __vector_6
|
||||
0x0000000000000078 __vector_3
|
||||
0x0000000000000078 __vector_13
|
||||
0x0000000000000078 __vector_17
|
||||
0x0000000000000078 __vector_19
|
||||
0x0000000000000078 __vector_7
|
||||
0x0000000000000078 __vector_5
|
||||
0x0000000000000078 __vector_4
|
||||
0x0000000000000078 __vector_2
|
||||
0x0000000000000078 __vector_15
|
||||
0x0000000000000078 __vector_8
|
||||
0x0000000000000078 __vector_14
|
||||
0x0000000000000078 __vector_10
|
||||
0x0000000000000078 __vector_16
|
||||
0x0000000000000078 __vector_18
|
||||
0x0000000000000078 __vector_20
|
||||
.text 0x000000000000007c 0x1e6 main.o
|
||||
0x000000000000007c init_io
|
||||
0x00000000000000a0 __vector_9
|
||||
0x000000000000015a get_key_press
|
||||
0x0000000000000184 main
|
||||
.text 0x0000000000000262 0x1b8 lcd_routines.o
|
||||
0x0000000000000286 lcd_data
|
||||
0x00000000000002a6 lcd_command
|
||||
0x00000000000002c4 lcd_clear
|
||||
0x00000000000002d8 lcd_init
|
||||
0x000000000000034c lcd_home
|
||||
0x0000000000000360 lcd_setcursor
|
||||
0x000000000000038c lcd_string
|
||||
0x00000000000003b4 lcd_string_p
|
||||
0x00000000000003d0 lcd_generatechar
|
||||
.text 0x000000000000041a 0x184 uart.o
|
||||
0x000000000000041a __vector_11
|
||||
0x000000000000046c __vector_12
|
||||
0x00000000000004b6 uart_init
|
||||
0x00000000000004de uart_getc
|
||||
0x0000000000000514 uart_putc
|
||||
0x0000000000000536 uart_puts
|
||||
0x000000000000055e uart_puts_p
|
||||
0x000000000000057a uart_available
|
||||
0x0000000000000594 uart_flush
|
||||
.text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
.text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
.text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
.text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x000000000000059e . = ALIGN (0x2)
|
||||
*(.text.*)
|
||||
.text.libgcc 0x000000000000059e 0x26 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x000000000000059e __divmodhi4
|
||||
0x000000000000059e _div
|
||||
.text.libgcc 0x00000000000005c4 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc 0x00000000000005c4 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc 0x00000000000005c4 0x28 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x00000000000005c4 __udivmodhi4
|
||||
0x00000000000005ec . = ALIGN (0x2)
|
||||
*(.fini9)
|
||||
.fini9 0x00000000000005ec 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000005ec exit
|
||||
0x00000000000005ec _exit
|
||||
*(.fini9)
|
||||
*(.fini8)
|
||||
*(.fini8)
|
||||
*(.fini7)
|
||||
*(.fini7)
|
||||
*(.fini6)
|
||||
*(.fini6)
|
||||
*(.fini5)
|
||||
*(.fini5)
|
||||
*(.fini4)
|
||||
*(.fini4)
|
||||
*(.fini3)
|
||||
*(.fini3)
|
||||
*(.fini2)
|
||||
*(.fini2)
|
||||
*(.fini1)
|
||||
*(.fini1)
|
||||
*(.fini0)
|
||||
.fini0 0x00000000000005ec 0x4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
*(.fini0)
|
||||
0x00000000000005f0 _etext = .
|
||||
|
||||
.data 0x0000000000800060 0x0 load address 0x00000000000005f0
|
||||
0x0000000000800060 PROVIDE (__data_start, .)
|
||||
*(.data)
|
||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
.data 0x0000000000800060 0x0 main.o
|
||||
.data 0x0000000000800060 0x0 lcd_routines.o
|
||||
.data 0x0000000000800060 0x0 uart.o
|
||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o)
|
||||
*(.data*)
|
||||
*(.rodata)
|
||||
*(.rodata*)
|
||||
*(.gnu.linkonce.d*)
|
||||
0x0000000000800060 . = ALIGN (0x2)
|
||||
0x0000000000800060 _edata = .
|
||||
0x0000000000800060 PROVIDE (__data_end, .)
|
||||
|
||||
.bss 0x0000000000800060 0x4d
|
||||
0x0000000000800060 PROVIDE (__bss_start, .)
|
||||
*(.bss)
|
||||
.bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
.bss 0x0000000000800060 0x4 main.o
|
||||
.bss 0x0000000000800064 0x0 lcd_routines.o
|
||||
.bss 0x0000000000800064 0x45 uart.o
|
||||
.bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
.bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
.bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
.bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
COMMON 0x00000000008000a9 0x4 main.o
|
||||
0x00000000008000a9 key_press
|
||||
0x00000000008000ab key_state
|
||||
0x00000000008000ad PROVIDE (__bss_end, .)
|
||||
0x00000000000005f0 __data_load_start = LOADADDR (.data)
|
||||
0x00000000000005f0 __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||
|
||||
.noinit 0x00000000008000ad 0x0
|
||||
0x00000000008000ad PROVIDE (__noinit_start, .)
|
||||
*(.noinit*)
|
||||
0x00000000008000ad PROVIDE (__noinit_end, .)
|
||||
0x00000000008000ad _end = .
|
||||
0x00000000008000ad PROVIDE (__heap_start, .)
|
||||
|
||||
.eeprom 0x0000000000810000 0x0
|
||||
*(.eeprom*)
|
||||
0x0000000000810000 __eeprom_end = .
|
||||
|
||||
.fuse
|
||||
*(.fuse)
|
||||
*(.lfuse)
|
||||
*(.hfuse)
|
||||
*(.efuse)
|
||||
|
||||
.lock
|
||||
*(.lock*)
|
||||
|
||||
.signature
|
||||
*(.signature*)
|
||||
|
||||
.stab 0x0000000000000000 0x6cc
|
||||
*(.stab)
|
||||
.stab 0x0000000000000000 0x6cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
|
||||
.stabstr 0x0000000000000000 0x54
|
||||
*(.stabstr)
|
||||
.stabstr 0x0000000000000000 0x54 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
|
||||
.stab.excl
|
||||
*(.stab.excl)
|
||||
|
||||
.stab.exclstr
|
||||
*(.stab.exclstr)
|
||||
|
||||
.stab.index
|
||||
*(.stab.index)
|
||||
|
||||
.stab.indexstr
|
||||
*(.stab.indexstr)
|
||||
|
||||
.comment
|
||||
*(.comment)
|
||||
|
||||
.debug
|
||||
*(.debug)
|
||||
|
||||
.line
|
||||
*(.line)
|
||||
|
||||
.debug_srcinfo
|
||||
*(.debug_srcinfo)
|
||||
|
||||
.debug_sfnames
|
||||
*(.debug_sfnames)
|
||||
|
||||
.debug_aranges 0x0000000000000000 0x60
|
||||
*(.debug_aranges)
|
||||
.debug_aranges
|
||||
0x0000000000000000 0x20 main.o
|
||||
.debug_aranges
|
||||
0x0000000000000020 0x20 lcd_routines.o
|
||||
.debug_aranges
|
||||
0x0000000000000040 0x20 uart.o
|
||||
|
||||
.debug_pubnames
|
||||
0x0000000000000000 0x19e
|
||||
*(.debug_pubnames)
|
||||
.debug_pubnames
|
||||
0x0000000000000000 0x64 main.o
|
||||
.debug_pubnames
|
||||
0x0000000000000064 0x9e lcd_routines.o
|
||||
.debug_pubnames
|
||||
0x0000000000000102 0x9c uart.o
|
||||
|
||||
.debug_info 0x0000000000000000 0xa3e
|
||||
*(.debug_info)
|
||||
.debug_info 0x0000000000000000 0x185 main.o
|
||||
.debug_info 0x0000000000000185 0x5a5 lcd_routines.o
|
||||
.debug_info 0x000000000000072a 0x314 uart.o
|
||||
*(.gnu.linkonce.wi.*)
|
||||
|
||||
.debug_abbrev 0x0000000000000000 0x344
|
||||
*(.debug_abbrev)
|
||||
.debug_abbrev 0x0000000000000000 0xd0 main.o
|
||||
.debug_abbrev 0x00000000000000d0 0x155 lcd_routines.o
|
||||
.debug_abbrev 0x0000000000000225 0x11f uart.o
|
||||
|
||||
.debug_line 0x0000000000000000 0x82e
|
||||
*(.debug_line)
|
||||
.debug_line 0x0000000000000000 0x24b main.o
|
||||
.debug_line 0x000000000000024b 0x360 lcd_routines.o
|
||||
.debug_line 0x00000000000005ab 0x283 uart.o
|
||||
|
||||
.debug_frame 0x0000000000000000 0x1b0
|
||||
*(.debug_frame)
|
||||
.debug_frame 0x0000000000000000 0x50 main.o
|
||||
.debug_frame 0x0000000000000050 0xc0 lcd_routines.o
|
||||
.debug_frame 0x0000000000000110 0xa0 uart.o
|
||||
|
||||
.debug_str 0x0000000000000000 0x2b5
|
||||
*(.debug_str)
|
||||
.debug_str 0x0000000000000000 0xba main.o
|
||||
0x100 (size before relaxing)
|
||||
.debug_str 0x00000000000000ba 0x112 lcd_routines.o
|
||||
0x1ca (size before relaxing)
|
||||
.debug_str 0x00000000000001cc 0xe9 uart.o
|
||||
0x1bd (size before relaxing)
|
||||
|
||||
.debug_loc 0x0000000000000000 0x49a
|
||||
*(.debug_loc)
|
||||
.debug_loc 0x0000000000000000 0x98 main.o
|
||||
.debug_loc 0x0000000000000098 0x209 lcd_routines.o
|
||||
.debug_loc 0x00000000000002a1 0x1f9 uart.o
|
||||
|
||||
.debug_macinfo
|
||||
*(.debug_macinfo)
|
||||
OUTPUT(main.elf elf32-avr)
|
||||
LOAD linker stubs
|
||||
|
||||
.debug_pubtypes
|
||||
0x0000000000000000 0x9a
|
||||
.debug_pubtypes
|
||||
0x0000000000000000 0x37 main.o
|
||||
.debug_pubtypes
|
||||
0x0000000000000037 0x38 lcd_routines.o
|
||||
.debug_pubtypes
|
||||
0x000000000000006f 0x2b uart.o
|
||||
|
||||
Cross Reference Table
|
||||
|
||||
Symbol File
|
||||
__bad_interrupt /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__bss_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
__bss_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
__divmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
uart.o
|
||||
__do_clear_bss /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o)
|
||||
uart.o
|
||||
main.o
|
||||
__heap_end /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__init /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__stack /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__udivmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o)
|
||||
/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
__vector_1 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_11 uart.o
|
||||
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_12 uart.o
|
||||
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_13 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_15 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_16 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_17 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_18 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_19 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_20 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_3 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_5 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_7 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_9 main.o
|
||||
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vector_default /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
__vectors /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
_div /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o)
|
||||
_exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o)
|
||||
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
get_key_press main.o
|
||||
init_io main.o
|
||||
key_press main.o
|
||||
key_state main.o
|
||||
lcd_clear lcd_routines.o
|
||||
main.o
|
||||
lcd_command lcd_routines.o
|
||||
lcd_data lcd_routines.o
|
||||
main.o
|
||||
lcd_generatechar lcd_routines.o
|
||||
lcd_home lcd_routines.o
|
||||
lcd_init lcd_routines.o
|
||||
main.o
|
||||
lcd_setcursor lcd_routines.o
|
||||
main.o
|
||||
lcd_string lcd_routines.o
|
||||
lcd_string_p lcd_routines.o
|
||||
main main.o
|
||||
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o
|
||||
uart_available uart.o
|
||||
main.o
|
||||
uart_flush uart.o
|
||||
uart_getc uart.o
|
||||
main.o
|
||||
uart_init uart.o
|
||||
main.o
|
||||
uart_putc uart.o
|
||||
main.o
|
||||
uart_puts uart.o
|
||||
uart_puts_p uart.o
|
|
@ -0,0 +1,405 @@
|
|||
1 .file "uart.c"
|
||||
2 __SREG__ = 0x3f
|
||||
3 __SP_H__ = 0x3e
|
||||
4 __SP_L__ = 0x3d
|
||||
5 __CCP__ = 0x34
|
||||
6 __tmp_reg__ = 0
|
||||
7 __zero_reg__ = 1
|
||||
15 .Ltext0:
|
||||
16 .global __vector_11
|
||||
18 __vector_11:
|
||||
19 .LFB0:
|
||||
20 .LM1:
|
||||
21 0000 1F92 push __zero_reg__
|
||||
22 0002 0F92 push r0
|
||||
23 0004 0FB6 in r0,__SREG__
|
||||
24 0006 0F92 push r0
|
||||
25 0008 1124 clr __zero_reg__
|
||||
26 000a 2F93 push r18
|
||||
27 000c 8F93 push r24
|
||||
28 000e 9F93 push r25
|
||||
29 0010 EF93 push r30
|
||||
30 0012 FF93 push r31
|
||||
31 /* prologue: Signal */
|
||||
32 /* frame size = 0 */
|
||||
33 /* stack size = 8 */
|
||||
34 .L__stack_usage = 8
|
||||
35 .LM2:
|
||||
36 0014 8BB1 in r24,43-32
|
||||
37 .LVL0:
|
||||
38 .LM3:
|
||||
39 0016 9CB1 in r25,44-32
|
||||
40 .LVL1:
|
||||
41 .LM4:
|
||||
42 0018 E091 0000 lds r30,UART_RxHead
|
||||
43 001c EF5F subi r30,lo8(-(1))
|
||||
44 001e EF71 andi r30,lo8(31)
|
||||
45 .LVL2:
|
||||
46 .LM5:
|
||||
47 0020 2091 0000 lds r18,UART_RxTail
|
||||
48 0024 E217 cp r30,r18
|
||||
49 0026 01F0 breq .L3
|
||||
50 .LM6:
|
||||
51 0028 8871 andi r24,lo8(24)
|
||||
52 .LVL3:
|
||||
53 .LM7:
|
||||
54 002a E093 0000 sts UART_RxHead,r30
|
||||
55 .LM8:
|
||||
56 002e F0E0 ldi r31,lo8(0)
|
||||
57 0030 E050 subi r30,lo8(-(UART_RxBuf))
|
||||
58 0032 F040 sbci r31,hi8(-(UART_RxBuf))
|
||||
59 .LVL4:
|
||||
60 0034 9083 st Z,r25
|
||||
61 0036 00C0 rjmp .L2
|
||||
62 .LVL5:
|
||||
63 .L3:
|
||||
64 .LM9:
|
||||
65 0038 82E0 ldi r24,lo8(2)
|
||||
66 .LVL6:
|
||||
67 .L2:
|
||||
68 .LM10:
|
||||
69 003a 8093 0000 sts UART_LastRxError,r24
|
||||
70 /* epilogue start */
|
||||
71 .LM11:
|
||||
72 003e FF91 pop r31
|
||||
73 0040 EF91 pop r30
|
||||
74 0042 9F91 pop r25
|
||||
75 .LVL7:
|
||||
76 0044 8F91 pop r24
|
||||
77 .LVL8:
|
||||
78 0046 2F91 pop r18
|
||||
79 0048 0F90 pop r0
|
||||
80 004a 0FBE out __SREG__,r0
|
||||
81 004c 0F90 pop r0
|
||||
82 004e 1F90 pop __zero_reg__
|
||||
83 0050 1895 reti
|
||||
84 .LFE0:
|
||||
86 .global __vector_12
|
||||
88 __vector_12:
|
||||
89 .LFB1:
|
||||
90 .LM12:
|
||||
91 0052 1F92 push __zero_reg__
|
||||
92 0054 0F92 push r0
|
||||
93 0056 0FB6 in r0,__SREG__
|
||||
94 0058 0F92 push r0
|
||||
95 005a 1124 clr __zero_reg__
|
||||
96 005c 8F93 push r24
|
||||
97 005e 9F93 push r25
|
||||
98 0060 EF93 push r30
|
||||
99 0062 FF93 push r31
|
||||
100 /* prologue: Signal */
|
||||
101 /* frame size = 0 */
|
||||
102 /* stack size = 7 */
|
||||
103 .L__stack_usage = 7
|
||||
104 .LM13:
|
||||
105 0064 9091 0000 lds r25,UART_TxHead
|
||||
106 0068 8091 0000 lds r24,UART_TxTail
|
||||
107 006c 9817 cp r25,r24
|
||||
108 006e 01F0 breq .L5
|
||||
109 .LM14:
|
||||
110 0070 E091 0000 lds r30,UART_TxTail
|
||||
111 0074 EF5F subi r30,lo8(-(1))
|
||||
112 0076 EF71 andi r30,lo8(31)
|
||||
113 .LVL9:
|
||||
114 .LM15:
|
||||
115 0078 E093 0000 sts UART_TxTail,r30
|
||||
116 .LM16:
|
||||
117 007c F0E0 ldi r31,lo8(0)
|
||||
118 007e E050 subi r30,lo8(-(UART_TxBuf))
|
||||
119 0080 F040 sbci r31,hi8(-(UART_TxBuf))
|
||||
120 .LVL10:
|
||||
121 0082 8081 ld r24,Z
|
||||
122 0084 8CB9 out 44-32,r24
|
||||
123 0086 00C0 rjmp .L4
|
||||
124 .LVL11:
|
||||
125 .L5:
|
||||
126 .LM17:
|
||||
127 0088 5598 cbi 42-32,5
|
||||
128 .L4:
|
||||
129 /* epilogue start */
|
||||
130 .LM18:
|
||||
131 008a FF91 pop r31
|
||||
132 008c EF91 pop r30
|
||||
133 008e 9F91 pop r25
|
||||
134 0090 8F91 pop r24
|
||||
135 0092 0F90 pop r0
|
||||
136 0094 0FBE out __SREG__,r0
|
||||
137 0096 0F90 pop r0
|
||||
138 0098 1F90 pop __zero_reg__
|
||||
139 009a 1895 reti
|
||||
140 .LFE1:
|
||||
142 .global uart_init
|
||||
144 uart_init:
|
||||
145 .LFB2:
|
||||
146 .LM19:
|
||||
147 .LVL12:
|
||||
148 /* prologue: function */
|
||||
149 /* frame size = 0 */
|
||||
150 /* stack size = 0 */
|
||||
151 .L__stack_usage = 0
|
||||
152 .LM20:
|
||||
153 009c 1092 0000 sts UART_TxHead,__zero_reg__
|
||||
154 .LM21:
|
||||
155 00a0 1092 0000 sts UART_TxTail,__zero_reg__
|
||||
156 .LM22:
|
||||
157 00a4 1092 0000 sts UART_RxHead,__zero_reg__
|
||||
158 .LM23:
|
||||
159 00a8 1092 0000 sts UART_RxTail,__zero_reg__
|
||||
160 .LM24:
|
||||
161 00ac 97FF sbrs r25,7
|
||||
162 00ae 00C0 rjmp .L8
|
||||
163 .LM25:
|
||||
164 00b0 22E0 ldi r18,lo8(2)
|
||||
165 00b2 2BB9 out 43-32,r18
|
||||
166 .LM26:
|
||||
167 00b4 9F77 andi r25,hi8(32767)
|
||||
168 .LVL13:
|
||||
169 .L8:
|
||||
170 .LM27:
|
||||
171 00b6 90BD out 64-32,r25
|
||||
172 .LM28:
|
||||
173 00b8 89B9 out 41-32,r24
|
||||
174 .LM29:
|
||||
175 00ba 88E9 ldi r24,lo8(-104)
|
||||
176 .LVL14:
|
||||
177 00bc 8AB9 out 42-32,r24
|
||||
178 .LM30:
|
||||
179 00be 86E8 ldi r24,lo8(-122)
|
||||
180 00c0 80BD out 64-32,r24
|
||||
181 /* epilogue start */
|
||||
182 .LM31:
|
||||
183 00c2 0895 ret
|
||||
184 .LFE2:
|
||||
186 .global uart_getc
|
||||
188 uart_getc:
|
||||
189 .LFB3:
|
||||
190 .LM32:
|
||||
191 /* prologue: function */
|
||||
192 /* frame size = 0 */
|
||||
193 /* stack size = 0 */
|
||||
194 .L__stack_usage = 0
|
||||
195 .LM33:
|
||||
196 00c4 9091 0000 lds r25,UART_RxHead
|
||||
197 00c8 8091 0000 lds r24,UART_RxTail
|
||||
198 00cc 9817 cp r25,r24
|
||||
199 00ce 01F0 breq .L11
|
||||
200 .LM34:
|
||||
201 00d0 E091 0000 lds r30,UART_RxTail
|
||||
202 00d4 EF5F subi r30,lo8(-(1))
|
||||
203 00d6 EF71 andi r30,lo8(31)
|
||||
204 .LVL15:
|
||||
205 .LM35:
|
||||
206 00d8 E093 0000 sts UART_RxTail,r30
|
||||
207 .LM36:
|
||||
208 00dc F0E0 ldi r31,lo8(0)
|
||||
209 00de E050 subi r30,lo8(-(UART_RxBuf))
|
||||
210 00e0 F040 sbci r31,hi8(-(UART_RxBuf))
|
||||
211 .LVL16:
|
||||
212 00e2 8081 ld r24,Z
|
||||
213 .LVL17:
|
||||
214 .LM37:
|
||||
215 00e4 9091 0000 lds r25,UART_LastRxError
|
||||