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

📄 ji_qi_ren.lst

📁 基于atmel公司的mega16单片机做的机器人控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
    02DC C080      RJMP	0x035D
(0277) 	      else if((interval>419)&&(zhong<left)&&(zhong<right)&&(left>(right+10)))
    02DD EA83      LDI	R24,0xA3
    02DE E091      LDI	R25,1
    02DF 9020006F  LDS	R2,interval
    02E1 90300070  LDS	R3,interval+1
    02E3 1582      CP	R24,R2
    02E4 0593      CPC	R25,R3
    02E5 F4E8      BCC	0x0303
    02E6 90200075  LDS	R2,left
    02E8 90300076  LDS	R3,left+1
    02EA 90400071  LDS	R4,zhong
    02EC 90500072  LDS	R5,zhong+1
    02EE 1442      CP	R4,R2
    02EF 0453      CPC	R5,R3
    02F0 F490      BCC	0x0303
    02F1 90200073  LDS	R2,right
    02F3 90300074  LDS	R3,right+1
    02F5 1442      CP	R4,R2
    02F6 0453      CPC	R5,R3
    02F7 F458      BCC	0x0303
    02F8 01C1      MOVW	R24,R2
    02F9 960A      ADIW	R24,0xA
    02FA 90200075  LDS	R2,left
    02FC 90300076  LDS	R3,left+1
    02FE 1582      CP	R24,R2
    02FF 0593      CPC	R25,R3
    0300 F410      BCC	0x0303
(0278) 		       {turn_left();}
    0301 DDDF      RCALL	_turn_left
    0302 C05A      RJMP	0x035D
(0279) 		   else if((interval>419)&&(zhong<left)&&(zhong<right)&&(right>(left+10)))
    0303 EA83      LDI	R24,0xA3
    0304 E091      LDI	R25,1
    0305 9020006F  LDS	R2,interval
    0307 90300070  LDS	R3,interval+1
    0309 1582      CP	R24,R2
    030A 0593      CPC	R25,R3
    030B F4E0      BCC	0x0328
    030C 90200075  LDS	R2,left
    030E 90300076  LDS	R3,left+1
    0310 90400071  LDS	R4,zhong
    0312 90500072  LDS	R5,zhong+1
    0314 1442      CP	R4,R2
    0315 0453      CPC	R5,R3
    0316 F488      BCC	0x0328
    0317 90200073  LDS	R2,right
    0319 90300074  LDS	R3,right+1
    031B 1442      CP	R4,R2
    031C 0453      CPC	R5,R3
    031D F450      BCC	0x0328
    031E 91800075  LDS	R24,left
    0320 91900076  LDS	R25,left+1
    0322 960A      ADIW	R24,0xA
    0323 1582      CP	R24,R2
    0324 0593      CPC	R25,R3
    0325 F410      BCC	0x0328
(0280) 		 	   {turn_right();}
    0326 DDC4      RCALL	_turn_right
    0327 C035      RJMP	0x035D
(0281)                   else  if((interval>419)&&(left<zhong)&&(left<right))
    0328 EA83      LDI	R24,0xA3
    0329 E091      LDI	R25,1
    032A 9020006F  LDS	R2,interval
    032C 90300070  LDS	R3,interval+1
    032E 1582      CP	R24,R2
    032F 0593      CPC	R25,R3
    0330 F4A0      BCC	0x0345
    0331 90200071  LDS	R2,zhong
    0333 90300072  LDS	R3,zhong+1
    0335 90400075  LDS	R4,left
    0337 90500076  LDS	R5,left+1
    0339 1442      CP	R4,R2
    033A 0453      CPC	R5,R3
    033B F448      BCC	0x0345
    033C 90200073  LDS	R2,right
    033E 90300074  LDS	R3,right+1
    0340 1442      CP	R4,R2
    0341 0453      CPC	R5,R3
    0342 F410      BCC	0x0345
(0282)                       {turn_right();}
    0343 DDA7      RCALL	_turn_right
    0344 C018      RJMP	0x035D
(0283) 		            else if((interval>419)&&(right<left)&&(right<left))
    0345 EA83      LDI	R24,0xA3
    0346 E091      LDI	R25,1
    0347 9020006F  LDS	R2,interval
    0349 90300070  LDS	R3,interval+1
    034B 1582      CP	R24,R2
    034C 0593      CPC	R25,R3
    034D F478      BCC	0x035D
    034E 90200075  LDS	R2,left
    0350 90300076  LDS	R3,left+1
    0352 90400073  LDS	R4,right
    0354 90500074  LDS	R5,right+1
    0356 1442      CP	R4,R2
    0357 0453      CPC	R5,R3
    0358 F420      BCC	0x035D
    0359 1442      CP	R4,R2
    035A 0453      CPC	R5,R3
    035B F408      BCC	0x035D
(0284) 		                  {turn_left();} 
    035C DD84      RCALL	_turn_left
(0285) delay_ms(100);
    035D E604      LDI	R16,0x64
    035E E010      LDI	R17,0
    035F DCFB      RCALL	_delay_ms
    0360 940E0428  CALL	pop_gset2
    0362 9508      RET
(0286) }
(0287) ////////////////////探测光源函数///////////////////////////////////
(0288) 
(0289) 
(0290) ///////////////计时中断函数/////////////////////////////////////////
(0291) void time_inite(void)
(0292) {
(0293) TCCR2|= 0x07;//分频比1024
_time_inite:
    0363 B585      IN	R24,0x25
    0364 6087      ORI	R24,7
    0365 BD85      OUT	0x25,R24
(0294)  mini=0;
    0366 2422      CLR	R2
    0367 92200078  STS	mini,R2
(0295)  second=0;
    0369 92200079  STS	second,R2
(0296)  minisecond=0;
    036B 92200077  STS	minisecond,R2
    036D 9508      RET
_time2_isr:
    036E 940E044D  CALL	push_lset
    0370 9723      SBIW	R28,3
(0297) }
(0298) 
(0299) #pragma interrupt_handler  time2_isr:5
(0300) void   time2_isr(void)
(0301)  {
(0302)  TCNT2=0xb2;
    0371 EB82      LDI	R24,0xB2
    0372 BD84      OUT	0x24,R24
(0303)  minisecond++;
    0373 91800077  LDS	R24,minisecond
    0375 5F8F      SUBI	R24,0xFF
    0376 93800077  STS	minisecond,R24
(0304)  if (minisecond<100)//计算总时间
    0378 3684      CPI	R24,0x64
    0379 F408      BCC	0x037B
(0305) 	  	;
    037A C017      RJMP	0x0392
(0306) 	  else
(0307) 	    {
(0308) 		 minisecond=0;
    037B 2422      CLR	R2
    037C 92200077  STS	minisecond,R2
(0309) 		 if (second<60)
    037E 91800079  LDS	R24,second
    0380 338C      CPI	R24,0x3C
    0381 F420      BCC	0x0386
(0310) 		    second++;
    0382 5F8F      SUBI	R24,0xFF
    0383 93800079  STS	second,R24
    0385 C00C      RJMP	0x0392
(0311) 		 else  
(0312) 		    {
(0313) 			second=0;
    0386 2422      CLR	R2
    0387 92200079  STS	second,R2
(0314) 			minute++;
    0389 91800062  LDS	R24,minute
    038B 5F8F      SUBI	R24,0xFF
    038C 93800062  STS	minute,R24
(0315) 			if(minute==100)
    038E 3684      CPI	R24,0x64
    038F F411      BNE	0x0392
(0316) 			  minute=0;
    0390 92200062  STS	minute,R2
(0317) 	      }
(0318) 		 }
(0319)         display_time(10,minute,second,0);
    0392 2422      CLR	R2
    0393 822A      STD	Y+2,R2
    0394 90200079  LDS	R2,second
    0396 8228      STD	Y+0,R2
    0397 91200062  LDS	R18,minute
    0399 E00A      LDI	R16,0xA
    039A DD5A      RCALL	_display_time
    039B 9623      ADIW	R28,3
    039C 940E0464  CALL	pop_lset
    039E 9518      RETI
(0320)   
(0321) } 
(0322) ///////////////计时中断函数/////////////////////////////////////////
(0323) 
(0324) 
(0325) //////////////主函数///////////////////////////////////////////////
(0326) void main(void)
(0327) {
(0328)  unsigned  int i;  
(0329)  MCUCSR|=0x80;//禁止PC5第二功能,使之为普通I/O口
_main:
  i                    --> R20
    039F B784      IN	R24,0x34
    03A0 6880      ORI	R24,0x80
    03A1 BF84      OUT	0x34,R24
(0330)  MCUCSR|=0x80;
    03A2 B784      IN	R24,0x34
    03A3 6880      ORI	R24,0x80
    03A4 BF84      OUT	0x34,R24
(0331)  DDRD|=0xc0;//PD 6 7控制左右电机
    03A5 B381      IN	R24,0x11
    03A6 6C80      ORI	R24,0xC0
    03A7 BB81      OUT	0x11,R24
(0332)  DDRC&=0xf8;//PC0 1 2为右中左红外传感器输入
    03A8 B384      IN	R24,0x14
    03A9 7F88      ANDI	R24,0xF8
    03AA BB84      OUT	0x14,R24
(0333)  DDRC|=0x18;//PC3,4控制显示,PC3传送数据,PC4为时钟信号线
    03AB B384      IN	R24,0x14
    03AC 6188      ORI	R24,0x18
    03AD BB84      OUT	0x14,R24
(0334)  PORTC&=0xe7;
    03AE B385      IN	R24,0x15
    03AF 7E87      ANDI	R24,0xE7
    03B0 BB85      OUT	0x15,R24
(0335)  PORTC&=0xf8;
    03B1 B385      IN	R24,0x15
    03B2 7F88      ANDI	R24,0xF8
    03B3 BB85      OUT	0x15,R24
(0336)  PORTD&=0x3f;
    03B4 B382      IN	R24,0x12
    03B5 738F      ANDI	R24,0x3F
    03B6 BB82      OUT	0x12,R24
(0337)  time_inite();
    03B7 DFAB      RCALL	_time_inite
(0338)  
(0339)  SEI();
    03B8 9478      BSET	7
(0340)   TIMSK|=0x40;//开始计时
    03B9 B789      IN	R24,0x39
    03BA 6480      ORI	R24,0x40
    03BB BF89      OUT	0x39,R24
    03BC C02F      RJMP	0x03EC
(0341)  //while(1)stop();
(0342)    while(1)
(0343)  {
(0344)     i++;
    03BD 5F4F      SUBI	R20,0xFF
    03BE 4F5F      SBCI	R21,0xFF
(0345)     if(i<200)run();
    03BF 3C48      CPI	R20,0xC8
    03C0 E0E0      LDI	R30,0
    03C1 075E      CPC	R21,R30
    03C2 F410      BCC	0x03C5
    03C3 DCFD      RCALL	_run
    03C4 C020      RJMP	0x03E5
(0346) 	else if(i>200  && i<300)turn_left();	
    03C5 EC88      LDI	R24,0xC8
    03C6 E090      LDI	R25,0
    03C7 1784      CP	R24,R20
    03C8 0795      CPC	R25,R21
    03C9 F430      BCC	0x03D0
    03CA 324C      CPI	R20,0x2C
    03CB E0E1      LDI	R30,1
    03CC 075E      CPC	R21,R30
    03CD F410      BCC	0x03D0
    03CE DD12      RCALL	_turn_left
    03CF C015      RJMP	0x03E5
(0347) 	else if(i>300  && i<500)run_back();
    03D0 E28C      LDI	R24,0x2C
    03D1 E091      LDI	R25,1
    03D2 1784      CP	R24,R20
    03D3 0795      CPC	R25,R21
    03D4 F430      BCC	0x03DB
    03D5 3F44      CPI	R20,0xF4
    03D6 E0E1      LDI	R30,1
    03D7 075E      CPC	R21,R30
    03D8 F410      BCC	0x03DB
    03D9 DCF7      RCALL	_run_back
    03DA C00A      RJMP	0x03E5
(0348) 	else if((i>500  && i<600)) turn_right();
    03DB EF84      LDI	R24,0xF4
    03DC E091      LDI	R25,1
    03DD 1784      CP	R24,R20
    03DE 0795      CPC	R25,R21
    03DF F428      BCC	0x03E5
    03E0 3548      CPI	R20,0x58
    03E1 E0E2      LDI	R30,2
    03E2 075E      CPC	R21,R30
    03E3 F408      BCC	0x03E5
    03E4 DD06      RCALL	_turn_right
(0349) 	if(i>700)i=0;
FILE: <library>
    03E5 EB8C      LDI	R24,0xBC
    03E6 E092      LDI	R25,2
    03E7 1784      CP	R24,R20
    03E8 0795      CPC	R25,R21
    03E9 F410      BCC	0x03EC
    03EA 2744      CLR	R20
    03EB 2755      CLR	R21
    03EC CFD0      RJMP	0x03BD
    03ED 9508      RET
mod16s:
    03EE 9468      BSET	6
    03EF 92DA      ST	R13,-Y
    03F0 2ED1      MOV	R13,R17
    03F1 C004      RJMP	0x03F6
div16s:
    03F2 94E8      BCLR	6
    03F3 92DA      ST	R13,-Y
    03F4 2ED1      MOV	R13,R17
    03F5 26D3      EOR	R13,R19
    03F6 FF17      SBRS	R17,7
    03F7 C004      RJMP	0x03FC
    03F8 9510      COM	R17
    03F9 9500      COM	R16
    03FA 5F0F      SUBI	R16,0xFF
    03FB 4F1F      SBCI	R17,0xFF
    03FC FF37      SBRS	R19,7
    03FD C004      RJMP	0x0402
    03FE 9530      COM	R19
    03FF 9520      COM	R18
    0400 5F2F      SUBI	R18,0xFF
    0401 4F3F      SBCI	R19,0xFF
    0402 940E040F  CALL	xdiv16u
    0404 FED7      SBRS	R13,7
    0405 C004      RJMP	0x040A
    0406 9510      COM	R17
    0407 9500      COM	R16
    0408 5F0F      SUBI	R16,0xFF
    0409 4F1F      SBCI	R17,0xFF
    040A 90D9      LD	R13,Y+
    040B 9508      RET
mod16u:
    040C 9468      BSET	6
    040D C001      RJMP	xdiv16u
div16u:
    040E 94E8      BCLR	6
xdiv16u:
    040F 92EA      ST	R14,-Y
    0410 92FA      ST	R15,-Y
    0411 938A      ST	R24,-Y
    0412 24EE      CLR	R14
    0413 24FF      CLR	R15
    0414 E180      LDI	R24,0x10
    0415 0F00      LSL	R16
    0416 1F11      ROL	R17
    0417 1CEE      ROL	R14
    0418 1CFF      ROL	R15
    0419 16E2      CP	R14,R18
    041A 06F3      CPC	R15,R19
    041B F018      BCS	0x041F
    041C 1AE2      SUB	R14,R18
    041D 0AF3      SBC	R15,R19
    041E 9503      INC	R16
    041F 958A      DEC	R24
    0420 F7A1      BNE	0x0415
    0421 F416      BRTC	0x0424
    0422 2D0E      MOV	R16,R14
    0423 2D1F      MOV	R17,R15
    0424 9189      LD	R24,Y+
    0425 90F9      LD	R15,Y+
    0426 90E9      LD	R14,Y+
    0427 9508      RET
pop_gset2:
    0428 E0E2      LDI	R30,2
    0429 940C043A  JMP	pop
pop_gset5:
    042B 27EE      CLR	R30
    042C 940C043A  JMP	pop
push_gset5:
    042E 92FA      ST	R15,-Y
    042F 92EA      ST	R14,-Y
push_gset4:
    0430 92DA      ST	R13,-Y
    0431 92CA      ST	R12,-Y
push_gset3:
    0432 92BA      ST	R11,-Y
    0433 92AA      ST	R10,-Y
push_gset2:
    0434 937A      ST	R23,-Y
    0435 936A      ST	R22,-Y
push_gset1:
    0436 935A      ST	R21,-Y
    0437 934A      ST	R20,-Y
    0438 9508      RET
pop_gset1:
    0439 E0E1      LDI	R30,1
pop:
    043A 9149      LD	R20,Y+
    043B 9159      LD	R21,Y+
    043C FDE0      SBRC	R30,0
    043D 9508      RET
    043E 9169      LD	R22,Y+
    043F 9179      LD	R23,Y+
    0440 FDE1      SBRC	R30,1
    0441 9508      RET
    0442 90A9      LD	R10,Y+
    0443 90B9      LD	R11,Y+
    0444 FDE2      SBRC	R30,2
    0445 9508      RET
    0446 90C9      LD	R12,Y+
    0447 90D9      LD	R13,Y+
    0448 FDE3      SBRC	R30,3
    0449 9508      RET
    044A 90E9      LD	R14,Y+
    044B 90F9      LD	R15,Y+
    044C 9508      RET
push_lset:
    044D 93FA      ST	R31,-Y
    044E 93EA      ST	R30,-Y
    044F 93BA      ST	R27,-Y
    0450 93AA      ST	R26,-Y
    0451 939A      ST	R25,-Y
    0452 938A      ST	R24,-Y
    0453 933A      ST	R19,-Y
    0454 932A      ST	R18,-Y
    0455 931A      ST	R17,-Y
    0456 930A      ST	R16,-Y
    0457 929A      ST	R9,-Y
    0458 928A      ST	R8,-Y
    0459 927A      ST	R7,-Y
    045A 926A      ST	R6,-Y
    045B 925A      ST	R5,-Y
    045C 924A      ST	R4,-Y
    045D 923A      ST	R3,-Y
    045E 922A      ST	R2,-Y
    045F 921A      ST	R1,-Y
    0460 920A      ST	R0,-Y
    0461 B60F      IN	R0,0x3F
    0462 920A      ST	R0,-Y
    0463 9508      RET
pop_lset:
    0464 9009      LD	R0,Y+
    0465 BE0F      OUT	0x3F,R0
    0466 9009      LD	R0,Y+
    0467 9019      LD	R1,Y+
    0468 9029      LD	R2,Y+
    0469 9039      LD	R3,Y+
    046A 9049      LD	R4,Y+
    046B 9059      LD	R5,Y+
    046C 9069      LD	R6,Y+
    046D 9079      LD	R7,Y+
    046E 9089      LD	R8,Y+
    046F 9099      LD	R9,Y+
    0470 9109      LD	R16,Y+
    0471 9119      LD	R17,Y+
    0472 9129      LD	R18,Y+
    0473 9139      LD	R19,Y+
    0474 9189      LD	R24,Y+
    0475 9199      LD	R25,Y+
    0476 91A9      LD	R26,Y+
    0477 91B9      LD	R27,Y+
    0478 91E9      LD	R30,Y+
    0479 91F9      LD	R31,Y+
    047A 9508      RET
lsr16:
    047B 2322      TST	R18
    047C F021      BEQ	0x0481
    047D 9516      LSR	R17
    047E 9507      ROR	R16
    047F 952A      DEC	R18
    0480 CFFA      RJMP	lsr16
    0481 9508      RET

⌨️ 快捷键说明

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