📄 jidong.lst
字号:
44C 9230 0084 STS count_2+1,R3
44E 9220 0083 STS count_2,R2
450 9250 0086 STS count_2+3,R5
452 9240 0085 STS count_2+2,R4
454 EF8A LDI R24,0xFA
455 E090 LDI R25,0
456 E0A0 LDI R26,0
457 E0B0 LDI R27,0
458 1628 CP R2,R24
459 0639 CPC R3,R25
45A 064A CPC R4,R26
45B 065B CPC R5,R27
45C F1DC BLT 0x0498
(0317) {
(0318) turn_l();
45D DC1D RCALL _turn_l
(0319) if( ++count_2 >= 350 )
45E E081 LDI R24,1
45F E090 LDI R25,0
460 E0A0 LDI R26,0
461 E0B0 LDI R27,0
462 9040 0085 LDS R4,count_2+2
464 9050 0086 LDS R5,count_2+3
466 9020 0083 LDS R2,count_2
468 9030 0084 LDS R3,count_2+1
46A 0E28 ADD R2,R24
46B 1E39 ADC R3,R25
46C 1E4A ADC R4,R26
46D 1E5B ADC R5,R27
46E 8628 STD Y+8,R2
46F 8639 STD Y+9,R3
470 864A STD Y+10,R4
471 865B STD Y+11,R5
472 8428 LDD R2,Y+8
473 8439 LDD R3,Y+9
474 844A LDD R4,Y+10
475 845B LDD R5,Y+11
476 9230 0084 STS count_2+1,R3
478 9220 0083 STS count_2,R2
47A 9250 0086 STS count_2+3,R5
47C 9240 0085 STS count_2+2,R4
47E E58E LDI R24,0x5E
47F E091 LDI R25,1
480 E0A0 LDI R26,0
481 E0B0 LDI R27,0
482 1628 CP R2,R24
483 0639 CPC R3,R25
484 064A CPC R4,R26
485 065B CPC R5,R27
486 F08C BLT 0x0498
(0320) {
(0321) model = 0;
487 2422 CLR R2
488 9220 007D STS model,R2
(0322) count_2 = 0;
48A E080 LDI R24,0
48B E090 LDI R25,0
48C E0A0 LDI R26,0
48D E0B0 LDI R27,0
48E 9390 0084 STS count_2+1,R25
490 9380 0083 STS count_2,R24
492 93B0 0086 STS count_2+3,R27
494 93A0 0085 STS count_2+2,R26
(0323) flag_zhangai = 0;
496 9220 008B STS flag_zhangai,R2
(0324) }
(0325) }
(0326) }
(0327) }
(0328) }
(0329)
(0330) if( model == 3 ) //右边有障碍
498 9180 007D LDS R24,model
49A 3083 CPI R24,3
49B F009 BEQ 0x049D
49C C09B RJMP 0x0538
(0331) {
(0332) model_a = model;
49D 2E28 MOV R2,R24
49E 9220 007E STS model_a,R2
(0333) flag_zhangai = 1;
4A0 E081 LDI R24,1
4A1 9380 008B STS flag_zhangai,R24
(0334) turn_l();
4A3 DBD7 RCALL _turn_l
(0335) if( int_scan() == 0 )
4A4 DE6A RCALL _int_scan
4A5 2EA0 MOV R10,R16
4A6 2300 TST R16
4A7 F009 BEQ 0x04A9
4A8 C08F RJMP 0x0538
(0336) {
(0337) if( ++count_3 >= 100 )
4A9 E081 LDI R24,1
4AA E090 LDI R25,0
4AB E0A0 LDI R26,0
4AC E0B0 LDI R27,0
4AD 9040 0089 LDS R4,count_3+2
4AF 9050 008A LDS R5,count_3+3
4B1 9020 0087 LDS R2,count_3
4B3 9030 0088 LDS R3,count_3+1
4B5 0E28 ADD R2,R24
4B6 1E39 ADC R3,R25
4B7 1E4A ADC R4,R26
4B8 1E5B ADC R5,R27
4B9 8228 STD Y+0,R2
4BA 8239 STD Y+1,R3
4BB 824A STD Y+2,R4
4BC 825B STD Y+3,R5
4BD 8028 LDD R2,Y+0
4BE 8039 LDD R3,Y+1
4BF 804A LDD R4,Y+2
4C0 805B LDD R5,Y+3
4C1 9230 0088 STS count_3+1,R3
4C3 9220 0087 STS count_3,R2
4C5 9250 008A STS count_3+3,R5
4C7 9240 0089 STS count_3+2,R4
4C9 E684 LDI R24,0x64
4CA E090 LDI R25,0
4CB E0A0 LDI R26,0
4CC E0B0 LDI R27,0
4CD 1628 CP R2,R24
4CE 0639 CPC R3,R25
4CF 064A CPC R4,R26
4D0 065B CPC R5,R27
4D1 F40C BGE 0x04D3
4D2 C065 RJMP 0x0538
(0338) {
(0339) go_ahead();
4D3 DB99 RCALL _go_ahead
(0340) if( ++count_3 >= 250 )
4D4 E081 LDI R24,1
4D5 E090 LDI R25,0
4D6 E0A0 LDI R26,0
4D7 E0B0 LDI R27,0
4D8 9040 0089 LDS R4,count_3+2
4DA 9050 008A LDS R5,count_3+3
4DC 9020 0087 LDS R2,count_3
4DE 9030 0088 LDS R3,count_3+1
4E0 0E28 ADD R2,R24
4E1 1E39 ADC R3,R25
4E2 1E4A ADC R4,R26
4E3 1E5B ADC R5,R27
4E4 822C STD Y+4,R2
4E5 823D STD Y+5,R3
4E6 824E STD Y+6,R4
4E7 825F STD Y+7,R5
4E8 802C LDD R2,Y+4
4E9 803D LDD R3,Y+5
4EA 804E LDD R4,Y+6
4EB 805F LDD R5,Y+7
4EC 9230 0088 STS count_3+1,R3
4EE 9220 0087 STS count_3,R2
4F0 9250 008A STS count_3+3,R5
4F2 9240 0089 STS count_3+2,R4
4F4 EF8A LDI R24,0xFA
4F5 E090 LDI R25,0
4F6 E0A0 LDI R26,0
4F7 E0B0 LDI R27,0
4F8 1628 CP R2,R24
4F9 0639 CPC R3,R25
4FA 064A CPC R4,R26
4FB 065B CPC R5,R27
4FC F1DC BLT 0x0538
(0341) {
(0342) turn_r();
4FD DB84 RCALL _turn_r
(0343) if( ++count_3 >= 350 )
4FE E081 LDI R24,1
4FF E090 LDI R25,0
500 E0A0 LDI R26,0
501 E0B0 LDI R27,0
502 9040 0089 LDS R4,count_3+2
504 9050 008A LDS R5,count_3+3
506 9020 0087 LDS R2,count_3
508 9030 0088 LDS R3,count_3+1
50A 0E28 ADD R2,R24
50B 1E39 ADC R3,R25
50C 1E4A ADC R4,R26
50D 1E5B ADC R5,R27
50E 8628 STD Y+8,R2
50F 8639 STD Y+9,R3
510 864A STD Y+10,R4
511 865B STD Y+11,R5
512 8428 LDD R2,Y+8
513 8439 LDD R3,Y+9
514 844A LDD R4,Y+10
515 845B LDD R5,Y+11
516 9230 0088 STS count_3+1,R3
518 9220 0087 STS count_3,R2
51A 9250 008A STS count_3+3,R5
51C 9240 0089 STS count_3+2,R4
51E E58E LDI R24,0x5E
51F E091 LDI R25,1
520 E0A0 LDI R26,0
521 E0B0 LDI R27,0
522 1628 CP R2,R24
523 0639 CPC R3,R25
524 064A CPC R4,R26
525 065B CPC R5,R27
526 F08C BLT 0x0538
(0344) {
(0345) model = 0;
527 2422 CLR R2
528 9220 007D STS model,R2
(0346) count_3 = 0;
52A E080 LDI R24,0
52B E090 LDI R25,0
52C E0A0 LDI R26,0
52D E0B0 LDI R27,0
52E 9390 0088 STS count_3+1,R25
530 9380 0087 STS count_3,R24
532 93B0 008A STS count_3+3,R27
534 93A0 0089 STS count_3+2,R26
(0347) flag_zhangai = 0;
536 9220 008B STS flag_zhangai,R2
(0348) }
(0349) }
(0350) }
(0351) }
(0352) }
538 962C ADIW R28,0xC
539 90B9 LD R11,Y+
53A 90A9 LD R10,Y+
53B 9009 LD R0,Y+
53C BE0F OUT 0x3F,R0
53D 91F9 LD R31,Y+
53E 91E9 LD R30,Y+
53F 91B9 LD R27,Y+
540 91A9 LD R26,Y+
541 9199 LD R25,Y+
542 9189 LD R24,Y+
543 9139 LD R19,Y+
544 9129 LD R18,Y+
545 9119 LD R17,Y+
546 9109 LD R16,Y+
547 9099 LD R9,Y+
548 9089 LD R8,Y+
549 9079 LD R7,Y+
54A 9069 LD R6,Y+
54B 9059 LD R5,Y+
54C 9049 LD R4,Y+
54D 9039 LD R3,Y+
54E 9029 LD R2,Y+
54F 9019 LD R1,Y+
550 9009 LD R0,Y+
551 9518 RETI
(0353)
(0354) //time_on();
(0355)
(0356) //SEI();
(0357) }
(0358)
(0359)
(0360) //***************避障部分结束*******************
(0361)
(0362) //call this routine to initialize all peripherals
(0363) void init_devices(void)
(0364) {
(0365) //stop errant interrupts until set up
(0366) CLI(); //disable all interrupts
_init_devices:
552 94F8 BCLR 7
(0367)
(0368) //LCD_init();
(0369) L298_port_init(); //L298端口初始化
553 DB15 RCALL _L298_port_init
(0370) hw_port_init(); //红外感应端口初始化
554 DDB5 RCALL _hw_port_init
(0371) timer0_init(); //定时器0初始化
555 DDAB RCALL _timer0_init
(0372)
(0373) ADC_REG_init();
556 DC84 RCALL _ADC_REG_init
(0374) ADC_port_init();
557 DC6E RCALL _ADC_port_init
(0375)
(0376) DDRD &=~ ( 1 << PD2 ); //int0中断初始化 用于充电
558 988A CBI 0x11,2
(0377) PORTD |= ( 1 << PD2 );
559 9A92 SBI 0x12,2
(0378)
(0379) MCUCR = 0x00;
55A 2422 CLR R2
55B BE25 OUT 0x35,R2
(0380) GICR = 0x40; //INT0开启
55C E480 LDI R24,0x40
55D BF8B OUT 0x3B,R24
(0381) TIMSK = 0x02; //timer interrupt sources
55E E082 LDI R24,2
55F BF89 OUT 0x39,R24
(0382) //LCD_write_string( 1, 2, "car test...." );
(0383) SEI(); //re-enable interrupts
560 9478 BSET 7
561 9508 RET
_int0_isr:
562 920A ST R0,-Y
563 921A ST R1,-Y
564 922A ST R2,-Y
565 923A ST R3,-Y
566 924A ST R4,-Y
567 925A ST R5,-Y
568 926A ST R6,-Y
569 927A ST R7,-Y
56A 928A ST R8,-Y
56B 929A ST R9,-Y
56C 930A ST R16,-Y
56D 931A ST R17,-Y
56E 932A ST R18,-Y
56F 933A ST R19,-Y
570 938A ST R24,-Y
571 939A ST R25,-Y
572 93AA ST R26,-Y
573 93BA ST R27,-Y
574 93EA ST R30,-Y
575 93FA ST R31,-Y
576 B60F IN R0,0x3F
577 920A ST R0,-Y
(0384) //all peripherals are now initialized
(0385) }
(0386) ////////////////////////////////////////////
(0387) //取电中断
(0388) #pragma interrupt_handler int0_isr:iv_INT0
(0389) void int0_isr(void)
(0390) {
(0391) //external interupt on INT0
(0392) CLI();
578 94F8 BCLR 7
(0393) car_stop();
579 DB0F RCALL _car_stop
(0394) delay_ns( 20 );
57A E104 LDI R16,0x14
57B 940E 05D2 CALL _delay_ns
(0395) go_back();
57D DAF6 RCALL _go_back
(0396) delay_ns( 10 );
57E E00A LDI R16,0xA
57F 940E 05D2 CALL _delay_ns
(0397) SEI();
581 9478 BSET 7
582 9009 LD R0,Y+
583 BE0F OUT 0x3F,R0
584 91F9 LD R31,Y+
585 91E9 LD R30,Y+
586 91B9 LD R27,Y+
587 91A9 LD R26,Y+
588 9199 LD R25,Y+
589 9189 LD R24,Y+
58A 9139 LD R19,Y+
58B 9129 LD R18,Y+
58C 9119 LD R17,Y+
58D 9109 LD R16,Y+
58E 9099 LD R9,Y+
58F 9089 LD R8,Y+
590 9079 LD R7,Y+
591 9069 LD R6,Y+
592 9059 LD R5,Y+
593 9049 LD R4,Y+
594 9039 LD R3,Y+
595 9029 LD R2,Y+
596 9019 LD R1,Y+
597 9009 LD R0,Y+
598 9518 RETI
(0398) }
(0399)
(0400) void main( void )
(0401) {
(0402) init_devices();
_main:
599 DFB8 RCALL _init_devices
59A C003 RJMP 0x059E
(0403)
(0404) while( 1 )
(0405) {
(0406) model = int_scan();
59B DD73 RCALL _int_scan
59C 9300 007D STS model,R16
59E CFFC RJMP 0x059B
59F 9508 RET
FILE: C:\DOCUME~1\Administrator\桌面\自动充电小车\自动充电小车\298\delay.c
(0001) #define _DELAY_C_
(0002) #include "DELAY.H" //用户自己定义的头文件
(0003)
(0004) //1us延时函数
(0005) void delay_1us( void )
(0006) {
(0007) uint i = 1;
_delay_1us:
i --> R16
5A0 E001 LDI R16,1
5A1 E010 LDI R17,0
5A2 C001 RJMP 0x05A4
(0008) while( i-- )
(0009) {
(0010) asm("nop");
5A3 0000 NOP
5A4 0118 MOVW R2,R16
5A5 5001 SUBI R16,1
5A6 4010 SBCI R17,0
5A7 2022 TST R2
5A8 F7D1 BNE 0x05A3
5A9 2033 TST R3
5AA F7C1 BNE 0x05A3
5AB 9508 RET
_delay_nus:
i --> R20
n --> R10
5AC 940E 090A CALL push_xgset300C
5AE 0158 MOVW R10,R16
(0011) }
(0012) }
(0013)
(0014) //nus延时函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -