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

📄 robbot.lis

📁 寻迹机器人设计开发环境为ICC,可以编译成汇编,直接下栽到嵌入式avr单片机进行控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 05D4 11F1              breq L78
 05D6 4530              cpi R20,5
 05D8 E0E0              ldi R30,0
 05DA 5E07              cpc R21,R30
 05DC 09F1              breq L79
 05DE 4630              cpi R20,6
 05E0 E0E0              ldi R30,0
 05E2 5E07              cpc R21,R30
 05E4 F9F0              breq L80
 05E6 4830              cpi R20,8
 05E8 E0E0              ldi R30,0
 05EA 5E07              cpc R21,R30
 05EC E9F0              breq L81
 05EE 4930              cpi R20,9
 05F0 E0E0              ldi R30,0
 05F2 5E07              cpc R21,R30
 05F4 E1F0              breq L82
 05F6 4A30              cpi R20,10
 05F8 E0E0              ldi R30,0
 05FA 5E07              cpc R21,R30
 05FC D1F0              breq L83
 05FE 4F30              cpi R20,15
 0600 E0E0              ldi R30,0
 0602 5E07              cpc R21,R30
 0604 C1F0              breq L84
 0606 18C0              rjmp L72
 0608           X5:
 0608                   .dbline 228
 0608           L75:
 0608                   .dbline 228
 0608           ;   {case 0x00:    discrepancy=forflag;    break;  //0000b
 0608 40910200          lds R20,_forflag
 060C                   .dbline 228
 060C 15C0              rjmp L73
 060E           L76:
 060E                   .dbline 229
 060E           ;    case 0x01:    discrepancy=Talone();   break;  //0001b
 060E 29DF              rcall _Talone
 0610 402F              mov R20,R16
 0612                   .dbline 229
 0612 12C0              rjmp L73
 0614           L77:
 0614                   .dbline 230
 0614           ;    case 0x02:    discrepancy=FUalone();  break;  //0010b
 0614 2EDF              rcall _FUalone
 0616 402F              mov R20,R16
 0618                   .dbline 230
 0618 0FC0              rjmp L73
 061A           L78:
 061A                   .dbline 231
 061A           ;    case 0x04:    discrepancy=FIalone();  break;  //0100b
 061A 33DF              rcall _FIalone
 061C 402F              mov R20,R16
 061E                   .dbline 231
 061E 0CC0              rjmp L73
 0620           L79:
 0620                   .dbline 232
 0620           ;    case 0x05:    discrepancy=0;          break;  //0101b
 0620 4427              clr R20
 0622                   .dbline 232
 0622 0AC0              rjmp L73
 0624           L80:
 0624                   .dbline 233
 0624           ;    case 0x06:    discrepancy=0;          break;  //0110b
 0624 4427              clr R20
 0626                   .dbline 233
 0626 08C0              rjmp L73
 0628           L81:
 0628                   .dbline 234
 0628           ;    case 0x08:    discrepancy=Salone();   break;  //1000b
 0628 34DF              rcall _Salone
 062A 402F              mov R20,R16
 062C                   .dbline 234
 062C 05C0              rjmp L73
 062E           L82:
 062E                   .dbline 235
 062E           ;    case 0x09:    discrepancy=0;          break;  //1001b
 062E 4427              clr R20
 0630                   .dbline 235
 0630 03C0              rjmp L73
 0632           L83:
 0632                   .dbline 236
 0632           ;    case 0x0A:    discrepancy=0;          break;  //1010b
 0632 4427              clr R20
 0634                   .dbline 236
 0634 01C0              rjmp L73
 0636           L84:
 0636                   .dbline 237
 0636           ;    case 0x0F:    discrepancy=0;          break;  //1111b
 0636 4427              clr R20
 0638                   .dbline 237
 0638           L72:
 0638           L73:
 0638                   .dbline 239
 0638           ;   }
 0638           ;   return(discrepancy);
 0638 042F              mov R16,R20
 063A                   .dbline -2
 063A           L71:
 063A 00D0              rcall pop_gset1
 063C                   .dbline 0 ; func end
 063C 0895              ret
 063E                   .dbsym r discrepancy 20 c
 063E                   .dbsym r l2 20 c
 063E                   .dbend
 063E                   .dbfunc e Revise _Revise fV
 063E           ;    discrepancy -> R20
                        .even
 063E           _Revise::
 063E 00D0              rcall push_gset1
 0640 402F              mov R20,R16
 0642                   .dbline -1
 0642                   .dbline 244
 0642           ; }  
 0642           ; 
 0642           ; //***************************校偏函数********************************//
 0642           ; void Revise(char discrepancy)
 0642           ; {if(discrepancy==0)
 0642                   .dbline 244
 0642 4423              tst R20
 0644 61F4              brne L86
 0646                   .dbline 245
 0646           ;   {forflag=0;
 0646                   .dbline 245
 0646 2224              clr R2
 0648 20920200          sts _forflag,R2
 064C                   .dbline 246
 064C           ;    if(fob==1)
 064C 80911A00          lds R24,_fob
 0650 8130              cpi R24,1
 0652 11F4              brne L88
 0654                   .dbline 247
 0654           ;       {PORTB=0x00;
 0654                   .dbline 247
 0654 28BA              out 0x18,R2
 0656                   .dbline 248
 0656           ;    return;}
 0656 2CC0              rjmp L85
 0658           L88:
 0658                   .dbline 249
 0658           ;    PORTB=0x0C;
 0658 8CE0              ldi R24,12
 065A 88BB              out 0x18,R24
 065C                   .dbline 250
 065C           ;    return;}
 065C 29C0              rjmp L85
 065E           L86:
 065E                   .dbline 251
 065E           ;  if(discrepancy==1)
 065E 4130              cpi R20,1
 0660 59F4              brne L90
 0662                   .dbline 252
 0662           ;   {PORTB=0x08;               //A为左边电机
 0662                   .dbline 252
 0662 88E0              ldi R24,8
 0664 88BB              out 0x18,R24
 0666                   .dbline 253
 0666           ;    delay(0x0100);
 0666 00E0              ldi R16,256
 0668 11E0              ldi R17,1
 066A 00DD              rcall _delay
 066C                   .dbline 254
 066C           ;    PORTB=0x0C;
 066C 8CE0              ldi R24,12
 066E 88BB              out 0x18,R24
 0670                   .dbline 255
 0670           ;    forflag=1;
 0670 81E0              ldi R24,1
 0672 80930200          sts _forflag,R24
 0676                   .dbline 256
 0676           ;    return;}
 0676 1CC0              rjmp L85
 0678           L90:
 0678                   .dbline 257
 0678           ;   if(discrepancy==2)         //B为右边电机
 0678 4230              cpi R20,2
 067A 59F4              brne L92
 067C                   .dbline 258
 067C           ;    {forflag=2;
 067C                   .dbline 258
 067C 82E0              ldi R24,2
 067E 80930200          sts _forflag,R24
 0682                   .dbline 259
 0682           ;     PORTB=0x04;
 0682 84E0              ldi R24,4
 0684 88BB              out 0x18,R24
 0686                   .dbline 260
 0686           ;     delay(0x0100);
 0686 00E0              ldi R16,256
 0688 11E0              ldi R17,1
 068A F0DC              rcall _delay
 068C                   .dbline 261
 068C           ;     PORTB=0x0C;
 068C 8CE0              ldi R24,12
 068E 88BB              out 0x18,R24
 0690                   .dbline 262
 0690           ;     return;}
 0690 0FC0              rjmp L85
 0692           L92:
 0692                   .dbline 263
 0692           ;   if(discrepancy==3)
 0692 4330              cpi R20,3
 0694 31F4              brne L94
 0696                   .dbline 264
 0696           ;    {PORTB=0x08;              //A为左边电机
 0696                   .dbline 264
 0696 88E0              ldi R24,8
 0698 88BB              out 0x18,R24
 069A                   .dbline 265
 069A           ;       forflag=1;
 069A 81E0              ldi R24,1
 069C 80930200          sts _forflag,R24
 06A0                   .dbline 266
 06A0           ;     return;}
 06A0 07C0              rjmp L85
 06A2           L94:
 06A2                   .dbline 267
 06A2 4430              cpi R20,4
 06A4 29F4              brne L96
 06A6                   .dbline 268
 06A6                   .dbline 268
 06A6 82E0              ldi R24,2
 06A8 80930200          sts _forflag,R24
 06AC                   .dbline 269
 06AC 84E0              ldi R24,4
 06AE 88BB              out 0x18,R24
 06B0                   .dbline 270
 06B0           L96:
 06B0                   .dbline -2
 06B0                   .dbline 271
 06B0           ;   if(discrepancy==4)
 06B0           ;    {forflag=2;
 06B0           ;     PORTB=0x04;
 06B0           ;     return;}
 06B0           ; }
 06B0           L85:
 06B0 00D0              rcall pop_gset1
 06B2                   .dbline 0 ; func end
 06B2 0895              ret
 06B4                   .dbsym r discrepancy 20 c
 06B4                   .dbend
 06B4                   .dbfunc e SearchLine _SearchLine fV
 06B4           ;              y -> R10
 06B4           ;         online -> R20
 06B4           ;            l78 -> R22
                        .even
 06B4           _SearchLine::
 06B4 00D0              rcall push_gset3
 06B6                   .dbline -1
 06B6                   .dbline 275
 06B6           ; 
 06B6           ; //***************************寻线函数********************************//
 06B6           ; void SearchLine()           
 06B6           ; {char online;               //测点状态寄存器
 06B6                   .dbline 277
 06B6           ;  char l78;                  //7,8号测点状态寄存器
 06B6           ;  char y=0;
 06B6 AA24              clr R10
 06B8                   .dbline 278
 06B8           ;  online=PINA^0xFF;
 06B8 8FEF              ldi R24,255
 06BA 90E0              ldi R25,0
 06BC 49B3              in R20,0x19
 06BE 5527              clr R21
 06C0 4827              eor R20,R24
 06C2 5927              eor R21,R25
 06C4                   .dbline 279
 06C4           ;  forlight=online;
 06C4 40930800          sts _forlight,R20
 06C8                   .dbline 280
 06C8           ;  l78=online&0xC0;    
 06C8 642F              mov R22,R20
 06CA 607C              andi R22,192
 06CC                   .dbline 281
 06CC           ;  l78=l78>>6;
 06CC 6695              lsr R22
 06CE 6695              lsr R22
 06D0 6695              lsr R22
 06D2 6695              lsr R22
 06D4 6695              lsr R22
 06D6 6695              lsr R22
 06D8                   .dbline 282
 06D8           ;  if(l78==0x03)               //7,8同时亮无偏
 06D8 6330              cpi R22,3
 06DA 11F4              brne L99
 06DC                   .dbline 283
 06DC           ;     Revise(0);
 06DC 0027              clr R16
 06DE AFDF              rcall _Revise
 06E0           L99:
 06E0                   .dbline 284
 06E0           ;  if((online&0x0D)==0x0D)     //1,3,4都亮,直走
 06E0 842F              mov R24,R20
 06E2 8D70              andi R24,13
 06E4 8D30              cpi R24,13
 06E6 21F4              brne L101
 06E8                   .dbline 285
 06E8           ;   {Revise(0);                //校偏函数
 06E8                   .dbline 285
 06E8 0027              clr R16
 06EA A9DF              rcall _Revise
 06EC                   .dbline 286
 06EC           ;    y=1;}
 06EC AA24              clr R10
 06EE A394              inc R10
 06F0                   .dbline 286
 06F0           L101:
 06F0                   .dbline 287
 06F0           ;   if(y==0)
 06F0 AA20              tst R10
 06F2 B9F4              brne L103
 06F4                   .dbline 288
 06F4           ;    {if(l78==0x01)
 06F4                   .dbline 288
 06F4 6130              cpi R22,1
 06F6 11F4              brne L105
 06F8                   .dbline 289
 06F8           ;       Revise(3);             //3为大右偏
 06F8 03E0              ldi R16,3
 06FA A1DF              rcall _Revise
 06FC           L105:
 06FC                   .dbline 290
 06FC           ;     if(l78==0x02)
 06FC 6230              cpi R22,2
 06FE 11F4              brne L107
 0700                   .dbline 291
 0700           ;       Revise(4);             //4为大左偏
 0700 04E0              ldi R16,4
 0702 9DDF              rcall _Revise
 0704           L107:
 0704                   .dbline 292
 0704           ;     if(l78==0x00)
 0704 6623              tst R22
 0706 69F4              brne L109
 0708                   .dbline 293
 0708           ;      {online=0x03&online;

⌨️ 快捷键说明

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