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

📄 boat.lis

📁 AVR单片机开发的键盘处理程序C源代码希望对单片机初学选手有点帮助
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -