📄 jidong.lis
字号:
054C ; }
054C ;
054C ; //红外返回值
054C ; uchar int_scan( void ) //判断障碍,并执行相应动作
054C ; {
054C .dbline 260
054C ; switch( PINC & 0b00000011 )
054C 03B3 in R16,0x13
054E 1127 clr R17
0550 0370 andi R16,3
0552 1070 andi R17,0
0554 0030 cpi R16,0
0556 0107 cpc R16,R17
0558 49F0 breq L69
055A X22:
055A 0130 cpi R16,1
055C E0E0 ldi R30,0
055E 1E07 cpc R17,R30
0560 79F0 breq L71
0562 X23:
0562 0230 cpi R16,2
0564 E0E0 ldi R30,0
0566 1E07 cpc R17,R30
0568 31F0 breq L70
056A X24:
056A 0FC0 xjmp L66
056C L69:
056C .dbline 262
056C ; {
056C ; case 0b00000000: model = 1; return 1; break; //左右同时遇到障碍
056C 81E0 ldi R24,1
056E 80931D00 sts _model,R24
0572 .dbline 262
0572 01E0 ldi R16,1
0574 0EC0 xjmp L65
0576 L70:
0576 .dbline 263
0576 ; case 0b00000010: model = 2; return 2; break; //左遇到障碍
0576 82E0 ldi R24,2
0578 80931D00 sts _model,R24
057C .dbline 263
057C 02E0 ldi R16,2
057E 09C0 xjmp L65
0580 L71:
0580 .dbline 264
0580 ; case 0b00000001: model = 3; return 3; break; //右遇到障碍
0580 83E0 ldi R24,3
0582 80931D00 sts _model,R24
0586 .dbline 264
0586 03E0 ldi R16,3
0588 04C0 xjmp L65
058A L66:
058A .dbline 265
058A ; default : model = 0; return 0; break; //没有遇到障碍
058A 2224 clr R2
058C 20921D00 sts _model,R2
0590 .dbline 265
0590 0027 clr R16
0592 .dbline 265
0592 .dbline -2
0592 L65:
0592 .dbline 0 ; func end
0592 0895 ret
0594 .dbend
.area vector(rom, abs)
.org 76
004C 0C94CA02 jmp _timer0_comp_isr
.area text(rom, con, rel)
0594 .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
0594 .dbfunc e timer0_comp_isr _timer0_comp_isr fV
.even
0594 _timer0_comp_isr::
0594 0A92 st -y,R0
0596 1A92 st -y,R1
0598 2A92 st -y,R2
059A 3A92 st -y,R3
059C 4A92 st -y,R4
059E 5A92 st -y,R5
05A0 6A92 st -y,R6
05A2 7A92 st -y,R7
05A4 8A92 st -y,R8
05A6 9A92 st -y,R9
05A8 0A93 st -y,R16
05AA 1A93 st -y,R17
05AC 2A93 st -y,R18
05AE 3A93 st -y,R19
05B0 8A93 st -y,R24
05B2 9A93 st -y,R25
05B4 AA93 st -y,R26
05B6 BA93 st -y,R27
05B8 EA93 st -y,R30
05BA FA93 st -y,R31
05BC 0FB6 in R0,0x3f
05BE 0A92 st -y,R0
05C0 AA92 st -y,R10
05C2 BA92 st -y,R11
05C4 2C97 sbiw R28,12
05C6 .dbline -1
05C6 .dbline 272
05C6 ; }
05C6 ; }
05C6 ;
05C6 ;
05C6 ; #pragma interrupt_handler timer0_comp_isr:iv_TIM0_COMP
05C6 ; void timer0_comp_isr(void) // CTC模式, 比较匹配中断服务程序
05C6 ; {
05C6 .dbline 276
05C6 ; //CLI();
05C6 ; //time_off();
05C6 ;
05C6 ; if( model == 0 ) //如果没有障碍返回值,刚继续前一动作
05C6 20901D00 lds R2,_model
05CA 2220 tst R2
05CC 51F4 brne L73
05CE X25:
05CE .dbline 277
05CE ; {
05CE .dbline 278
05CE ; if( flag_zhangai == 1 ) model = model_a;
05CE 80910000 lds R24,_flag_zhangai
05D2 8130 cpi R24,1
05D4 29F4 brne L75
05D6 X26:
05D6 .dbline 278
05D6 20901E00 lds R2,_model_a
05DA 20921D00 sts _model,R2
05DE 01C0 xjmp L76
05E0 L75:
05E0 .dbline 279
05E0 ; else ADC_start();
05E0 66DE xcall _ADC_start
05E2 L76:
05E2 .dbline 280
05E2 ; }
05E2 L73:
05E2 .dbline 282
05E2 ;
05E2 ; if( model == 1 ) //左方右方有障碍, 即是前方有障碍
05E2 80911D00 lds R24,_model
05E6 8130 cpi R24,1
05E8 09F0 breq X42
05EA 9AC0 xjmp L77
05EC X42:
05EC X27:
05EC .dbline 283
05EC ; {
05EC .dbline 284
05EC ; model_a = model;
05EC 282E mov R2,R24
05EE 20921E00 sts _model_a,R2
05F2 .dbline 285
05F2 ; flag_zhangai = 1;
05F2 81E0 ldi R24,1
05F4 80930000 sts _flag_zhangai,R24
05F8 .dbline 286
05F8 ; turn_r();
05F8 1CDD xcall _turn_r
05FA .dbline 287
05FA ; if( int_scan() == 0 )
05FA A8DF xcall _int_scan
05FC 0023 tst R16
05FE 09F0 breq X43
0600 8FC0 xjmp L79
0602 X43:
0602 X28:
0602 .dbline 288
0602 ; {
0602 .dbline 289
0602 ; if( ++count_1 >= 100 )
0602 81E0 ldi R24,1
0604 90E0 ldi R25,0
0606 A0E0 ldi R26,0
0608 B0E0 ldi R27,0
060A 40902100 lds R4,_count_1+2
060E 50902200 lds R5,_count_1+2+1
0612 20901F00 lds R2,_count_1
0616 30902000 lds R3,_count_1+1
061A 280E add R2,R24
061C 391E adc R3,R25
061E 4A1E adc R4,R26
0620 5B1E adc R5,R27
0622 2882 std y+0,R2
0624 3982 std y+1,R3
0626 4A82 std y+2,R4
0628 5B82 std y+3,R5
062A 2880 ldd R2,y+0
062C 3980 ldd R3,y+1
062E 4A80 ldd R4,y+2
0630 5B80 ldd R5,y+3
0632 30922000 sts _count_1+1,R3
0636 20921F00 sts _count_1,R2
063A 50922200 sts _count_1+2+1,R5
063E 40922100 sts _count_1+2,R4
0642 84E6 ldi R24,100
0644 90E0 ldi R25,0
0646 A0E0 ldi R26,0
0648 B0E0 ldi R27,0
064A 2816 cp R2,R24
064C 3906 cpc R3,R25
064E 4A06 cpc R4,R26
0650 5B06 cpc R5,R27
0652 0CF4 brge X44
0654 65C0 xjmp L81
0656 X44:
0656 X29:
0656 .dbline 290
0656 ; {
0656 .dbline 291
0656 ; go_ahead();
0656 D8DC xcall _go_ahead
0658 .dbline 292
0658 ; if( ++count_1 >= 250 )
0658 81E0 ldi R24,1
065A 90E0 ldi R25,0
065C A0E0 ldi R26,0
065E B0E0 ldi R27,0
0660 40902100 lds R4,_count_1+2
0664 50902200 lds R5,_count_1+2+1
0668 20901F00 lds R2,_count_1
066C 30902000 lds R3,_count_1+1
0670 280E add R2,R24
0672 391E adc R3,R25
0674 4A1E adc R4,R26
0676 5B1E adc R5,R27
0678 2C82 std y+4,R2
067A 3D82 std y+5,R3
067C 4E82 std y+6,R4
067E 5F82 std y+7,R5
0680 2C80 ldd R2,y+4
0682 3D80 ldd R3,y+5
0684 4E80 ldd R4,y+6
0686 5F80 ldd R5,y+7
0688 30922000 sts _count_1+1,R3
068C 20921F00 sts _count_1,R2
0690 50922200 sts _count_1+2+1,R5
0694 40922100 sts _count_1+2,R4
0698 8AEF ldi R24,250
069A 90E0 ldi R25,0
069C A0E0 ldi R26,0
069E B0E0 ldi R27,0
06A0 2816 cp R2,R24
06A2 3906 cpc R3,R25
06A4 4A06 cpc R4,R26
06A6 5B06 cpc R5,R27
06A8 DCF1 brlt L83
06AA X30:
06AA .dbline 293
06AA ; {
06AA .dbline 294
06AA ; turn_l();
06AA BCDC xcall _turn_l
06AC .dbline 295
06AC ; if( ++count_1 >= 350 )
06AC 81E0 ldi R24,1
06AE 90E0 ldi R25,0
06B0 A0E0 ldi R26,0
06B2 B0E0 ldi R27,0
06B4 40902100 lds R4,_count_1+2
06B8 50902200 lds R5,_count_1+2+1
06BC 20901F00 lds R2,_count_1
06C0 30902000 lds R3,_count_1+1
06C4 280E add R2,R24
06C6 391E adc R3,R25
06C8 4A1E adc R4,R26
06CA 5B1E adc R5,R27
06CC 2886 std y+8,R2
06CE 3986 std y+9,R3
06D0 4A86 std y+10,R4
06D2 5B86 std y+11,R5
06D4 2884 ldd R2,y+8
06D6 3984 ldd R3,y+9
06D8 4A84 ldd R4,y+10
06DA 5B84 ldd R5,y+11
06DC 30922000 sts _count_1+1,R3
06E0 20921F00 sts _count_1,R2
06E4 50922200 sts _count_1+2+1,R5
06E8 40922100 sts _count_1+2,R4
06EC 8EE5 ldi R24,94
06EE 91E0 ldi R25,1
06F0 A0E0 ldi R26,0
06F2 B0E0 ldi R27,0
06F4 2816 cp R2,R24
06F6 3906 cpc R3,R25
06F8 4A06 cpc R4,R26
06FA 5B06 cpc R5,R27
06FC 8CF0 brlt L85
06FE X31:
06FE .dbline 296
06FE ; {
06FE .dbline 297
06FE ; model = 0;
06FE 2224 clr R2
0700 20921D00 sts _model,R2
0704 .dbline 298
0704 ; count_1 = 0;
0704 80E0 ldi R24,0
0706 90E0 ldi R25,0
0708 A0E0 ldi R26,0
070A B0E0 ldi R27,0
070C 90932000 sts _count_1+1,R25
0710 80931F00 sts _count_1,R24
0714 B0932200 sts _count_1+2+1,R27
0718 A0932100 sts _count_1+2,R26
071C .dbline 299
071C ; flag_zhangai = 0;
071C 20920000 sts _flag_zhangai,R2
0720 .dbline 300
0720 ; }
0720 L85:
0720 .dbline 301
0720 ; }
0720 L83:
0720 .dbline 302
0720 ; }
0720 L81:
0720 .dbline 303
0720 ; }
0720 L79:
0720 .dbline 304
0720 ; }
0720 L77:
0720 .dbline 306
0720 ;
0720 ; if( model == 2 ) //左边有障碍
0720 80911D00 lds R24,_model
0724 8230 cpi R24,2
0726 09F0 breq X45
0728 9AC0 xjmp L87
072A X45:
072A X32:
072A .dbline 307
072A ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -