📄 boat.lis
字号:
03D4 5182 std z+1,R5
03D6 4082 std z+0,R4
03D8 F801 movw R30,R16
03DA 2680 ldd R2,z+6
03DC 3780 ldd R3,z+7
03DE 8215 cp R24,R2
03E0 9305 cpc R25,R3
03E2 09F0 breq X10
03E4 27C0 xjmp L84
03E6 X10:
03E6 .dbline 252
03E6 .dbline 253
03E6 ; pt_l->real_speed -= pt_l->step;
03E6 C801 movw R24,R16
03E8 0296 adiw R24,2
03EA F801 movw R30,R16
03EC 4284 ldd R4,z+10
03EE 5384 ldd R5,z+11
03F0 FC01 movw R30,R24
03F2 6080 ldd R6,z+0
03F4 7180 ldd R7,z+1
03F6 6418 sub R6,R4
03F8 7508 sbc R7,R5
03FA 7182 std z+1,R7
03FC 6082 std z+0,R6
03FE .dbline 254
03FE ; if ( pt_l->real_speed < 0 ){ //取绝对值
03FE F801 movw R30,R16
0400 8281 ldd R24,z+2
0402 9381 ldd R25,z+3
0404 8030 cpi R24,0
0406 E0E0 ldi R30,0
0408 9E07 cpc R25,R30
040A 54F4 brge L86
040C .dbline 254
040C .dbline 255
040C ; OCR1A = (uint)(-pt_l->real_speed);
040C F801 movw R30,R16
040E 8281 ldd R24,z+2
0410 9381 ldd R25,z+3
0412 8095 com R24
0414 9095 com R25
0416 8F5F subi R24,0xFF
0418 9F4F sbci R25,0xFF
041A 9BBD out 0x2b,R25
041C 8ABD out 0x2a,R24
041E .dbline 256
041E 05C0 xjmp L87
0420 L86:
0420 .dbline 256
0420 ; } else {
0420 .dbline 257
0420 ; OCR1A = (uint)(pt_l->real_speed);
0420 F801 movw R30,R16
0422 2280 ldd R2,z+2
0424 3380 ldd R3,z+3
0426 3BBC out 0x2b,R3
0428 2ABC out 0x2a,R2
042A .dbline 258
042A ; }
042A L87:
042A .dbline 259
042A ; pt_l->counter = 0;
042A 2224 clr R2
042C 3324 clr R3
042E F801 movw R30,R16
0430 3186 std z+9,R3
0432 2086 std z+8,R2
0434 .dbline 260
0434 ; }
0434 L84:
0434 .dbline 261
0434 ; }
0434 L82:
0434 L77:
0434 L67:
0434 .dbline 263
0434 ; //右电机加减速梯形图控制器
0434 ; if ( OCR1B <= pt_r->step ) //当速度减少到一定值时
0434 F901 movw R30,R18
0436 2284 ldd R2,z+10
0438 3384 ldd R3,z+11
043A 48B4 in R4,0x28
043C 59B4 in R5,0x29
043E 2414 cp R2,R4
0440 3504 cpc R3,R5
0442 08F4 brsh X11
0444 4FC0 xjmp L88
0446 X11:
0446 .dbline 264
0446 ; {
0446 .dbline 265
0446 ; OCR1B = pt_r->step; //保持,高频润滑
0446 F901 movw R30,R18
0448 2284 ldd R2,z+10
044A 3384 ldd R3,z+11
044C 39BC out 0x29,R3
044E 28BC out 0x28,R2
0450 .dbline 266
0450 ; if ( pt_r->des_speed == 0 ){ //当期望值为0时的处理
0450 F901 movw R30,R18
0452 2080 ldd R2,z+0
0454 3180 ldd R3,z+1
0456 2220 tst R2
0458 49F4 brne L90
045A 3320 tst R3
045C 39F4 brne L90
045E X4:
045E .dbline 266
045E .dbline 267
045E ; pt_r->real_speed = 0;
045E 2224 clr R2
0460 3324 clr R3
0462 F901 movw R30,R18
0464 3382 std z+3,R3
0466 2282 std z+2,R2
0468 .dbline 268
0468 ; SET_R_DIR;
0468 C19A sbi 0x18,1
046A .dbline 269
046A BDC0 xjmp L89
046C L90:
046C .dbline 269
046C ; } else{
046C .dbline 270
046C ; if ( pt_r->des_speed > 0 ) SET_R_DIR;
046C 2224 clr R2
046E 3324 clr R3
0470 F901 movw R30,R18
0472 4080 ldd R4,z+0
0474 5180 ldd R5,z+1
0476 2414 cp R2,R4
0478 3504 cpc R3,R5
047A 14F4 brge L92
047C .dbline 270
047C C19A sbi 0x18,1
047E 01C0 xjmp L93
0480 L92:
0480 .dbline 271
0480 ; else RST_R_DIR;
0480 C198 cbi 0x18,1
0482 L93:
0482 .dbline 272
0482 ; if ( ++ pt_r->counter >= 400 ){
0482 C901 movw R24,R18
0484 0896 adiw R24,8
0486 FC01 movw R30,R24
0488 8081 ldd R24,z+0
048A 9181 ldd R25,z+1
048C 0196 adiw R24,1
048E 2C01 movw R4,R24
0490 5182 std z+1,R5
0492 4082 std z+0,R4
0494 8039 cpi R24,144
0496 E1E0 ldi R30,1
0498 9E07 cpc R25,R30
049A 08F4 brsh X12
049C A4C0 xjmp L89
049E X12:
049E .dbline 272
049E .dbline 273
049E ; DDRD |= BIT(PD4); //刷新PD5为输出
049E 8C9A sbi 0x11,4
04A0 .dbline 274
04A0 ; OCR1B = pt_r->step + 1;
04A0 F901 movw R30,R18
04A2 8285 ldd R24,z+10
04A4 9385 ldd R25,z+11
04A6 0196 adiw R24,1
04A8 99BD out 0x29,R25
04AA 88BD out 0x28,R24
04AC .dbline 275
04AC ; if( pt_r->des_speed > 0 ) pt_r->real_speed = (int)(OCR1B); //需要强制类型转换吗?
04AC 2224 clr R2
04AE 3324 clr R3
04B0 F901 movw R30,R18
04B2 4080 ldd R4,z+0
04B4 5180 ldd R5,z+1
04B6 2414 cp R2,R4
04B8 3504 cpc R3,R5
04BA 2CF4 brge L96
04BC .dbline 275
04BC 28B4 in R2,0x28
04BE 39B4 in R3,0x29
04C0 3382 std z+3,R3
04C2 2282 std z+2,R2
04C4 09C0 xjmp L97
04C6 L96:
04C6 .dbline 276
04C6 ; else pt_r->real_speed = -(int)(OCR1B);
04C6 88B5 in R24,0x28
04C8 99B5 in R25,0x29
04CA 8095 com R24
04CC 9095 com R25
04CE 8F5F subi R24,0xFF
04D0 9F4F sbci R25,0xFF
04D2 F901 movw R30,R18
04D4 9383 std z+3,R25
04D6 8283 std z+2,R24
04D8 L97:
04D8 .dbline 277
04D8 ; pt_r->counter = 0; //定时计数器清零
04D8 2224 clr R2
04DA 3324 clr R3
04DC F901 movw R30,R18
04DE 3186 std z+9,R3
04E0 2086 std z+8,R2
04E2 .dbline 278
04E2 ; }
04E2 .dbline 279
04E2 ; }
04E2 .dbline 280
04E2 81C0 xjmp L89
04E4 L88:
04E4 .dbline 280
04E4 ; } else if ( pt_r->real_speed < pt_r->des_speed ){
04E4 F901 movw R30,R18
04E6 2080 ldd R2,z+0
04E8 3180 ldd R3,z+1
04EA 4280 ldd R4,z+2
04EC 5380 ldd R5,z+3
04EE 4214 cp R4,R2
04F0 5304 cpc R5,R3
04F2 0CF0 brlt X13
04F4 38C0 xjmp L98
04F6 X13:
04F6 .dbline 280
04F6 .dbline 281
04F6 ; if ( ++ pt_r->counter == pt_r->acce_count ){
04F6 C901 movw R24,R18
04F8 0896 adiw R24,8
04FA FC01 movw R30,R24
04FC 8081 ldd R24,z+0
04FE 9181 ldd R25,z+1
0500 0196 adiw R24,1
0502 2C01 movw R4,R24
0504 5182 std z+1,R5
0506 4082 std z+0,R4
0508 F901 movw R30,R18
050A 2480 ldd R2,z+4
050C 3580 ldd R3,z+5
050E 8215 cp R24,R2
0510 9305 cpc R25,R3
0512 09F0 breq X14
0514 68C0 xjmp L99
0516 X14:
0516 .dbline 281
0516 .dbline 282
0516 ; pt_r->real_speed += pt_r->step; //加速梯形图
0516 C901 movw R24,R18
0518 0296 adiw R24,2
051A F901 movw R30,R18
051C 4284 ldd R4,z+10
051E 5384 ldd R5,z+11
0520 FC01 movw R30,R24
0522 6080 ldd R6,z+0
0524 7180 ldd R7,z+1
0526 640C add R6,R4
0528 751C adc R7,R5
052A 7182 std z+1,R7
052C 6082 std z+0,R6
052E .dbline 283
052E ; if ( pt_r->real_speed < 0 ){ //取绝对值
052E F901 movw R30,R18
0530 8281 ldd R24,z+2
0532 9381 ldd R25,z+3
0534 8030 cpi R24,0
0536 E0E0 ldi R30,0
0538 9E07 cpc R25,R30
053A 54F4 brge L102
053C .dbline 283
053C .dbline 284
053C ; OCR1B = (uint)(-pt_r->real_speed);
053C F901 movw R30,R18
053E 8281 ldd R24,z+2
0540 9381 ldd R25,z+3
0542 8095 com R24
0544 9095 com R25
0546 8F5F subi R24,0xFF
0548 9F4F sbci R25,0xFF
054A 99BD out 0x29,R25
054C 88BD out 0x28,R24
054E .dbline 285
054E 05C0 xjmp L103
0550 L102:
0550 .dbline 285
0550 ; } else {
0550 .dbline 286
0550 ; OCR1B = (uint)(pt_r->real_speed);
0550 F901 movw R30,R18
0552 2280 ldd R2,z+2
0554 3380 ldd R3,z+3
0556 39BC out 0x29,R3
0558 28BC out 0x28,R2
055A .dbline 287
055A ; }
055A L103:
055A .dbline 288
055A ; pt_r->counter = 0; //计数器清零
055A 2224 clr R2
055C 3324 clr R3
055E F901 movw R30,R18
0560 3186 std z+9,R3
0562 2086 std z+8,R2
0564 .dbline 289
0564 ; }
0564 .dbline 290
0564 40C0 xjmp L99
0566 L98:
0566 .dbline 290
0566 ; } else if( pt_r->real_speed > pt_r->des_speed ){
0566 F901 movw R30,R18
0568 2080 ldd R2,z+0
056A 3180 ldd R3,z+1
056C 4280 ldd R4,z+2
056E 5380 ldd R5,z+3
0570 2414 cp R2,R4
0572 3504 cpc R3,R5
0574 0CF0 brlt X15
0576 37C0 xjmp L104
0578 X15:
0578 .dbline 290
0578 .dbline 291
0578 ; if ( ++ pt_r->counter == pt_r->dece_count ){
0578 C901 movw R24,R18
057A 0896 adiw R24,8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -