📄 sl3010_3.lst
字号:
037C 5F8F SUBI R24,0xFF
037D 9380006A STS _cny_times,R24
(0393) delay_ms(10);
037F E00A LDI R16,0xA
0380 E010 LDI R17,0
0381 DD0F RCALL _delay_ms
(0394) if(cny_times == 0x64)
0382 9180006A LDS R24,_cny_times
0384 3684 CPI R24,0x64
0385 F411 BNE 0x0388
(0395) {
(0396) stop(); //停止运动//熄灭指示灯
0386 DD36 RCALL _stop
(0397) goto cny_car_start;
0387 CFC2 RJMP 0x034A
0388 CFC3 RJMP 0x034C
(0398) }
(0399) }
(0400) }
(0401) }
0389 9508 RET
(0402)
(0403) void main()
(0404) {
(0405) port_init(); //PA,PB,PC,PD 初始化
_main:
038A DCEE RCALL _port_init
(0406)
(0407) work_status = 0x67; //置对应的工作状态标志
038B E687 LDI R24,0x67
038C 9380007C STS _work_status,R24
(0408)
(0409) gzsl=0x88;timers=0;
038E E888 LDI R24,0x88
038F 93800065 STS _gzsl,R24
0391 2422 CLR R2
0392 9220006C STS _timers,R2
(0410) PORTA = 0x7e;
0394 E78E LDI R24,0x7E
0395 BB8B OUT 0x1B,R24
(0411) CLI(); //disable all interrupts
0396 94F8 BCLR 7
(0412) timer0_init();
0397 DE08 RCALL _timer0_init
(0413)
(0414) MCUCR = 0x00;
0398 2422 CLR R2
0399 BE25 OUT 0x35,R2
(0415) GIMSK = 0x00;
039A BE2B OUT 0x3B,R2
(0416) TIMSK|=(1<<TOIE0);
039B B789 IN R24,0x39
039C 6082 ORI R24,2
039D BF89 OUT 0x39,R24
(0417) SEI(); //re-enable interrupts
039E 9478 BSET 7
039F C0AA RJMP 0x044A
(0418)
(0419) while(1)
(0420) {
(0421) gzsl=0x88;
03A0 E888 LDI R24,0x88
03A1 93800065 STS _gzsl,R24
(0422) pa = led_data[timers];
03A3 E388 LDI R24,0x38
03A4 E090 LDI R25,0
03A5 9020006C LDS R2,_timers
03A7 2433 CLR R3
03A8 0E28 ADD R2,R24
03A9 1E39 ADC R3,R25
03AA 2DE2 MOV R30,R2
03AB 2DF3 MOV R31,R3
03AC 95C8 LPM
03AD 92000070 STS _pa,R0
(0423) if(pa==0x0a){timers=0;}
03AF 2D80 MOV R24,R0
03B0 308A CPI R24,0xA
03B1 F419 BNE 0x03B5
03B2 2422 CLR R2
03B3 9220006C STS _timers,R2
(0424) PORTA = pa;
03B5 90200070 LDS R2,_pa
03B7 BA2B OUT 0x1B,R2
(0425)
(0426) /******************************************************/
(0427) pd_select = PIND & 0x01;
03B8 B380 IN R24,0x10
03B9 7081 ANDI R24,1
03BA 93800067 STS _pd_select,R24
(0428) if(pd_select == 0x00)//pd0=0,其它为高电平
03BC 2388 TST R24
03BD F469 BNE 0x03CB
(0429) {
03BE C00B RJMP 0x03CA
(0430) while(1)
(0431) {
(0432) delay_ms(500);//消除抖动
03BF EF04 LDI R16,0xF4
03C0 E011 LDI R17,1
03C1 DCCF RCALL _delay_ms
(0433) pd_select = PIND & 0x0f;
03C2 B380 IN R24,0x10
03C3 708F ANDI R24,0xF
03C4 93800067 STS _pd_select,R24
(0434) if(pd_select == 0x0e)//pd0=0,其它为高电平
03C6 308E CPI R24,0xE
03C7 F419 BNE 0x03CB
(0435) {
(0436) stop_timer0();
03C8 DE22 RCALL _stop_timer0
(0437) remote_car();//运行遥控车程序
03C9 DF08 RCALL _remote_car
03CA CFF4 RJMP 0x03BF
(0438) }
(0439) else
(0440) break;
(0441) }
(0442) }
(0443) pd_select = PIND & 0x02;
03CB B380 IN R24,0x10
03CC 7082 ANDI R24,2
03CD 93800067 STS _pd_select,R24
(0444) if(pd_select == 0x00)//pd1=0,其它为高电平
03CF 2388 TST R24
03D0 F469 BNE 0x03DE
(0445) {
03D1 C00B RJMP 0x03DD
(0446) while(1)
(0447) {
(0448) delay_ms(500);//消除抖动
03D2 EF04 LDI R16,0xF4
03D3 E011 LDI R17,1
03D4 DCBC RCALL _delay_ms
(0449) pd_select = PIND & 0x0f;
03D5 B380 IN R24,0x10
03D6 708F ANDI R24,0xF
03D7 93800067 STS _pd_select,R24
(0450) if(pd_select == 0x0d)//pd1=0,其它为高电平
03D9 308D CPI R24,0xD
03DA F419 BNE 0x03DE
(0451) {
(0452) stop_timer0();
03DB DE0F RCALL _stop_timer0
(0453) cny_car();//寻迹机器人,探测白底黑线,沿黑线行进
03DC DF6A RCALL _cny_car
03DD CFF4 RJMP 0x03D2
(0454) }
(0455) else
(0456) break;
(0457) }
(0458) }
(0459) pd_select = PIND & 0x04;
03DE B380 IN R24,0x10
03DF 7084 ANDI R24,4
03E0 93800067 STS _pd_select,R24
(0460) if(pd_select == 0x00)//pd2=0,其它为高电平
03E2 2388 TST R24
03E3 F469 BNE 0x03F1
(0461) {
03E4 C00B RJMP 0x03F0
(0462) while(1)
(0463) {
(0464) delay_ms(500);//消除抖动
03E5 EF04 LDI R16,0xF4
03E6 E011 LDI R17,1
03E7 DCA9 RCALL _delay_ms
(0465) pd_select = PIND & 0x0f;
03E8 B380 IN R24,0x10
03E9 708F ANDI R24,0xF
03EA 93800067 STS _pd_select,R24
(0466) if(pd_select == 0x0b)//pd2=0,其它为高电平
03EC 308B CPI R24,0xB
03ED F419 BNE 0x03F1
(0467) {
(0468) stop_timer0();
03EE DDFC RCALL _stop_timer0
(0469) xuanya_car();//机器人避障碍、避悬崖行进
03EF DE7B RCALL _xuanya_car
03F0 CFF4 RJMP 0x03E5
(0470) }
(0471) else
(0472) break;
(0473) }
(0474) }
(0475) pd_select = PIND & 0x08;
03F1 B380 IN R24,0x10
03F2 7088 ANDI R24,0x8
03F3 93800067 STS _pd_select,R24
(0476) if(pd_select == 0x00)//pd3=0,其它为高电平
03F5 2388 TST R24
03F6 F469 BNE 0x0404
(0477) {
03F7 C00B RJMP 0x0403
(0478) while(1)
(0479) {
(0480) delay_ms(500);//消除抖动
03F8 EF04 LDI R16,0xF4
03F9 E011 LDI R17,1
03FA DC96 RCALL _delay_ms
(0481) pd_select = PIND & 0x0f;
03FB B380 IN R24,0x10
03FC 708F ANDI R24,0xF
03FD 93800067 STS _pd_select,R24
(0482) if(pd_select == 0x07)//pd3=0,其它为高电平
03FF 3087 CPI R24,7
0400 F419 BNE 0x0404
(0483) {
(0484) stop_timer0();
0401 DDE9 RCALL _stop_timer0
(0485) auto_car(); //机器人按程序设定路线行走
0402 DF1B RCALL _auto_car
0403 CFF4 RJMP 0x03F8
(0486) }
(0487) else
(0488) break;
(0489) }
(0490) }
(0491) /********************************************************/
(0492) remote_select = PINB & 0x0f;//检测遥控器是否有键按下
0404 B386 IN R24,0x16
0405 708F ANDI R24,0xF
0406 93800066 STS _remote_select,R24
(0493) if(remote_select == 0x04)// A
0408 3084 CPI R24,4
0409 F469 BNE 0x0417
(0494) {
040A C00B RJMP 0x0416
(0495) while(1)
(0496) {
(0497) delay_ms(500);//消除抖动
040B EF04 LDI R16,0xF4
040C E011 LDI R17,1
040D DC83 RCALL _delay_ms
(0498) remote_select = PINB & 0x0f;
040E B386 IN R24,0x16
040F 708F ANDI R24,0xF
0410 93800066 STS _remote_select,R24
(0499) if(remote_select == 0x04)// A
0412 3084 CPI R24,4
0413 F419 BNE 0x0417
(0500) {
(0501) stop_timer0();
0414 DDD6 RCALL _stop_timer0
(0502) remote_car();//运行遥控车程序
0415 DEBC RCALL _remote_car
0416 CFF4 RJMP 0x040B
(0503) }
(0504) else
(0505) break;
(0506) }
(0507) }
(0508) if(remote_select == 0x02)// B
0417 91800066 LDS R24,_remote_select
0419 3082 CPI R24,2
041A F469 BNE 0x0428
(0509) {
041B C00B RJMP 0x0427
(0510) while(1)
(0511) {
(0512) delay_ms(500);//消除抖动
041C EF04 LDI R16,0xF4
041D E011 LDI R17,1
041E DC72 RCALL _delay_ms
(0513) remote_select = PINB & 0x0f;
041F B386 IN R24,0x16
0420 708F ANDI R24,0xF
0421 93800066 STS _remote_select,R24
(0514) if(remote_select == 0x02)// B
0423 3082 CPI R24,2
0424 F419 BNE 0x0428
(0515) {
(0516) stop_timer0();
0425 DDC5 RCALL _stop_timer0
(0517) cny_car();//寻迹机器人,探测白底黑线,沿黑线行进
0426 DF20 RCALL _cny_car
0427 CFF4 RJMP 0x041C
(0518) }
(0519) else
(0520) break;
(0521) }
(0522) }
(0523) if(remote_select == 0x08)// C
0428 91800066 LDS R24,_remote_select
042A 3088 CPI R24,0x8
042B F469 BNE 0x0439
(0524) {
042C C00B RJMP 0x0438
(0525) while(1)
(0526) {
(0527) delay_ms(500);//消除抖动
042D EF04 LDI R16,0xF4
042E E011 LDI R17,1
042F DC61 RCALL _delay_ms
(0528) remote_select = PINB & 0x0f;
0430 B386 IN R24,0x16
0431 708F ANDI R24,0xF
0432 93800066 STS _remote_select,R24
(0529) if(remote_select == 0x08)// C
0434 3088 CPI R24,0x8
0435 F419 BNE 0x0439
(0530) {
(0531) stop_timer0();
0436 DDB4 RCALL _stop_timer0
(0532) xuanya_car();//机器人避障碍、避悬崖行进
0437 DE33 RCALL _xuanya_car
0438 CFF4 RJMP 0x042D
(0533) }
(0534) else
(0535) break;
(0536) }
(0537) }
(0538) if(remote_select == 0x01)// D
0439 91800066 LDS R24,_remote_select
043B 3081 CPI R24,1
043C F469 BNE 0x044A
(0539) {
043D C00B RJMP 0x0449
(0540) while(1)
(0541) {
(0542) delay_ms(500);//消除抖动
043E EF04 LDI R16,0xF4
043F E011 LDI R17,1
0440 DC50 RCALL _delay_ms
(0543) remote_select = PINB & 0x0f;
0441 B386 IN R24,0x16
0442 708F ANDI R24,0xF
0443 93800066 STS _remote_select,R24
(0544) if(remote_select == 0x01)// D
0445 3081 CPI R24,1
0446 F419 BNE 0x044A
(0545) {
(0546) stop_timer0();
0447 DDA3 RCALL _stop_timer0
(0547) auto_car();//机器人按程序设定路线行走
0448 DED5 RCALL _auto_car
0449 CFF4 RJMP 0x043E
044A CF55 RJMP 0x03A0
(0548) }
(0549) else
(0550) break;
(0551) }
(0552) }
(0553) }
(0554) }
FILE: <library>
044B 9508 RET
push_gset1:
044C 935A ST R21,-Y
044D 934A ST R20,-Y
044E 9508 RET
pop_gset1:
044F E0E1 LDI R30,1
pop:
0450 9149 LD R20,Y+
0451 9159 LD R21,Y+
0452 FDE0 SBRC R30,0
0453 9508 RET
0454 9169 LD R22,Y+
0455 9179 LD R23,Y+
0456 FDE1 SBRC R30,1
0457 9508 RET
0458 90A9 LD R10,Y+
0459 90B9 LD R11,Y+
045A FDE2 SBRC R30,2
045B 9508 RET
045C 90C9 LD R12,Y+
045D 90D9 LD R13,Y+
045E FDE3 SBRC R30,3
045F 9508 RET
0460 90E9 LD R14,Y+
0461 90F9 LD R15,Y+
0462 9508 RET
lpm16:
0463 93EA ST R30,-Y
0464 93FA ST R31,-Y
0465 920A ST R0,-Y
0466 2FE0 MOV R30,R16
0467 2FF1 MOV R31,R17
0468 95C8 LPM
0469 2D00 MOV R16,R0
046A 9631 ADIW R30,1
046B 95C8 LPM
046C 2D10 MOV R17,R0
046D 9009 LD R0,Y+
046E 91F9 LD R31,Y+
046F 91E9 LD R30,Y+
0470 9508 RET
push_lset:
0471 93FA ST R31,-Y
0472 93EA ST R30,-Y
0473 93BA ST R27,-Y
0474 93AA ST R26,-Y
0475 939A ST R25,-Y
0476 938A ST R24,-Y
0477 933A ST R19,-Y
0478 932A ST R18,-Y
0479 931A ST R17,-Y
047A 930A ST R16,-Y
047B 929A ST R9,-Y
047C 928A ST R8,-Y
047D 927A ST R7,-Y
047E 926A ST R6,-Y
047F 925A ST R5,-Y
0480 924A ST R4,-Y
0481 923A ST R3,-Y
0482 922A ST R2,-Y
0483 921A ST R1,-Y
0484 920A ST R0,-Y
0485 B60F IN R0,0x3F
0486 920A ST R0,-Y
0487 9508 RET
pop_lset:
0488 9009 LD R0,Y+
0489 BE0F OUT 0x3F,R0
048A 9009 LD R0,Y+
048B 9019 LD R1,Y+
048C 9029 LD R2,Y+
048D 9039 LD R3,Y+
048E 9049 LD R4,Y+
048F 9059 LD R5,Y+
0490 9069 LD R6,Y+
0491 9079 LD R7,Y+
0492 9089 LD R8,Y+
0493 9099 LD R9,Y+
0494 9109 LD R16,Y+
0495 9119 LD R17,Y+
0496 9129 LD R18,Y+
0497 9139 LD R19,Y+
0498 9189 LD R24,Y+
0499 9199 LD R25,Y+
049A 91A9 LD R26,Y+
049B 91B9 LD R27,Y+
049C 91E9 LD R30,Y+
049D 91F9 LD R31,Y+
049E 9508 RET
mpy16s:
049F 920A ST R0,-Y
04A0 921A ST R1,-Y
04A1 2400 CLR R0
04A2 2411 CLR R1
04A3 3000 CPI R16,0
04A4 0701 CPC R16,R17
04A5 F041 BEQ 0x04AE
04A6 9516 LSR R17
04A7 9507 ROR R16
04A8 F410 BCC 0x04AB
04A9 0E02 ADD R0,R18
04AA 1E13 ADC R1,R19
04AB 0F22 LSL R18
04AC 1F33 ROL R19
04AD CFF5 RJMP 0x04A3
04AE 2D00 MOV R16,R0
04AF 2D11 MOV R17,R1
04B0 9019 LD R1,Y+
04B1 9009 LD R0,Y+
04B2 9508 RET
_EEPROMread:
04B3 99E1 SBIC 0x1C,1
04B4 CFFE RJMP _EEPROMread
04B5 BB0E OUT 0x1E,R16
04B6 BB1F OUT 0x1F,R17
04B7 9AE0 SBI 0x1C,0
04B8 B30D IN R16,0x1D
04B9 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -