📄 robbot.lis
字号:
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 + -