📄 ji_qi_ren.lst
字号:
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 + -