⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 position.lst

📁 利用avr c编程的综合程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -