📄 boat.lis
字号:
057C FC01 movw R30,R24
057E 8081 ldd R24,z+0
0580 9181 ldd R25,z+1
0582 0196 adiw R24,1
0584 2C01 movw R4,R24
0586 5182 std z+1,R5
0588 4082 std z+0,R4
058A F901 movw R30,R18
058C 2680 ldd R2,z+6
058E 3780 ldd R3,z+7
0590 8215 cp R24,R2
0592 9305 cpc R25,R3
0594 09F0 breq X16
0596 27C0 xjmp L106
0598 X16:
0598 .dbline 291
0598 .dbline 292
0598 ; pt_r->real_speed -= pt_r->step;
0598 C901 movw R24,R18
059A 0296 adiw R24,2
059C F901 movw R30,R18
059E 4284 ldd R4,z+10
05A0 5384 ldd R5,z+11
05A2 FC01 movw R30,R24
05A4 6080 ldd R6,z+0
05A6 7180 ldd R7,z+1
05A8 6418 sub R6,R4
05AA 7508 sbc R7,R5
05AC 7182 std z+1,R7
05AE 6082 std z+0,R6
05B0 .dbline 293
05B0 ; if ( pt_r->real_speed < 0 ){ //取绝对值
05B0 F901 movw R30,R18
05B2 8281 ldd R24,z+2
05B4 9381 ldd R25,z+3
05B6 8030 cpi R24,0
05B8 E0E0 ldi R30,0
05BA 9E07 cpc R25,R30
05BC 54F4 brge L108
05BE .dbline 293
05BE .dbline 294
05BE ; OCR1B = (uint)(-pt_r->real_speed);
05BE F901 movw R30,R18
05C0 8281 ldd R24,z+2
05C2 9381 ldd R25,z+3
05C4 8095 com R24
05C6 9095 com R25
05C8 8F5F subi R24,0xFF
05CA 9F4F sbci R25,0xFF
05CC 99BD out 0x29,R25
05CE 88BD out 0x28,R24
05D0 .dbline 295
05D0 05C0 xjmp L109
05D2 L108:
05D2 .dbline 295
05D2 ; } else {
05D2 .dbline 296
05D2 ; OCR1B = (uint)(pt_r->real_speed);
05D2 F901 movw R30,R18
05D4 2280 ldd R2,z+2
05D6 3380 ldd R3,z+3
05D8 39BC out 0x29,R3
05DA 28BC out 0x28,R2
05DC .dbline 297
05DC ; }
05DC L109:
05DC .dbline 298
05DC ; pt_r->counter = 0;
05DC 2224 clr R2
05DE 3324 clr R3
05E0 F901 movw R30,R18
05E2 3186 std z+9,R3
05E4 2086 std z+8,R2
05E6 .dbline 299
05E6 ; }
05E6 L106:
05E6 .dbline 300
05E6 ; }
05E6 L104:
05E6 L99:
05E6 L89:
05E6 .dbline -2
05E6 .dbline 301
05E6 ; }
05E6 L65:
05E6 .dbline 0 ; func end
05E6 0895 ret
05E8 .dbsym r pt_r 18 pS[_trap]
05E8 .dbsym r pt_l 16 pS[_trap]
05E8 .dbend
05E8 .dbfunc e trap_ctrler _trap_ctrler fV
05E8 ; r_des_speed -> R18,R19
05E8 ; l_des_speed -> R16,R17
.even
05E8 _trap_ctrler::
05E8 .dbline -1
05E8 .dbline 305
05E8 ;
05E8 ; //电机速度控制接口函数
05E8 ; void trap_ctrler( int l_des_speed, int r_des_speed )
05E8 ; {
05E8 .dbline 306
05E8 ; l_trap.acce_count = L_ACCE_COUNT; //设定左电机
05E8 82E0 ldi R24,2
05EA 90E0 ldi R25,0
05EC 90934200 sts _l_trap+4+1,R25
05F0 80934100 sts _l_trap+4,R24
05F4 .dbline 307
05F4 ; l_trap.dece_count = L_DECE_COUNT;
05F4 90934400 sts _l_trap+6+1,R25
05F8 80934300 sts _l_trap+6,R24
05FC .dbline 308
05FC ; l_trap.step = L_STEP;
05FC 81E0 ldi R24,1
05FE 90934800 sts _l_trap+10+1,R25
0602 80934700 sts _l_trap+10,R24
0606 .dbline 309
0606 ; if ( l_des_speed > ( MAX_SPEED - l_trap.step ) ){ //给定值限幅处理
0606 1C01 movw R2,R24
0608 8EEF ldi R24,510
060A 91E0 ldi R25,1
060C 8219 sub R24,R2
060E 9309 sbc R25,R3
0610 8017 cp R24,R16
0612 9107 cpc R25,R17
0614 4CF4 brge L114
0616 .dbline 309
0616 .dbline 310
0616 ; l_trap.des_speed = MAX_SPEED - l_trap.step;
0616 8EEF ldi R24,510
0618 91E0 ldi R25,1
061A 8219 sub R24,R2
061C 9309 sbc R25,R3
061E 90933E00 sts _l_trap+1,R25
0622 80933D00 sts _l_trap,R24
0626 .dbline 311
0626 18C0 xjmp L115
0628 L114:
0628 .dbline 311
0628 ; } else if ( l_des_speed < ( MIN_SPEED + l_trap.step ) ){
0628 80914700 lds R24,_l_trap+10
062C 90914800 lds R25,_l_trap+10+1
0630 8E5F subi R24,254
0632 9140 sbci R25,1
0634 0817 cp R16,R24
0636 1907 cpc R17,R25
0638 5CF4 brge L118
063A .dbline 311
063A .dbline 312
063A ; l_trap.des_speed = MIN_SPEED + l_trap.step;
063A 80914700 lds R24,_l_trap+10
063E 90914800 lds R25,_l_trap+10+1
0642 8E5F subi R24,254
0644 9140 sbci R25,1
0646 90933E00 sts _l_trap+1,R25
064A 80933D00 sts _l_trap,R24
064E .dbline 313
064E 04C0 xjmp L119
0650 L118:
0650 .dbline 313
0650 ; } else {
0650 .dbline 314
0650 ; l_trap.des_speed = l_des_speed;
0650 10933E00 sts _l_trap+1,R17
0654 00933D00 sts _l_trap,R16
0658 .dbline 315
0658 ; }
0658 L119:
0658 L115:
0658 .dbline 316
0658 ; r_trap.acce_count = R_ACCE_COUNT; //设定右电机
0658 82E0 ldi R24,2
065A 90E0 ldi R25,0
065C 90933600 sts _r_trap+4+1,R25
0660 80933500 sts _r_trap+4,R24
0664 .dbline 317
0664 ; r_trap.dece_count = R_DECE_COUNT;
0664 90933800 sts _r_trap+6+1,R25
0668 80933700 sts _r_trap+6,R24
066C .dbline 318
066C ; r_trap.step = R_STEP;
066C 81E0 ldi R24,1
066E 90933C00 sts _r_trap+10+1,R25
0672 80933B00 sts _r_trap+10,R24
0676 .dbline 319
0676 ; if ( r_des_speed > ( MAX_SPEED - r_trap.step ) ){ //给定值限幅处理
0676 1C01 movw R2,R24
0678 8EEF ldi R24,510
067A 91E0 ldi R25,1
067C 8219 sub R24,R2
067E 9309 sbc R25,R3
0680 8217 cp R24,R18
0682 9307 cpc R25,R19
0684 4CF4 brge L125
0686 .dbline 319
0686 .dbline 320
0686 ; r_trap.des_speed = MAX_SPEED - r_trap.step;
0686 8EEF ldi R24,510
0688 91E0 ldi R25,1
068A 8219 sub R24,R2
068C 9309 sbc R25,R3
068E 90933200 sts _r_trap+1,R25
0692 80933100 sts _r_trap,R24
0696 .dbline 321
0696 18C0 xjmp L126
0698 L125:
0698 .dbline 321
0698 ; } else if ( r_des_speed < ( MIN_SPEED + r_trap.step ) ){
0698 80913B00 lds R24,_r_trap+10
069C 90913C00 lds R25,_r_trap+10+1
06A0 8E5F subi R24,254
06A2 9140 sbci R25,1
06A4 2817 cp R18,R24
06A6 3907 cpc R19,R25
06A8 5CF4 brge L129
06AA .dbline 321
06AA .dbline 322
06AA ; r_trap.des_speed = MIN_SPEED + r_trap.step;
06AA 80913B00 lds R24,_r_trap+10
06AE 90913C00 lds R25,_r_trap+10+1
06B2 8E5F subi R24,254
06B4 9140 sbci R25,1
06B6 90933200 sts _r_trap+1,R25
06BA 80933100 sts _r_trap,R24
06BE .dbline 323
06BE 04C0 xjmp L130
06C0 L129:
06C0 .dbline 323
06C0 ; } else {
06C0 .dbline 324
06C0 ; r_trap.des_speed = r_des_speed;
06C0 30933200 sts _r_trap+1,R19
06C4 20933100 sts _r_trap,R18
06C8 .dbline 325
06C8 ; }
06C8 L130:
06C8 L126:
06C8 .dbline -2
06C8 .dbline 326
06C8 ; }
06C8 L110:
06C8 .dbline 0 ; func end
06C8 0895 ret
06CA .dbsym r r_des_speed 18 I
06CA .dbsym r l_des_speed 16 I
06CA .dbend
06CA .dbfunc e key_process _key_process fV
06CA ; key_buf -> R20,R21
.even
06CA _key_process::
06CA 0E940000 xcall push_gset1
06CE A801 movw R20,R16
06D0 .dbline -1
06D0 .dbline 330
06D0 ;
06D0 ; /**************************** 键盘信号处理模块 ********************************/
06D0 ; void key_process( uint key_buf )
06D0 ; {
06D0 .dbline 331
06D0 ; if ( key_buf & BIT( L_STOP_KEY ) ){
06D0 54FF sbrs R21,4
06D2 1BC0 rjmp L134
06D4 .dbline 331
06D4 .dbline 332
06D4 ; l_temp_speed = l_trap.des_speed;
06D4 20903D00 lds R2,_l_trap
06D8 30903E00 lds R3,_l_trap+1
06DC 30923000 sts _l_temp_speed+1,R3
06E0 20922F00 sts _l_temp_speed,R2
06E4 .dbline 333
06E4 ; l_trap.des_speed = 0;
06E4 2224 clr R2
06E6 3324 clr R3
06E8 30923E00 sts _l_trap+1,R3
06EC 20923D00 sts _l_trap,R2
06F0 .dbline 334
06F0 ; trap_ctrler( 0, r_trap.des_speed );
06F0 20913100 lds R18,_r_trap
06F4 30913200 lds R19,_r_trap+1
06F8 0027 clr R16
06FA 1127 clr R17
06FC 75DF xcall _trap_ctrler
06FE .dbline 335
06FE ; key_prev_status |= BIT( L_STOP_KEY_PRESS );
06FE 80910000 lds R24,_key_prev_status
0702 8061 ori R24,16
0704 80930000 sts _key_prev_status,R24
0708 .dbline 336
0708 38C0 xjmp L135
070A L134:
070A .dbline 336
070A ; } else if ( ( key_buf & BIT( L_RESUME_KEY ) ) && ( key_prev_status & BIT( L_STOP_KEY_PRESS ) ) ){
070A 50FF sbrs R21,0
070C 1BC0 rjmp L136
070E 20900000 lds R2,_key_prev_status
0712 24FE sbrs R2,4
0714 17C0 rjmp L136
0716 .dbline 336
0716 .dbline 337
0716 ; l_trap.des_speed = l_temp_speed;
0716 20902F00 lds R2,_l_temp_speed
071A 30903000 lds R3,_l_temp_speed+1
071E 30923E00 sts _l_trap+1,R3
0722 20923D00 sts _l_trap,R2
0726 .dbline 338
0726 ; trap_ctrler( l_trap.des_speed, r_trap.des_speed );
0726 20913100 lds R18,_r_trap
072A 30913200 lds R19,_r_trap+1
072E 00913D00 lds R16,_l_trap
0732 10913E00 lds R17,_l_trap+1
0736 58DF xcall _trap_ctrler
0738 .dbline 339
0738 ; key_prev_status &= ~BIT( L_STOP_KEY_PRESS );
0738 80910000 lds R24,_key_prev_status
073C 8F7E andi R24,239
073E 80930000 sts _key_prev_status,R24
0742 .dbline 340
0742 1BC0 xjmp L137
0744 L136:
0744 .dbline 340
0744 ; } else if ( key_buf & BIT( L_ACCE_KEY ) ){
0744 40FF sbrs R20,0
0746 0CC0 rjmp L138
0748 .dbline 340
0748
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -