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

📄 proc_communication.lis

📁 一个直流电机的闭环控制源代码程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0038 80930500          sts L3,R24
 003C                   .dbline 101
 003C           ;                 cByteCounter++;
 003C 80910400          lds R24,L2
 0040 8F5F              subi R24,255    ; addi 1
 0042 80930400          sts L2,R24
 0046                   .dbline 102
 0046           ;                 cXORCheck = 0xAA; 
 0046 8AEA              ldi R24,170
 0048 80930A00          sts L4,R24
 004C                   .dbline 103
 004C           ;             }
 004C                   .dbline 104
 004C           ;             break;
 004C 89C0              rjmp L8
 004E           L13:
 004E                   .dbline 106
 004E           ;         case UBOUND(cBytes):
 004E           ;             if (cData == cXORCheck)
 004E 20900A00          lds R2,L4
 0052 3D80              ldd R3,y+5
 0054 3214              cp R3,R2
 0056 09F0              breq X10
 0058 6AC0              rjmp L14
 005A           X10:
 005A           X5:
 005A                   .dbline 107
 005A           ;             {
 005A                   .dbline 109
 005A           ;                 //数据帧正确
 005A           ;                 g_bIfBrake = TYPE_CONVERSION(&cBytes[1],CMD_FRAME).IfBrake;
 005A E0E0              ldi R30,<L3+1
 005C F0E0              ldi R31,>L3+1
 005E 8081              ldd R24,z+0
 0060 9181              ldd R25,z+1
 0062 8170              andi R24,1
 0064 9070              andi R25,0
 0066 80930000          sts _g_bIfBrake,R24
 006A                   .dbline 111
 006A           ;                 #ifndef LEFT_MOTOR
 006A           ;                     g_cSpeed = TYPE_CONVERSION(&cBytes[1],CMD_FRAME).Speed;
 006A 20900700          lds R2,L3+1+1
 006E 20920100          sts _g_cSpeed,R2
 0072                   .dbline 115
 0072           ;                 #else
 0072           ;                     g_cSpeed = -(TYPE_CONVERSION(&cBytes[1],CMD_FRAME).Speed);
 0072           ;                 #endif
 0072           ;                 g_wDistance = TYPE_CONVERSION(&cBytes[1],CMD_FRAME).Distance;
 0072 80910800          lds R24,L3+1+2
 0076 90910900          lds R25,L3+1+2+1
 007A 9F77              andi R25,127
 007C 90930300          sts _g_wDistance+1,R25
 0080 80930200          sts _g_wDistance,R24
 0084                   .dbline 118
 0084           ;                 
 0084           ;                 
 0084           ;                 Set_DISP_BUFF
 0084 80910200          lds R24,_g_wDistance
 0088 90910300          lds R25,_g_wDistance+1
 008C 8F70              andi R24,15
 008E 9070              andi R25,0
 0090 8C83              std y+4,R24
 0092 80910200          lds R24,_g_wDistance
 0096 90910300          lds R25,_g_wDistance+1
 009A 9695              lsr R25
 009C 8795              ror R24
 009E 9695              lsr R25
 00A0 8795              ror R24
 00A2 9695              lsr R25
 00A4 8795              ror R24
 00A6 9695              lsr R25
 00A8 8795              ror R24
 00AA 8F70              andi R24,15
 00AC 9070              andi R25,0
 00AE 8A83              std y+2,R24
 00B0 80910200          lds R24,_g_wDistance
 00B4 90910300          lds R25,_g_wDistance+1
 00B8 9695              lsr R25
 00BA 8795              ror R24
 00BC 9695              lsr R25
 00BE 8795              ror R24
 00C0 9695              lsr R25
 00C2 8795              ror R24
 00C4 9695              lsr R25
 00C6 8795              ror R24
 00C8 8F70              andi R24,15
 00CA 9070              andi R25,0
 00CC 8883              std y+0,R24
 00CE 822D              mov R24,R2
 00D0 8030              cpi R24,0
 00D2 4CF4              brge L21
 00D4           X6:
 00D4 482F              mov R20,R24
 00D6 5527              clr R21
 00D8 47FD              sbrc R20,7
 00DA 5095              com R21
 00DC 4095              com R20
 00DE 5095              com R21
 00E0 4F5F              subi R20,0xFF
 00E2 5F4F              sbci R21,0xFF
 00E4 05C0              rjmp L22
 00E6           L21:
 00E6 40910100          lds R20,_g_cSpeed
 00EA 5527              clr R21
 00EC 47FD              sbrc R20,7
 00EE 5095              com R21
 00F0           L22:
 00F0 242F              mov R18,R20
 00F2 2F70              andi R18,15
 00F4 3070              andi R19,0
 00F6 80910100          lds R24,_g_cSpeed
 00FA 8030              cpi R24,0
 00FC 4CF4              brge L23
 00FE           X7:
 00FE 482F              mov R20,R24
 0100 5527              clr R21
 0102 47FD              sbrc R20,7
 0104 5095              com R21
 0106 4095              com R20
 0108 5095              com R21
 010A 4F5F              subi R20,0xFF
 010C 5F4F              sbci R21,0xFF
 010E 05C0              rjmp L24
 0110           L23:
 0110 40910100          lds R20,_g_cSpeed
 0114 5527              clr R21
 0116 47FD              sbrc R20,7
 0118 5095              com R21
 011A           L24:
 011A 8A01              movw R16,R20
 011C 1595              asr R17
 011E 0795              ror R16
 0120 1595              asr R17
 0122 0795              ror R16
 0124 1595              asr R17
 0126 0795              ror R16
 0128 1595              asr R17
 012A 0795              ror R16
 012C 00D0              rcall _Set_DISP_BUFF
 012E                   .dbline 127
 012E           ;                 (
 012E           ;                     ABS(g_cSpeed)>>4,
 012E           ;                     ABS(g_cSpeed)&0x0f,
 012E           ;                     SET_WORD_DIV_4(g_wDistance).BYTEAH,
 012E           ;                     SET_WORD_DIV_4(g_wDistance).BYTEAH,
 012E           ;                     SET_WORD_DIV_4(g_wDistance).BYTEAL
 012E           ;                 );
 012E           ;                 
 012E           ;             }
 012E           L14:
 012E                   .dbline 128
 012E           ;             cByteCounter = 0;                               //复位计数器
 012E 2224              clr R2
 0130 20920400          sts L2,R2
 0134                   .dbline 129
 0134           ;             cXORCheck = 0;
 0134 20920A00          sts L4,R2
 0138                   .dbline 131
 0138           ;             
 0138           ;             break;
 0138 13C0              rjmp L8
 013A           L7:
 013A                   .dbline 133
 013A           ;         default:
 013A           ;             cBytes[cByteCounter++] = cData;
 013A 20900400          lds R2,L2
 013E 822D              mov R24,R2
 0140 8F5F              subi R24,255    ; addi 1
 0142 80930400          sts L2,R24
 0146 80E0              ldi R24,<L3
 0148 90E0              ldi R25,>L3
 014A E22D              mov R30,R2
 014C FF27              clr R31
 014E E80F              add R30,R24
 0150 F91F              adc R31,R25
 0152 2D80              ldd R2,y+5
 0154 2082              std z+0,R2
 0156                   .dbline 134
 0156           ;             cXORCheck ^= cData;
 0156 30900A00          lds R3,L4
 015A 3224              eor R3,R2
 015C 30920A00          sts L4,R3
 0160                   .dbline 135
 0160           ;             break;
 0160           L8:
 0160                   .dbline 138
 0160           ;     }
 0160           ;     
 0160           ;     return TRUE;
 0160 01E0              ldi R16,1
 0162                   .dbline -2
 0162           L1:
 0162                   .dbline 0 ; func end
 0162 2696              adiw R28,6
 0164 5991              ld R21,y+
 0166 4991              ld R20,y+
 0168 0895              ret
 016A                   .dbsym l cData 5 c
 016A                   .dbend
 016A           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -