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

📄 jidong.lis

📁 基于m16的寻迹寻光小车程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -