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