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

📄 宝贝机器人.lis

📁 基于atmel公司的mega16单片机做的机器人控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0510           ;               {run();}
 0510                   .dbline 276
 0510 E5DD              xcall _run
 0512                   .dbline 276
 0512 80C0              xjmp L100
 0514           L99:
 0514                   .dbline 277
 0514           ;             else if((interval>419)&&(zhong<left)&&(zhong<right)&&(left>(right+10)))
 0514 83EA              ldi R24,419
 0516 91E0              ldi R25,1
 0518 20900000          lds R2,_interval
 051C 30900100          lds R3,_interval+1
 0520 8215              cp R24,R2
 0522 9305              cpc R25,R3
 0524 E8F4              brsh L105
 0526 20900600          lds R2,_left
 052A 30900700          lds R3,_left+1
 052E 40900200          lds R4,_zhong
 0532 50900300          lds R5,_zhong+1
 0536 4214              cp R4,R2
 0538 5304              cpc R5,R3
 053A 90F4              brsh L105
 053C 20900400          lds R2,_right
 0540 30900500          lds R3,_right+1
 0544 4214              cp R4,R2
 0546 5304              cpc R5,R3
 0548 58F4              brsh L105
 054A C101              movw R24,R2
 054C 0A96              adiw R24,10
 054E 20900600          lds R2,_left
 0552 30900700          lds R3,_left+1
 0556 8215              cp R24,R2
 0558 9305              cpc R25,R3
 055A 10F4              brsh L105
 055C                   .dbline 278
 055C           ;                      {turn_left();}
 055C                   .dbline 278
 055C DFDD              xcall _turn_left
 055E                   .dbline 278
 055E 5AC0              xjmp L106
 0560           L105:
 0560                   .dbline 279
 0560           ;                  else if((interval>419)&&(zhong<left)&&(zhong<right)&&(right>(left+10)))
 0560 83EA              ldi R24,419
 0562 91E0              ldi R25,1
 0564 20900000          lds R2,_interval
 0568 30900100          lds R3,_interval+1
 056C 8215              cp R24,R2
 056E 9305              cpc R25,R3
 0570 E0F4              brsh L107
 0572 20900600          lds R2,_left
 0576 30900700          lds R3,_left+1
 057A 40900200          lds R4,_zhong
 057E 50900300          lds R5,_zhong+1
 0582 4214              cp R4,R2
 0584 5304              cpc R5,R3
 0586 88F4              brsh L107
 0588 20900400          lds R2,_right
 058C 30900500          lds R3,_right+1
 0590 4214              cp R4,R2
 0592 5304              cpc R5,R3
 0594 50F4              brsh L107
 0596 80910600          lds R24,_left
 059A 90910700          lds R25,_left+1
 059E 0A96              adiw R24,10
 05A0 8215              cp R24,R2
 05A2 9305              cpc R25,R3
 05A4 10F4              brsh L107
 05A6                   .dbline 280
 05A6           ;                          {turn_right();}
 05A6                   .dbline 280
 05A6 C4DD              xcall _turn_right
 05A8                   .dbline 280
 05A8 35C0              xjmp L108
 05AA           L107:
 05AA                   .dbline 281
 05AA           ;                   else  if((interval>419)&&(left<zhong)&&(left<right))
 05AA 83EA              ldi R24,419
 05AC 91E0              ldi R25,1
 05AE 20900000          lds R2,_interval
 05B2 30900100          lds R3,_interval+1
 05B6 8215              cp R24,R2
 05B8 9305              cpc R25,R3
 05BA A0F4              brsh L109
 05BC 20900200          lds R2,_zhong
 05C0 30900300          lds R3,_zhong+1
 05C4 40900600          lds R4,_left
 05C8 50900700          lds R5,_left+1
 05CC 4214              cp R4,R2
 05CE 5304              cpc R5,R3
 05D0 48F4              brsh L109
 05D2 20900400          lds R2,_right
 05D6 30900500          lds R3,_right+1
 05DA 4214              cp R4,R2
 05DC 5304              cpc R5,R3
 05DE 10F4              brsh L109
 05E0                   .dbline 282
 05E0           ;                       {turn_right();}
 05E0                   .dbline 282
 05E0 A7DD              xcall _turn_right
 05E2                   .dbline 282
 05E2 18C0              xjmp L110
 05E4           L109:
 05E4                   .dbline 283
 05E4           ;                           else if((interval>419)&&(right<left)&&(right<left))
 05E4 83EA              ldi R24,419
 05E6 91E0              ldi R25,1
 05E8 20900000          lds R2,_interval
 05EC 30900100          lds R3,_interval+1
 05F0 8215              cp R24,R2
 05F2 9305              cpc R25,R3
 05F4 78F4              brsh L111
 05F6 20900600          lds R2,_left
 05FA 30900700          lds R3,_left+1
 05FE 40900400          lds R4,_right
 0602 50900500          lds R5,_right+1
 0606 4214              cp R4,R2
 0608 5304              cpc R5,R3
 060A 20F4              brsh L111
 060C 4214              cp R4,R2
 060E 5304              cpc R5,R3
 0610 08F4              brsh L111
 0612                   .dbline 284
 0612           ;                                 {turn_left();} 
 0612                   .dbline 284
 0612 84DD              xcall _turn_left
 0614                   .dbline 284
 0614           L111:
 0614           L110:
 0614           L108:
 0614           L106:
 0614           L100:
 0614                   .dbline 285
 0614           ; delay_ms(100);
 0614 04E6              ldi R16,100
 0616 10E0              ldi R17,0
 0618 FBDC              xcall _delay_ms
 061A                   .dbline -2
 061A           L78:
 061A 0E940000          xcall pop_gset2
 061E                   .dbline 0 ; func end
 061E 0895              ret
 0620                   .dbsym r adc 20 c
 0620                   .dbend
 0620                   .dbfunc e time_inite _time_inite fV
                        .even
 0620           _time_inite::
 0620                   .dbline -1
 0620                   .dbline 292
 0620           ; }
 0620           ; ////////////////////探测光源函数///////////////////////////////////
 0620           ; 
 0620           ; 
 0620           ; ///////////////计时中断函数/////////////////////////////////////////
 0620           ; void time_inite(void)
 0620           ; {
 0620                   .dbline 293
 0620           ; TCCR2|= 0x07;//分频比1024
 0620 85B5              in R24,0x25
 0622 8760              ori R24,7
 0624 85BD              out 0x25,R24
 0626                   .dbline 294
 0626           ;  mini=0;
 0626 2224              clr R2
 0628 20920900          sts _mini,R2
 062C                   .dbline 295
 062C           ;  second=0;
 062C 20920A00          sts _second,R2
 0630                   .dbline 296
 0630           ;  minisecond=0;
 0630 20920800          sts _minisecond,R2
 0634                   .dbline -2
 0634           L113:
 0634                   .dbline 0 ; func end
 0634 0895              ret
 0636                   .dbend
                        .area vector(rom, abs)
                        .org 16
 0010 0C941B03          jmp _time2_isr
                        .area text(rom, con, rel)
 0636                   .dbfile C:\DOCUME~1\eda\桌面\宝贝机器人.c
 0636                   .dbfunc e time2_isr _time2_isr fV
                        .even
 0636           _time2_isr::
 0636 0E940000          xcall push_lset
 063A 2397              sbiw R28,3
 063C                   .dbline -1
 063C                   .dbline 301
 063C           ; }
 063C           ; 
 063C           ; #pragma interrupt_handler  time2_isr:5
 063C           ; void   time2_isr(void)
 063C           ;  {
 063C                   .dbline 302
 063C           ;  TCNT2=0xb2;
 063C 82EB              ldi R24,178
 063E 84BD              out 0x24,R24
 0640                   .dbline 303
 0640           ;  minisecond++;
 0640 80910800          lds R24,_minisecond
 0644 8F5F              subi R24,255    ; addi 1
 0646 80930800          sts _minisecond,R24
 064A                   .dbline 304
 064A           ;  if (minisecond<100)//计算总时间
 064A 8436              cpi R24,100
 064C 08F4              brsh L115
 064E                   .dbline 305
 064E           ;               ;
 064E 17C0              xjmp L116
 0650           L115:
 0650                   .dbline 307
 0650           ;         else
 0650           ;           {
 0650                   .dbline 308
 0650           ;                minisecond=0;
 0650 2224              clr R2
 0652 20920800          sts _minisecond,R2
 0656                   .dbline 309
 0656           ;                if (second<60)
 0656 80910A00          lds R24,_second
 065A 8C33              cpi R24,60
 065C 20F4              brsh L117
 065E                   .dbline 310
 065E           ;                   second++;
 065E 8F5F              subi R24,255    ; addi 1
 0660 80930A00          sts _second,R24
 0664 0CC0              xjmp L118
 0666           L117:
 0666                   .dbline 312
 0666           ;                else  
 0666           ;                   {
 0666                   .dbline 313
 0666           ;                       second=0;
 0666 2224              clr R2
 0668 20920A00          sts _second,R2
 066C                   .dbline 314
 066C           ;                       minute++;
 066C 80910200          lds R24,_minute
 0670 8F5F              subi R24,255    ; addi 1
 0672 80930200          sts _minute,R24
 0676                   .dbline 315
 0676           ;                       if(minute==100)
 0676 8436              cpi R24,100
 0678 11F4              brne L119
 067A                   .dbline 316
 067A           ;                         minute=0;
 067A 20920200          sts _minute,R2
 067E           L119:
 067E                   .dbline 317
 067E           ;             }
 067E           L118:
 067E                   .dbline 318
 067E           ;                }
 067E           L116:
 067E                   .dbline 319
 067E           ;         display_time(10,minute,second,0);
 067E 2224              clr R2
 0680 2A82              std y+2,R2
 0682 20900A00          lds R2,_second
 0686 2882              std y+0,R2
 0688 20910200          lds R18,_minute
 068C 0AE0              ldi R16,10
 068E 5ADD              xcall _display_time
 0690                   .dbline -2
 0690           L114:
 0690 2396              adiw R28,3
 0692 0E940000          xcall pop_lset
 0696                   .dbline 0 ; func end
 0696 1895              reti
 0698                   .dbend
 0698                   .dbfunc e main _main fV
 0698           ;              i -> R20,R21
                        .even
 0698           _main::
 0698                   .dbline -1
 0698                   .dbline 327
 0698           ;   
 0698           ; } 
 0698           ; ///////////////计时中断函数/////////////////////////////////////////
 0698           ; 
 0698           ; 
 0698           ; //////////////主函数///////////////////////////////////////////////
 0698           ; void main(void)
 0698           ; {
 0698                   .dbline 329
 0698           ;  unsigned  int i;  
 0698           ;  MCUCSR|=0x80;//禁止PC5第二功能,使之为普通I/O口
 0698 84B7              in R24,0x34
 069A 8068              ori R24,128
 069C 84BF              out 0x34,R24
 069E                   .dbline 330
 069E           ;  MCUCSR|=0x80;
 069E 84B7              in R24,0x34
 06A0 8068              ori R24,128
 06A2 84BF              out 0x34,R24
 06A4                   .dbline 331
 06A4           ;  DDRD|=0xc0;//PD 6 7控制左右电机
 06A4 81B3              in R24,0x11
 06A6 806C              ori R24,192
 06A8 81BB              out 0x11,R24
 06AA                   .dbline 332
 06AA           ;  DDRC&=0xf8;//PC0 1 2为右中左红外传感器输入
 06AA 84B3              in R24,0x14
 06AC 887F              andi R24,248
 06AE 84BB              out 0x14,R24
 06B0                   .dbline 333
 06B0           ;  DDRC|=0x18;//PC3,4控制显示,PC3传送数据,PC4为时钟信号线
 06B0 84B3              in R24,0x14
 06B2 8861              ori R24,24
 06B4 84BB              out 0x14,R24
 06B6                   .dbline 334
 06B6           ;  PORTC&=0xe7;
 06B6 85B3              in R24,0x15
 06B8 877E              andi R24,231
 06BA 85BB              out 0x15,R24
 06BC                   .dbline 335
 06BC           ;  PORTC&=0xf8;
 06BC 85B3              in R24,0x15
 06BE 887F              andi R24,248
 06C0 85BB              out 0x15,R24
 06C2                   .dbline 336
 06C2           ;  PORTD&=0x3f;
 06C2 82B3              in R24,0x12
 06C4 8F73              andi R24,63
 06C6 82BB              out 0x12,R24
 06C8                   .dbline 337
 06C8           ;  time_inite();
 06C8 ABDF              xcall _time_inite
 06CA                   .dbline 339
 06CA           ;  
 06CA           ;  SEI();
 06CA 7894              sei
 06CC                   .dbline 340
 06CC           ;   TIMSK|=0x40;//开始计时
 06CC 89B7              in R24,0x39
 06CE 8064              ori R24,64
 06D0 89BF              out 0x39,R24
 06D2 2FC0              xjmp L123
 06D4           L122:
 06D4                   .dbline 343
 06D4           ;  //while(1)stop();
 06D4           ;    while(1)
 06D4           ;  {
 06D4                   .dbline 344
 06D4           ;     i++;
 06D4 4F5F              subi R

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -