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

📄 双足机器人.lst

📁 这段源代码是基于atmel公司mega16单片机做的双足机器人控制程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0387 90500076  LDS	R5,left+1
    0389 1442      CP	R4,R2
    038A 0453      CPC	R5,R3
    038B F448      BCC	0x0395
    038C 90200073  LDS	R2,right
    038E 90300074  LDS	R3,right+1
    0390 1442      CP	R4,R2
    0391 0453      CPC	R5,R3
    0392 F410      BCC	0x0395
(0359)                       {turn_right();}
    0393 DD57      RCALL	_turn_right
    0394 C018      RJMP	0x03AD
(0360) 		            else if((interval>419)&&(right<left)&&(right<left))
    0395 EA83      LDI	R24,0xA3
    0396 E091      LDI	R25,1
    0397 9020006F  LDS	R2,interval
    0399 90300070  LDS	R3,interval+1
    039B 1582      CP	R24,R2
    039C 0593      CPC	R25,R3
    039D F478      BCC	0x03AD
    039E 90200075  LDS	R2,left
    03A0 90300076  LDS	R3,left+1
    03A2 90400073  LDS	R4,right
    03A4 90500074  LDS	R5,right+1
    03A6 1442      CP	R4,R2
    03A7 0453      CPC	R5,R3
    03A8 F420      BCC	0x03AD
    03A9 1442      CP	R4,R2
    03AA 0453      CPC	R5,R3
    03AB F408      BCC	0x03AD
(0361) 		                  {turn_left();} 
    03AC DD34      RCALL	_turn_left
(0362) delay_ms(100);
    03AD E604      LDI	R16,0x64
    03AE E010      LDI	R17,0
    03AF DCAB      RCALL	_delay_ms
    03B0 940E0465  CALL	pop_gset2
    03B2 9508      RET
(0363) }
(0364) ////////////////////探测光源函数///////////////////////////////////
(0365) 
(0366) 
(0367) ///////////////计时中断函数/////////////////////////////////////////
(0368) void time_inite(void)
(0369) {
(0370) TCCR2|= 0x07;//分频比1024
_time_inite:
    03B3 B585      IN	R24,0x25
    03B4 6087      ORI	R24,7
    03B5 BD85      OUT	0x25,R24
(0371)  mini=0;
    03B6 2422      CLR	R2
    03B7 92200078  STS	mini,R2
(0372)  second=0;
    03B9 92200079  STS	second,R2
(0373)  minisecond=0;
    03BB 92200077  STS	minisecond,R2
    03BD 9508      RET
_time2_isr:
    03BE 940E048A  CALL	push_lset
    03C0 9723      SBIW	R28,3
(0374) }
(0375) 
(0376) #pragma interrupt_handler  time2_isr:5
(0377) void   time2_isr(void)
(0378)  {
(0379)  TCNT2=0xb2;
    03C1 EB82      LDI	R24,0xB2
    03C2 BD84      OUT	0x24,R24
(0380)  minisecond++;
    03C3 91800077  LDS	R24,minisecond
    03C5 5F8F      SUBI	R24,0xFF
    03C6 93800077  STS	minisecond,R24
(0381)  if (minisecond<100)//计算总时间
    03C8 3684      CPI	R24,0x64
    03C9 F408      BCC	0x03CB
(0382) 	  	;
    03CA C017      RJMP	0x03E2
(0383) 	  else
(0384) 	    {
(0385) 		 minisecond=0;
    03CB 2422      CLR	R2
    03CC 92200077  STS	minisecond,R2
(0386) 		 if (second<60)
    03CE 91800079  LDS	R24,second
    03D0 338C      CPI	R24,0x3C
    03D1 F420      BCC	0x03D6
(0387) 		    second++;
    03D2 5F8F      SUBI	R24,0xFF
    03D3 93800079  STS	second,R24
    03D5 C00C      RJMP	0x03E2
(0388) 		 else  
(0389) 		    {
(0390) 			second=0;
    03D6 2422      CLR	R2
    03D7 92200079  STS	second,R2
(0391) 			minute++;
    03D9 91800062  LDS	R24,minute
    03DB 5F8F      SUBI	R24,0xFF
    03DC 93800062  STS	minute,R24
(0392) 			if(minute==100)
    03DE 3684      CPI	R24,0x64
    03DF F411      BNE	0x03E2
(0393) 			  minute=0;
    03E0 92200062  STS	minute,R2
(0394) 	      }
(0395) 		 }
(0396)         display_time(10,minute,second,0);
    03E2 2422      CLR	R2
    03E3 822A      STD	Y+2,R2
    03E4 90200079  LDS	R2,second
    03E6 8228      STD	Y+0,R2
    03E7 91200062  LDS	R18,minute
    03E9 E00A      LDI	R16,0xA
    03EA DD5A      RCALL	_display_time
    03EB 9623      ADIW	R28,3
    03EC 940E04A1  CALL	pop_lset
    03EE 9518      RETI
(0397)   
(0398) } 
(0399) ///////////////计时中断函数/////////////////////////////////////////
(0400) 
(0401) 
(0402) //////////////主函数///////////////////////////////////////////////
(0403) void main(void)
(0404) {
(0405)  unsigned  int i;  
(0406)  MCUCSR|=0x80;//禁止PC5第二功能,使之为普通I/O口
_main:
  i                    --> Y+1
    03EF B784      IN	R24,0x34
    03F0 6880      ORI	R24,0x80
    03F1 BF84      OUT	0x34,R24
(0407)  MCUCSR|=0x80;
    03F2 B784      IN	R24,0x34
    03F3 6880      ORI	R24,0x80
    03F4 BF84      OUT	0x34,R24
(0408)  DDRD|=0xc0;//PD 6 7控制左右电机
    03F5 B381      IN	R24,0x11
    03F6 6C80      ORI	R24,0xC0
    03F7 BB81      OUT	0x11,R24
(0409)  DDRC&=0xf8;//PC0 1 2为右中左红外传感器输入
    03F8 B384      IN	R24,0x14
    03F9 7F88      ANDI	R24,0xF8
    03FA BB84      OUT	0x14,R24
(0410)  DDRC|=0x18;//PC3,4控制显示,PC3传送数据,PC4为时钟信号线
    03FB B384      IN	R24,0x14
    03FC 6188      ORI	R24,0x18
    03FD BB84      OUT	0x14,R24
(0411)  PORTC&=0xe7;
    03FE B385      IN	R24,0x15
    03FF 7E87      ANDI	R24,0xE7
    0400 BB85      OUT	0x15,R24
(0412)  PORTC&=0xf8;
    0401 B385      IN	R24,0x15
    0402 7F88      ANDI	R24,0xF8
    0403 BB85      OUT	0x15,R24
(0413)  PORTD&=0x3f;
    0404 B382      IN	R24,0x12
    0405 738F      ANDI	R24,0x3F
    0406 BB82      OUT	0x12,R24
(0414)  time_inite();
    0407 DFAB      RCALL	_time_inite
(0415)  
(0416)  SEI();
    0408 9478      BSET	7
(0417)   TIMSK|=0x40;//开始计时
    0409 B789      IN	R24,0x39
    040A 6480      ORI	R24,0x40
    040B BF89      OUT	0x39,R24
(0418) //while(1)stop();
(0419) 
(0420) //while(1)	LeftUp(2);//抬左脚
(0421) 
(0422) 	delay_ms(100);
    040C E604      LDI	R16,0x64
    040D E010      LDI	R17,0
    040E DC4C      RCALL	_delay_ms
(0423) 	LeftFwd(10);//迈左脚步
    040F E00A      LDI	R16,0xA
    0410 DCF8      RCALL	_LeftFwd
(0424) 	delay_ms(100);
    0411 E604      LDI	R16,0x64
    0412 E010      LDI	R17,0
    0413 DC47      RCALL	_delay_ms
    0414 C014      RJMP	0x0429
(0425) 
(0426)    while(1)
(0427)  {
(0428)     
(0429) 	RightUp(5);//抬右脚
    0415 E005      LDI	R16,5
    0416 DD06      RCALL	_RightUp
(0430) 		delay_ms(100);
    0417 E604      LDI	R16,0x64
    0418 E010      LDI	R17,0
    0419 DC41      RCALL	_delay_ms
(0431) 	RightFwd(20);//迈右脚
    041A E104      LDI	R16,0x14
    041B DD15      RCALL	_RightFwd
(0432) 		delay_ms(100);
    041C E604      LDI	R16,0x64
    041D E010      LDI	R17,0
    041E DC3C      RCALL	_delay_ms
(0433) 	
(0434) 	LeftUp(7);//抬左脚
    041F E007      LDI	R16,7
    0420 DCD4      RCALL	_LeftUp
(0435) 	delay_ms(100);
    0421 E604      LDI	R16,0x64
    0422 E010      LDI	R17,0
    0423 DC37      RCALL	_delay_ms
(0436) 	LeftFwd(20);//迈左脚步
    0424 E104      LDI	R16,0x14
    0425 DCE3      RCALL	_LeftFwd
(0437) 	delay_ms(100);
FILE: <library>
    0426 E604      LDI	R16,0x64
    0427 E010      LDI	R17,0
    0428 DC32      RCALL	_delay_ms
    0429 CFEB      RJMP	0x0415
    042A 9508      RET
mod16s:
    042B 9468      BSET	6
    042C 92DA      ST	R13,-Y
    042D 2ED1      MOV	R13,R17
    042E C004      RJMP	0x0433
div16s:
    042F 94E8      BCLR	6
    0430 92DA      ST	R13,-Y
    0431 2ED1      MOV	R13,R17
    0432 26D3      EOR	R13,R19
    0433 FF17      SBRS	R17,7
    0434 C004      RJMP	0x0439
    0435 9510      COM	R17
    0436 9500      COM	R16
    0437 5F0F      SUBI	R16,0xFF
    0438 4F1F      SBCI	R17,0xFF
    0439 FF37      SBRS	R19,7
    043A C004      RJMP	0x043F
    043B 9530      COM	R19
    043C 9520      COM	R18
    043D 5F2F      SUBI	R18,0xFF
    043E 4F3F      SBCI	R19,0xFF
    043F 940E044C  CALL	xdiv16u
    0441 FED7      SBRS	R13,7
    0442 C004      RJMP	0x0447
    0443 9510      COM	R17
    0444 9500      COM	R16
    0445 5F0F      SUBI	R16,0xFF
    0446 4F1F      SBCI	R17,0xFF
    0447 90D9      LD	R13,Y+
    0448 9508      RET
mod16u:
    0449 9468      BSET	6
    044A C001      RJMP	xdiv16u
div16u:
    044B 94E8      BCLR	6
xdiv16u:
    044C 92EA      ST	R14,-Y
    044D 92FA      ST	R15,-Y
    044E 938A      ST	R24,-Y
    044F 24EE      CLR	R14
    0450 24FF      CLR	R15
    0451 E180      LDI	R24,0x10
    0452 0F00      LSL	R16
    0453 1F11      ROL	R17
    0454 1CEE      ROL	R14
    0455 1CFF      ROL	R15
    0456 16E2      CP	R14,R18
    0457 06F3      CPC	R15,R19
    0458 F018      BCS	0x045C
    0459 1AE2      SUB	R14,R18
    045A 0AF3      SBC	R15,R19
    045B 9503      INC	R16
    045C 958A      DEC	R24
    045D F7A1      BNE	0x0452
    045E F416      BRTC	0x0461
    045F 2D0E      MOV	R16,R14
    0460 2D1F      MOV	R17,R15
    0461 9189      LD	R24,Y+
    0462 90F9      LD	R15,Y+
    0463 90E9      LD	R14,Y+
    0464 9508      RET
pop_gset2:
    0465 E0E2      LDI	R30,2
    0466 940C0477  JMP	pop
pop_gset5:
    0468 27EE      CLR	R30
    0469 940C0477  JMP	pop
push_gset5:
    046B 92FA      ST	R15,-Y
    046C 92EA      ST	R14,-Y
push_gset4:
    046D 92DA      ST	R13,-Y
    046E 92CA      ST	R12,-Y
push_gset3:
    046F 92BA      ST	R11,-Y
    0470 92AA      ST	R10,-Y
push_gset2:
    0471 937A      ST	R23,-Y
    0472 936A      ST	R22,-Y
push_gset1:
    0473 935A      ST	R21,-Y
    0474 934A      ST	R20,-Y
    0475 9508      RET
pop_gset1:
    0476 E0E1      LDI	R30,1
pop:
    0477 9149      LD	R20,Y+
    0478 9159      LD	R21,Y+
    0479 FDE0      SBRC	R30,0
    047A 9508      RET
    047B 9169      LD	R22,Y+
    047C 9179      LD	R23,Y+
    047D FDE1      SBRC	R30,1
    047E 9508      RET
    047F 90A9      LD	R10,Y+
    0480 90B9      LD	R11,Y+
    0481 FDE2      SBRC	R30,2
    0482 9508      RET
    0483 90C9      LD	R12,Y+
    0484 90D9      LD	R13,Y+
    0485 FDE3      SBRC	R30,3
    0486 9508      RET
    0487 90E9      LD	R14,Y+
    0488 90F9      LD	R15,Y+
    0489 9508      RET
push_lset:
    048A 93FA      ST	R31,-Y
    048B 93EA      ST	R30,-Y
    048C 93BA      ST	R27,-Y
    048D 93AA      ST	R26,-Y
    048E 939A      ST	R25,-Y
    048F 938A      ST	R24,-Y
    0490 933A      ST	R19,-Y
    0491 932A      ST	R18,-Y
    0492 931A      ST	R17,-Y
    0493 930A      ST	R16,-Y
    0494 929A      ST	R9,-Y
    0495 928A      ST	R8,-Y
    0496 927A      ST	R7,-Y
    0497 926A      ST	R6,-Y
    0498 925A      ST	R5,-Y
    0499 924A      ST	R4,-Y
    049A 923A      ST	R3,-Y
    049B 922A      ST	R2,-Y
    049C 921A      ST	R1,-Y
    049D 920A      ST	R0,-Y
    049E B60F      IN	R0,0x3F
    049F 920A      ST	R0,-Y
    04A0 9508      RET
pop_lset:
    04A1 9009      LD	R0,Y+
    04A2 BE0F      OUT	0x3F,R0
    04A3 9009      LD	R0,Y+
    04A4 9019      LD	R1,Y+
    04A5 9029      LD	R2,Y+
    04A6 9039      LD	R3,Y+
    04A7 9049      LD	R4,Y+
    04A8 9059      LD	R5,Y+
    04A9 9069      LD	R6,Y+
    04AA 9079      LD	R7,Y+
    04AB 9089      LD	R8,Y+
    04AC 9099      LD	R9,Y+
    04AD 9109      LD	R16,Y+
    04AE 9119      LD	R17,Y+
    04AF 9129      LD	R18,Y+
    04B0 9139      LD	R19,Y+
    04B1 9189      LD	R24,Y+
    04B2 9199      LD	R25,Y+
    04B3 91A9      LD	R26,Y+
    04B4 91B9      LD	R27,Y+
    04B5 91E9      LD	R30,Y+
    04B6 91F9      LD	R31,Y+
    04B7 9508      RET
lsr16:
    04B8 2322      TST	R18
    04B9 F021      BEQ	0x04BE
    04BA 9516      LSR	R17
    04BB 9507      ROR	R16
    04BC 952A      DEC	R18
    04BD CFFA      RJMP	lsr16
    04BE 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -