📄 position.lst
字号:
333 .LM26:
334 call uartGetc
335 .L26:
337 .LM27:
338 lds r30,count
339 0150 87FF ldi r31,lo8(0)
340 0152 00C0 andi r24,lo8(127)
341 0154 00C0 subi r30,lo8(-(uart_rec))
342 sbci r31,hi8(-(uart_rec))
343 st Z,r24
345 0156 0E94 0000 .LM28:
346 lds r24,count
347 subi r24,lo8(-(1))
348 sts count,r24
350 015e F0E0 .LM29:
351 0160 8F77 lds r24,count
352 0162 E050 cpi r24,lo8(6)
353 0164 F040 brlo .L23
355 .LM30:
356 lds r18,uart_rec
357 0168 8091 0000 lds r24,uart_rec+1
358 016c 8F5F ldi r25,lo8(0)
359 016e 8093 0000 lsr r25
360 mov r25,r24
361 clr r24
362 0172 8091 0000 ror r25
363 0176 8630 ror r24
364 0178 00F0 add r24,r18
365 adc r25,__zero_reg__
366 asr r25
367 017a 2091 0000 ror r24
368 017e 8091 0000 sts (angle_loca)+1,r25
369 0182 90E0 sts angle_loca,r24
371 0186 982F .LM31:
372 0188 8827 lds r18,uart_rec+2
373 018a 9795 lds r24,uart_rec+3
374 018c 8795 ldi r25,lo8(0)
375 018e 820F lsr r25
376 0190 911D mov r25,r24
377 0192 9595 clr r24
378 0194 8795 ror r25
379 0196 9093 0000 ror r24
380 019a 8093 0000 add r24,r18
381 adc r25,__zero_reg__
382 sts (x_loca)+1,r25
383 019e 2091 0000 sts x_loca,r24
385 01a6 90E0 .LM32:
386 01a8 9695 lds r18,uart_rec+4
387 01aa 982F lds r24,uart_rec+5
388 01ac 8827 ldi r25,lo8(0)
389 01ae 9795 lsr r25
390 01b0 8795 mov r25,r24
391 01b2 820F clr r24
392 01b4 911D ror r25
393 01b6 9093 0000 ror r24
394 01ba 8093 0000 add r24,r18
395 adc r25,__zero_reg__
396 sts (y_loca)+1,r25
397 01be 2091 0000 sts y_loca,r24
398 01c2 8091 0000 /* epilogue start */
400 01c8 9695 .LM33:
401 01ca 982F ret
406 01d4 911D .Lscope4:
410 .global rotate
412 01de 0895 rotate:
414 .LM34:
415 .LFBB5:
416 push r14
417 push r15
418 push r16
419 push r17
420 push r28
421 push r29
422 /* prologue: function */
423 /* frame size = 0 */
424 movw r14,r24
425 movw r16,r22
427 01e0 EF92 .LM35:
428 01e2 FF92 movw r20,r22
429 01e4 0F93 ldi r24,lo8(26)
430 01e6 1F93 call motor
431 01e8 CF93 .LBB18:
432 01ea DF93 .LBB19:
433 .LBB20:
434 .LBB21:
436 01ee 8B01 .Ltext1:
438 .LM36:
439 01f0 AB01 ldi r24,lo8(-25536)
440 01f2 8AE1 ldi r25,hi8(-25536)
441 01f4 0E94 0000 /* #APP */
442 ; 105 "c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h" 1
443 1: sbiw r24,1
444 brne 1b
445 ; 0 "" 2
446 /* #NOAPP */
447 .LBE21:
1:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** Copyright (c) 2007 Joerg Wunsch
3:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** All rights reserved.
4:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
5:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** Redistribution and use in source and binary forms, with or without
6:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** modification, are permitted provided that the following conditions are met:
7:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
8:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** * Redistributions of source code must retain the above copyright
9:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer.
10:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
11:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** * Redistributions in binary form must reproduce the above copyright
12:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer in
13:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** the documentation and/or other materials provided with the
14:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** distribution.
15:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
16:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** * Neither the name of the copyright holders nor the names of
17:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** contributors may be used to endorse or promote products derived
18:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** from this software without specific prior written permission.
19:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
20:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** POSSIBILITY OF SUCH DAMAGE. */
31:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
32:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
33:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
34:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
35:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
36:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
37:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #include <inttypes.h>
38:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
39:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \file */
40:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
41:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** \code
42:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #include <util/delay_basic.h>
43:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** \endcode
44:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
45:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** The functions in this header file implement simple delay loops
46:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** that perform a busy-waiting. They are typically used to
47:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** facilitate short delays in the program execution. They are
48:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** implemented as count-down loops with a well-known CPU cycle
49:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** count per loop iteration. As such, no other processing can
50:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** occur simultaneously. It should be kept in mind that the
51:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** functions described here do not disable interrupts.
52:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
53:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** In general, for long delays, the use of hardware timers is
54:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** much preferrable, as they free the CPU, and allow for
55:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** concurrent processing of other events while the timer is
56:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** running. However, in particular for very short delays, the
57:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** overhead of setting up a hardware timer is too much compared
58:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** to the overall delay time.
59:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
60:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** Two inline functions are provided for the actual delay algorithms.
61:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
62:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** */
63:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
64:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
65:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
66:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
67:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #endif
68:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
69:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
70:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
71:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** Delay loop using an 8-bit counter \c __count, so up to 256
72:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** iterations are possible. (The value 256 would have to be passed
73:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** as 0.) The loop executes three CPU cycles per iteration, not
74:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** including the overhead the compiler needs to setup the counter
75:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** register.
76:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
77:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
78:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** can be achieved.
79:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** */
80:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** void
81:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_1(uint8_t __count)
82:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** {
83:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** __asm__ volatile (
84:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** "1: dec %0" "\n\t"
85:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** "brne 1b"
86:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** : "=r" (__count)
87:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** : "0" (__count)
88:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** );
89:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** }
90:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
91:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
92:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
93:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** Delay loop using a 16-bit counter \c __count, so up to 65536
94:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** iterations are possible. (The value 65536 would have to be
95:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** passed as 0.) The loop executes four CPU cycles per iteration,
96:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** not including the overhead the compiler requires to setup the
97:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** counter register pair.
98:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****
99:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
100:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** milliseconds can be achieved.
101:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** */
102:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** void
103:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_2(uint16_t __count)
104:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** {
105:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** __asm__ volatile (
448 abn 68,0,42,.LM38-.LFBB5
449 .LM38:
450 01f8 80E4 lds r24,angle_loca
451 01fa 9CE9 lds r25,(angle_loca)+1
452 movw r28,r14
453 sub r28,r24
454 01fc 0197 sbc r29,r25
456 .LM39:
457 movw r24,r28
458 subi r24,lo8(-(180))
459 sbci r25,hi8(-(180))
460 subi r24,lo8(361)
461 sbci r25,hi8(361)
462 brsh .+2
463 rjmp .L47
465 .LM40:
466 0200 0E94 0000 cpi r28,181
467 cpc r29,__zero_reg__
468 brlt .L29
470 .LM41:
471 0204 8091 0000 subi r28,lo8(-(-360))
472 0208 9091 0000 sbci r29,hi8(-(-360))
473 020c E701 rjmp .L47
474 020e C81B .L29:
476 .LM42:
477 ldi r24,hi8(-180)
478 0212 CE01 cpi r28,lo8(-180)
479 0214 8C54 cpc r29,r24
480 0216 9F4F brlt .L30
481 0218 8956 ldi r28,lo8(0)
482 021a 9140 ldi r29,hi8(0)
483 021c 00F4 rjmp .L47
484 021e 00C0 .L30:
486 .LM43:
487 0220 C53B subi r28,lo8(-(360))
488 0222 D105 sbci r29,hi8(-(360))
489 0224 04F0 rjmp .L47
490 .L41:
491 .LBE23:
492 0226 C856 .LBE22:
494 022a 00C0 .LM44:
495 call get_position
496 .LBB24:
497 .LBB25:
499 022e CC34 .LM45:
500 0230 D807 lds r24,angle_loca
501 0232 04F0 lds r25,(angle_loca)+1
502 0234 C0E0 movw r28,r14
503 0236 D0E0 sub r28,r24
504 0238 00C0 sbc r29,r25
506 .LM46:
507 movw r24,r28
508 023a C859 subi r24,lo8(-(180))
509 023c DE4F sbci r25,hi8(-(180))
510 023e 00C0 subi r24,lo8(361)
511 sbci r25,hi8(361)
512 brlo .L31
514 .LM47:
515 cpi r28,181
516 0240 0E94 0000 cpc r29,__zero_reg__
517 brlt .L32
519 .LM48:
520 subi r28,lo8(-(-360))
521 0244 8091 0000 sbci r29,hi8(-(-360))
522 0248 9091 0000 rjmp .L31
523 024c E701 .L32:
525 0250 D90B .LM49:
526 ldi r24,hi8(-180)
527 cpi r28,lo8(-180)
528 0252 CE01 cpc r29,r24
529 0254 8C54 brlt .L33
530 0256 9F4F ldi r28,lo8(0)
531 0258 8956 ldi r29,hi8(0)
532 025a 9140 rjmp .L31
533 025c 00F0 .L33:
535 .LM50:
536 025e C53B subi r28,lo8(-(360))
537 0260 D105 sbci r29,hi8(-(360))
538 0262 04F0 .L31:
539 .LBE25:
540 .LBE24:
542 0266 D140 .LM51:
543 0268 00C0 movw r24,r28
544 sbrs r29,7
545 rjmp .L34
546 clr r24
547 026a 8FEF clr r25
548 026c CC34 sub r24,r28
549 026e D807 sbc r25,r29
550 0270 04F0 .L34:
551 0272 C0E0 .LBB26:
552 0274 D0E0 .LBB27:
554 .LM52:
555 cpi r24,121
556 cpc r25,__zero_reg__
557 0278 C859 brlt .L35
558 027a DE4F ldi r20,lo8(50)
559 ldi r21,hi8(50)
560 rjmp .L36
561 .L35:
563 .LM53:
564 027c CE01 cpi r24,91
565 027e D7FF cpc r25,__zero_reg__
566 0280 00C0 brlt .L37
567 0282 8827 ldi r20,lo8(40)
568 0284 9927 ldi r21,hi8(40)
569 0286 8C1B rjmp .L36
570 0288 9D0B .L37:
572 .LM54:
573 cpi r24,46
574 cpc r25,__zero_reg__
575 brlt .L38
576 028a 8937 ldi r20,lo8(30)
577 028c 9105 ldi r21,hi8(30)
578 028e 04F0 rjmp .L36
579 0290 42E3 .L38:
581 0294 00C0 .LM55:
582 sbiw r24,16
583 brge .L39
584 ldi r20,lo8(10)
585 0296 8B35 ldi r21,hi8(10)
586 0298 9105 rjmp .L36
587 029a 04F0 .L39:
588 029c 48E2 ldi r20,lo8(20)
589 029e 50E0 ldi r21,hi8(20)
590 02a0 00C0 .L36:
591 movw r24,r16
592 sub r24,r20
593 sbc r25,r21
594 02a2 8E32 movw r22,r20
595 02a4 9105 add r22,r16
596 02a6 04F0 adc r23,r17
597 02a8 4EE1 .LBE27:
598 02aa 50E0 .LBE26:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -