📄 position.lst
字号:
600 .LM56:
601 cp __zero_reg__,r28
602 cpc __zero_reg__,r29
603 02ae 4097 brge .L40
605 02b2 4AE0 .LM57:
606 02b4 50E0 movw r20,r24
607 02b6 00C0 rjmp .L48
608 .L40:
610 02ba 50E0 .LM58:
611 movw r20,r22
612 02bc C801 movw r22,r24
613 02be 841B .L48:
614 02c0 950B ldi r24,lo8(26)
615 02c2 BA01 call motor
616 02c4 600F .L47:
618 .LM59:
619 movw r24,r28
620 sbrs r29,7
621 rjmp .L42
622 02c8 1C16 com r25
623 02ca 1D06 neg r24
624 02cc 04F4 sbci r25,lo8(-1)
625 .L42:
626 sbiw r24,2
627 02ce AC01 brlt .+2
628 02d0 00C0 rjmp .L41
630 .LM60:
631 movw r20,r16
632 02d2 AB01 movw r22,r16
633 02d4 BC01 ldi r24,lo8(26)
634 call motor
635 02d6 8AE1 /* epilogue start */
637 .LM61:
638 pop r29
639 pop r28
640 02dc CE01 pop r17
641 02de D7FF pop r16
642 02e0 00C0 pop r15
643 02e2 9095 pop r14
644 02e4 8195 ret
650 .Lscope5:
654 02f2 8AE1 .global walk_line
656 walk_line:
658 .LM62:
659 02f8 DF91 .LFBB6:
660 02fa CF91 push r14
661 02fc 1F91 push r15
662 02fe 0F91 push r16
663 0300 FF90 push r17
664 0302 EF90 push r28
665 0304 0895 push r29
666 /* prologue: function */
667 /* frame size = 0 */
668 movw r16,r24
669 movw r28,r22
671 .LM63:
672 call get_position
674 .LM64:
675 movw r22,r28
676 movw r24,r16
677 call get_angle_des
113:position.c ****
114:position.c **** unsigned char walk_line(int x_des, int y_des)
115:position.c **** {
678 r24
679 sbc r21,r25
680 add r22,r24
681 0306 EF92 adc r23,r25
682 0308 FF92 ldi r24,lo8(26)
683 030a 0F93 call motor
685 030e CF93 .LM67:
686 0310 DF93 call get_position
688 .LM68:
689 0312 8C01 movw r22,r28
690 0314 EB01 movw r24,r16
116:position.c **** int angle_des_dir;
117:position.c **** int diff = 0, speed = 0, dist = 500;
118:position.c **** int rotate_integrate = 0;
119:position.c ****
120:position.c **** short rotate_speed = 0;
121:position.c ****
122:position.c **** get_position();
691 sbc r21,r25
692 add r22,r24
693 0316 0E94 0000 adc r23,r25
123:position.c **** angle_des_dir = get_angle_des(x_des,y_des);
694 rotate
695 ldi r22,lo8(0)
696 031a BE01 ldi r23,hi8(0)
697 031c C801 clr r14
698 031e 0E94 0000 clr r15
124:position.c **** rotate(angle_des_dir,0);
699 8,0,123,.LM64-.LFBB6
700 .LM64:
701 0322 60E0 movw r22,r28
702 0324 70E0 movw r24,r16
703 0326 0E94 0000 call get_angle_des
705 032c 70E0 .LM65:
706 032e EE24 ldi r22,lo8(0)
707 0330 FF24 ldi r23,hi8(0)
708 0332 80E0 call rotate
709 0334 90E0 ldi r22,lo8(0)
710 ldi r23,hi8(0)
125:position.c ****
126:position.c **** while(dist > 100)
127:position.c **** {
128:position.c **** #define max(x,y) (x) > (y) ? (x):(y)
129:position.c **** #define min(x,y) (x) < (y) ? (x):(y)
130:position.c **** motor(0x1a,speed + rotate_speed,speed - rotate_speed);
711 t_position
713 0336 AB01 .LM64:
714 0338 481B movw r22,r28
715 033a 590B movw r24,r16
716 033c 680F call get_angle_des
718 0340 8AE1 .LM65:
719 0342 0E94 0000 ldi r22,lo8(0)
131:position.c ****
132:position.c **** get_position();
720 6,r24
721 movw r28,r22
133:position.c **** angle_des_dir = get_angle_des(x_des,y_des);
723 ion
724 walk_line:
726 034c C801 .LM62:
727 034e 0E94 0000 .LFBB6:
134:position.c **** diff = angle_des_dir - angle_loca;
728 ope5-.LFBB5
729 .Lscope5:
733 035c 930B .global walk_line
135:position.c **** if(abs(diff) > 180)
735 64,0,0,20
738 0362 00C0 .Lscope5:
742 036a 930B .global walk_line
744 036c 853B walk_line:
746 0370 04F0 .LM62:
136:position.c **** {
137:position.c **** if(diff < 0)
747 ,0,0,.Lscope5-.LFBB5
748 .Lscope5:
138:position.c **** {
139:position.c **** diff += 360;
751 tate, .-rotate
756 .Lscope5:
140:position.c **** }
141:position.c **** else
142:position.c **** {
143:position.c **** diff -= 360;
757 s "walk_line:F(0,11)",36,0,0,walk_line
760 037e 3140 .global walk_line
144:position.c **** }
145:position.c **** }
146:position.c **** diff *= 2;
147:position.c **** rotate_integrate += diff;
148:position.c ****
149:position.c **** diff = min(diff,50);
150:position.c **** diff = max(diff,-50);
151:position.c ****
152:position.c **** rotate_speed = rotate_integrate/20 + diff;
153:position.c **** rotate_integrate = max(rotate_integrate, 100);
154:position.c **** rotate_integrate = min(rotate_integrate, -100);
155:position.c ****
156:position.c **** rotate_speed = min(rotate_speed,100);
157:position.c **** rotate_speed = max(rotate_speed,-100);
158:position.c ****
159:position.c **** dist = speed = abs(x_des-x_loca) + abs(y_des-y_loca);
762 64,0,0,20
765 0384 9091 0000 .Lscope5:
769 038e 57FF .global walk_line
771 0392 4091 0000 walk_line:
773 039a 401B .LM62:
774 039c 510B .LFBB6:
775 039e 00C0 push r14
776 push r15
777 03a0 8091 0000 push r16
778 03a4 9091 0000 push r17
779 03a8 A801 push r28
780 03aa 481B push r29
781 03ac 590B /* prologue: function */
782 /* frame size = 0 */
783 03ae 8091 0000 movw r16,r24
784 03b2 9091 0000 movw r28,r22
786 03b8 681B .LM63:
787 03ba 790B call get_position
789 03be 00C0 .LM64:
790 03c0 8091 0000 movw r22,r28
791 03c4 9091 0000 movw r24,r16
792 03c8 8C1B call get_angle_des
794 03cc 00C0 .LM65:
795 ldi r22,lo8(0)
796 03ce 8091 0000 ldi r23,hi8(0)
797 03d2 9091 0000 call rotate
798 03d6 BE01 ldi r22,lo8(0)
799 03d8 681B ldi r23,hi8(0)
800 03da 790B clr r14
801 03dc CB01 clr r15
802 ldi r24,lo8(0)
803 03de FC01 ldi r25,hi8(0)
804 03e0 E40F .L63:
806 .LM66:
807 movw r20,r22
808 03e4 E536 sub r20,r24
809 03e6 F105 sbc r21,r25
810 03e8 04F0 add r22,r24
811 adc r23,r25
812 ldi r24,lo8(26)
813 03ea C901 call motor
815 03ee 991F .LM67:
816 call get_position
818 03f0 9C01 .LM68:
819 03f2 8333 movw r22,r28
820 03f4 9105 movw r24,r16
821 03f6 04F0 call get_angle_des
823 03fa 30E0 .LM69:
824 lds r18,angle_loca
825 lds r19,(angle_loca)+1
826 sub r24,r18
827 03fc 8E0D sbc r25,r19
828 03fe 9F1D movw r18,r24
830 0402 70E0 .LM70:
831 0404 0E94 0000 sbrs r25,7
832 0408 C901 rjmp .L51
833 040a 2FEF clr r24
834 040c 8E3C clr r25
835 040e 9207 sub r24,r18
836 0410 04F4 sbc r25,r19
837 0412 8EEC .L51:
838 0414 9FEF cpi r24,181
839 cpc r25,__zero_reg__
840 0416 680F brlt .L50
842 .LM71:
843 sbrs r19,7
844 041a 6536 rjmp .L52
846 041e 04F0 .LM72:
847 0420 64E6 subi r18,lo8(-(360))
848 0422 70E0 sbci r19,hi8(-(360))
849 rjmp .L50
850 .L52:
852 0424 CB01 .LM73:
853 0426 4FEF subi r18,lo8(-(-360))
854 0428 6C39 sbci r19,hi8(-(-360))
855 042a 7407 .L50:
857 042e 8CE9 .LM74:
858 0430 9FEF lds r24,x_loca
859 lds r25,(x_loca)+1
160:position.c **** speed /= 2;
860 ,143,.LM73-.LFBB6
861 .LM73:
862 0432 BF01 subi r18,lo8(-(-360))
863 0434 7595 sbci r19,hi8(-(-360))
864 0436 6795 .L50:
161:position.c **** speed = min(speed,150);
865 72:
866 subi r18,lo8(-(360))
867 0438 6739 sbci r19,hi8(-(360))
868 043a 7105 rjmp .L50
869 043c 04F0 .L52:
871 0440 70E0 .LM73:
872 subi r18,lo8(-(-360))
873 0442 ECE9 sbci r19,hi8(-(-360))
874 0444 EE2E .L50:
876 0448 FE2E .LM74:
877 044a 00C0 lds r24,x_loca
878 lds r25,(x_loca)+1
162:position.c **** }
163:position.c ****
164:position.c **** motor(0x1a,0,0);
879 ,143,.LM73-.LFBB6
880 .LM73:
881 044c 40E0 subi r18,lo8(-(-360))
882 044e 50E0 sbci r19,hi8(-(-360))
883 0450 60E0 .L50:
885 0454 8AE1 .LM74:
886 0456 0E94 0000 lds r24,x_loca
165:position.c **** return 1;
166:position.c **** }
887 50
888 .L52:
890 .LM73:
891 045c DF91 subi r18,lo8(-(-360))
892 045e CF91 sbci r19,hi8(-(-360))
893 0460 1F91 .L50:
895 0464 FF90 .LM74:
896 0466 EF90 lds r24,x_loca
897 0468 0895 lds r25,(x_loca)+1
898 movw r20,r16
899 sub r20,r24
900 sbc r21,r25
901 sbrs r21,7
902 rjmp .L53
903 lds r20,x_loca
904 lds r21,(x_loca)+1
905 sub r20,r16
906 sbc r21,r17
907 rjmp .L54
908 .L53:
909 lds r24,x_loca
910 lds r25,(x_loca)+1
911 movw r20,r16
912 sub r20,r24
913 sbc r21,r25
914 .L54:
915 lds r24,y_loca
DEFINED SYMBOLS
*ABS*:00000000 position.c
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:84 .text:00000000 get_rel_angle
*COM*:00000002 angle_loca
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:144 .text:0000003a get_rotate_speed
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:200 .text:00000070 get_angle_des
*COM*:00000002 x_loca
*COM*:00000002 y_loca
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:324 .text:00000148 get_position
*COM*:00000001 count
*COM*:00000006 uart_rec
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:423 .text:000001e0 rotate
C:\DOCUME~1\wht\LOCALS~1\Temp/cc00Y7M0.s:677 .text:00000306 walk_line
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__floatsisf
__divsf3
atan
__mulsf3
__fixsfsi
__divmodhi4
uartGetc
motor
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -