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

📄 robbot.lis

📁 寻迹机器人设计开发环境为ICC,可以编译成汇编,直接下栽到嵌入式avr单片机进行控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0492           ; }
 0492           ; 
 0492           ; //***************************寻线处理函数4***************************//
 0492           ; char Salone()                //6单独亮
 0492           ; {if ((forlight&0x12)==0)
 0492                   .dbline 174
 0492 80910800          lds R24,_forlight
 0496 8271              andi R24,18
 0498 11F4              brne L43
 049A                   .dbline 175
 049A           ;     return(0);
 049A 0027              clr R16
 049C 01C0              rjmp L42
 049E           L43:
 049E                   .dbline 177
 049E           ;  else
 049E           ;     return(2);
 049E 02E0              ldi R16,2
 04A0                   .dbline -2
 04A0           L42:
 04A0                   .dbline 0 ; func end
 04A0 0895              ret
 04A2                   .dbend
 04A2                   .dbfunc e InLine1 _InLine1 fc
 04A2           ;    discrepancy -> R16
 04A2           ;             l2 -> R16
                        .even
 04A2           _InLine1::
 04A2                   .dbline -1
 04A2                   .dbline 182
 04A2           ; }
 04A2           ; 
 04A2           ; //***************************寻线处理函数5****************************//
 04A2           ; char InLine1(void)           //线上偏离判断
 04A2           ; {char discrepancy;           //行进状态
 04A2                   .dbline 184
 04A2           ;  char l2;                    //传感器状态
 04A2           ;  l2=0xFF^PINA;
 04A2 8FEF              ldi R24,255
 04A4 90E0              ldi R25,0
 04A6 09B3              in R16,0x19
 04A8 1127              clr R17
 04AA 0827              eor R16,R24
 04AC 1927              eor R17,R25
 04AE                   .dbline 185
 04AE           ;  l2=0x3C&l2;
 04AE 0C73              andi R16,60
 04B0                   .dbline 186
 04B0           ;  l2=l2>>2;
 04B0 0695              lsr R16
 04B2 0695              lsr R16
 04B4                   .dbline 187
 04B4           ;  switch(l2)                  
 04B4 1127              clr R17
 04B6 0030              cpi R16,0
 04B8 0107              cpc R16,R17
 04BA 09F1              breq L49
 04BC           X0:
 04BC 0130              cpi R16,1
 04BE E0E0              ldi R30,0
 04C0 1E07              cpc R17,R30
 04C2 F9F0              breq L50
 04C4 0230              cpi R16,2
 04C6 E0E0              ldi R30,0
 04C8 1E07              cpc R17,R30
 04CA E9F0              breq L51
 04CC 0430              cpi R16,4
 04CE E0E0              ldi R30,0
 04D0 1E07              cpc R17,R30
 04D2 D9F0              breq L52
 04D4 0530              cpi R16,5
 04D6 E0E0              ldi R30,0
 04D8 1E07              cpc R17,R30
 04DA C9F0              breq L53
 04DC 0630              cpi R16,6
 04DE E0E0              ldi R30,0
 04E0 1E07              cpc R17,R30
 04E2 B9F0              breq L54
 04E4 0830              cpi R16,8
 04E6 E0E0              ldi R30,0
 04E8 1E07              cpc R17,R30
 04EA A9F0              breq L55
 04EC 0930              cpi R16,9
 04EE E0E0              ldi R30,0
 04F0 1E07              cpc R17,R30
 04F2 99F0              breq L56
 04F4 0A30              cpi R16,10
 04F6 E0E0              ldi R30,0
 04F8 1E07              cpc R17,R30
 04FA 89F0              breq L57
 04FC 11C0              rjmp L46
 04FE           X1:
 04FE                   .dbline 188
 04FE           L49:
 04FE                   .dbline 188
 04FE           ;   {case 0x00:    discrepancy=0;   break;         //0000b未偏
 04FE 0027              clr R16
 0500                   .dbline 188
 0500 0FC0              rjmp L47
 0502           L50:
 0502                   .dbline 189
 0502           ;    case 0x01:    discrepancy=0;   break;         
 0502 0027              clr R16
 0504                   .dbline 189
 0504 0DC0              rjmp L47
 0506           L51:
 0506                   .dbline 190
 0506           ;    case 0x02:    discrepancy=0;   break;         
 0506 0027              clr R16
 0508                   .dbline 190
 0508 0BC0              rjmp L47
 050A           L52:
 050A                   .dbline 191
 050A           ;    case 0x04:    discrepancy=2;   break;         //0010b左偏
 050A 02E0              ldi R16,2
 050C                   .dbline 191
 050C 09C0              rjmp L47
 050E           L53:
 050E                   .dbline 192
 050E           ;    case 0x05:    discrepancy=2;   break;        
 050E 02E0              ldi R16,2
 0510                   .dbline 192
 0510 07C0              rjmp L47
 0512           L54:
 0512                   .dbline 193
 0512           ;    case 0x06:    discrepancy=2;   break;        
 0512 02E0              ldi R16,2
 0514                   .dbline 193
 0514 05C0              rjmp L47
 0516           L55:
 0516                   .dbline 194
 0516           ;    case 0x08:    discrepancy=1;   break;         //0001b右偏
 0516 01E0              ldi R16,1
 0518                   .dbline 194
 0518 03C0              rjmp L47
 051A           L56:
 051A                   .dbline 195
 051A           ;    case 0x09:    discrepancy=1;   break;        
 051A 01E0              ldi R16,1
 051C                   .dbline 195
 051C 01C0              rjmp L47
 051E           L57:
 051E                   .dbline 196
 051E           ;    case 0x0A:    discrepancy=1;   break;}
 051E 01E0              ldi R16,1
 0520                   .dbline 196
 0520           L46:
 0520           L47:
 0520                   .dbline 197
 0520           ;  return(discrepancy); 
 0520                   .dbline -2
 0520           L45:
 0520                   .dbline 0 ; func end
 0520 0895              ret
 0522                   .dbsym r discrepancy 16 c
 0522                   .dbsym r l2 16 c
 0522                   .dbend
 0522                   .dbfunc e InLine2 _InLine2 fc
 0522           ;    discrepancy -> R16
 0522           ;             l2 -> R16
                        .even
 0522           _InLine2::
 0522                   .dbline -1
 0522                   .dbline 202
 0522           ; }
 0522           ; 
 0522           ; //***************************寻线处理函数6****************************//
 0522           ; char InLine2(void)            //线上偏离判断
 0522           ; {char discrepancy;
 0522                   .dbline 204
 0522           ;  char l2;
 0522           ;  l2=0xFF^PINA;
 0522 8FEF              ldi R24,255
 0524 90E0              ldi R25,0
 0526 09B3              in R16,0x19
 0528 1127              clr R17
 052A 0827              eor R16,R24
 052C 1927              eor R17,R25
 052E                   .dbline 205
 052E           ;  l2=0x3C&l2;//3,4,5,6灯
 052E 0C73              andi R16,60
 0530                   .dbline 206
 0530           ;  l2=l2>>2;
 0530 0695              lsr R16
 0532 0695              lsr R16
 0534                   .dbline 207
 0534           ;  switch(l2)
 0534 1127              clr R17
 0536 0030              cpi R16,0
 0538 0107              cpc R16,R17
 053A 09F1              breq L62
 053C           X2:
 053C 0130              cpi R16,1
 053E E0E0              ldi R30,0
 0540 1E07              cpc R17,R30
 0542 F9F0              breq L63
 0544 0230              cpi R16,2
 0546 E0E0              ldi R30,0
 0548 1E07              cpc R17,R30
 054A E9F0              breq L64
 054C 0430              cpi R16,4
 054E E0E0              ldi R30,0
 0550 1E07              cpc R17,R30
 0552 D9F0              breq L65
 0554 0530              cpi R16,5
 0556 E0E0              ldi R30,0
 0558 1E07              cpc R17,R30
 055A C9F0              breq L66
 055C 0630              cpi R16,6
 055E E0E0              ldi R30,0
 0560 1E07              cpc R17,R30
 0562 B9F0              breq L67
 0564 0830              cpi R16,8
 0566 E0E0              ldi R30,0
 0568 1E07              cpc R17,R30
 056A A9F0              breq L68
 056C 0930              cpi R16,9
 056E E0E0              ldi R30,0
 0570 1E07              cpc R17,R30
 0572 99F0              breq L69
 0574 0A30              cpi R16,10
 0576 E0E0              ldi R30,0
 0578 1E07              cpc R17,R30
 057A 89F0              breq L70
 057C 11C0              rjmp L59
 057E           X3:
 057E                   .dbline 208
 057E           L62:
 057E                   .dbline 208
 057E           ;   {case 0x00:    discrepancy=0;   break;         //0000b//未偏
 057E 0027              clr R16
 0580                   .dbline 208
 0580 0FC0              rjmp L60
 0582           L63:
 0582                   .dbline 209
 0582           ;    case 0x01:    discrepancy=1;   break;         //0001b右偏
 0582 01E0              ldi R16,1
 0584                   .dbline 209
 0584 0DC0              rjmp L60
 0586           L64:
 0586                   .dbline 210
 0586           ;    case 0x02:    discrepancy=2;   break;         //0010b左偏
 0586 02E0              ldi R16,2
 0588                   .dbline 210
 0588 0BC0              rjmp L60
 058A           L65:
 058A                   .dbline 211
 058A           ;    case 0x04:    discrepancy=0;   break;  
 058A 0027              clr R16
 058C                   .dbline 211
 058C 09C0              rjmp L60
 058E           L66:
 058E                   .dbline 212
 058E           ;    case 0x05:    discrepancy=1;   break;  
 058E 01E0              ldi R16,1
 0590                   .dbline 212
 0590 07C0              rjmp L60
 0592           L67:
 0592                   .dbline 213
 0592           ;    case 0x06:    discrepancy=2;   break;  
 0592 02E0              ldi R16,2
 0594                   .dbline 213
 0594 05C0              rjmp L60
 0596           L68:
 0596                   .dbline 214
 0596           ;    case 0x08:    discrepancy=0;   break;  
 0596 0027              clr R16
 0598                   .dbline 214
 0598 03C0              rjmp L60
 059A           L69:
 059A                   .dbline 215
 059A           ;    case 0x09:    discrepancy=1;   break;  
 059A 01E0              ldi R16,1
 059C                   .dbline 215
 059C 01C0              rjmp L60
 059E           L70:
 059E                   .dbline 216
 059E           ;    case 0x0A:    discrepancy=2;   break;}
 059E 02E0              ldi R16,2
 05A0                   .dbline 216
 05A0           L59:
 05A0           L60:
 05A0                   .dbline 217
 05A0           ;  return(discrepancy);  
 05A0                   .dbline -2
 05A0           L58:
 05A0                   .dbline 0 ; func end
 05A0 0895              ret
 05A2                   .dbsym r discrepancy 16 c
 05A2                   .dbsym r l2 16 c
 05A2                   .dbend
 05A2                   .dbfunc e OutLine _OutLine fc
 05A2           ;    discrepancy -> R20
 05A2           ;             l2 -> R20
                        .even
 05A2           _OutLine::
 05A2 00D0              rcall push_gset1
 05A4                   .dbline -1
 05A4                   .dbline 222
 05A4           ;  }
 05A4           ;  
 05A4           ; //***************************寻线处理函数7****************************//
 05A4           ; char OutLine(void)           //线外偏离判断
 05A4           ; {char discrepancy;
 05A4                   .dbline 224
 05A4           ;  char l2;
 05A4           ;  l2=PINA^0xFF; 
 05A4 8FEF              ldi R24,255
 05A6 90E0              ldi R25,0
 05A8 49B3              in R20,0x19
 05AA 5527              clr R21
 05AC 4827              eor R20,R24
 05AE 5927              eor R21,R25
 05B0                   .dbline 225
 05B0           ;  l2=0x3C&l2;                 //00111100b
 05B0 4C73              andi R20,60
 05B2                   .dbline 226
 05B2           ;  l2=l2>>2;
 05B2 4695              lsr R20
 05B4 4695              lsr R20
 05B6                   .dbline 227
 05B6           ;  switch(l2)
 05B6 5527              clr R21
 05B8 4030              cpi R20,0
 05BA 4507              cpc R20,R21
 05BC 29F1              breq L75
 05BE           X4:
 05BE 4130              cpi R20,1
 05C0 E0E0              ldi R30,0
 05C2 5E07              cpc R21,R30
 05C4 21F1              breq L76
 05C6 4230              cpi R20,2
 05C8 E0E0              ldi R30,0
 05CA 5E07              cpc R21,R30
 05CC 19F1              breq L77
 05CE 4430              cpi R20,4
 05D0 E0E0              ldi R30,0
 05D2 5E07              cpc R21,R30

⌨️ 快捷键说明

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