📄 宝贝机器人.lis
字号:
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 + -