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

📄 ex_support.lis

📁 一个直流电机的闭环控制源代码程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0066           ;         */
 0066           ;     }
 0066           L10:
 0066                   .dbline 172
 0066           ;     /*
 0066           ;     if (!(g_wSystemTimer & 0x0f))
 0066           ;     {
 0066           ;         REFRESH_SP027
 0066           ;         g_dAimMotorPosition++;
 0066           ;     }
 0066           ;     Set_DISP_BUFF
 0066           ;                 (
 0066           ;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTECL,
 0066           ;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEBH,
 0066           ;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEBL,
 0066           ;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEAH,
 0066           ;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEAL
 0066           ;                 );
 0066           ;     */
 0066           ;     
 0066           ;     if (!(g_wSystemTimer & 0x03))
 0066 80910200          lds R24,_g_wSystemTimer
 006A 90910300          lds R25,_g_wSystemTimer+1
 006E 8370              andi R24,3
 0070 9070              andi R25,0
 0072 8030              cpi R24,0
 0074 8907              cpc R24,R25
 0076 09F4              brne L12
 0078           X3:
 0078                   .dbline 173
 0078           ;     {
 0078                   .dbline 174
 0078           ;         REFRESH_SP027
 0078 00D0              rcall _LCDSP027_refresh_DISP_BUFF
 007A                   .dbline 175
 007A           ;     }
 007A           L12:
 007A                   .dbline 177
 007A           ;  
 007A           ;     if (!(g_wSystemTimer & 0x0f))
 007A 80910200          lds R24,_g_wSystemTimer
 007E 90910300          lds R25,_g_wSystemTimer+1
 0082 8F70              andi R24,15
 0084 9070              andi R25,0
 0086 8030              cpi R24,0
 0088 8907              cpc R24,R25
 008A 09F0              breq X23
 008C 8FC1              rjmp L14
 008E           X23:
 008E           X4:
 008E                   .dbline 178
 008E           ;     {
 008E                   .dbline 179
 008E           ;         if ((g_bIfBrake) || (g_wDistance == 0))
 008E 20900000          lds R2,_g_bIfBrake
 0092 2220              tst R2
 0094 51F4              brne L18
 0096           X5:
 0096 20900000          lds R2,_g_wDistance
 009A 30900100          lds R3,_g_wDistance+1
 009E 2220              tst R2
 00A0 09F0              breq X24
 00A2 52C0              rjmp L16
 00A4           X24:
 00A4 3320              tst R3
 00A6 09F0              breq X25
 00A8 4FC0              rjmp L16
 00AA           X25:
 00AA           X6:
 00AA           L18:
 00AA                   .dbline 180
 00AA           ;         {
 00AA                   .dbline 181
 00AA           ;             if ((g_wDistance == 0) && (!g_bIfBrake))
 00AA 20900000          lds R2,_g_wDistance
 00AE 30900100          lds R3,_g_wDistance+1
 00B2 2220              tst R2
 00B4 31F5              brne L19
 00B6 3320              tst R3
 00B8 21F5              brne L19
 00BA           X7:
 00BA 20900000          lds R2,_g_bIfBrake
 00BE 2220              tst R2
 00C0 01F5              brne L19
 00C2           X8:
 00C2                   .dbline 182
 00C2           ;             {
 00C2                   .dbline 183
 00C2           ;                 g_dAimMotorPosition += g_cSpeed;
 00C2 20900000          lds R2,_g_cSpeed
 00C6 3324              clr R3
 00C8 27FC              sbrc R2,7
 00CA 3094              com R3
 00CC 4424              clr R4
 00CE 37FC              sbrc R3,7
 00D0 4094              com R4
 00D2 5524              clr R5
 00D4 47FC              sbrc R4,7
 00D6 5094              com R5
 00D8 80900A00          lds R8,_g_dAimMotorPosition+2
 00DC 90900B00          lds R9,_g_dAimMotorPosition+2+1
 00E0 60900800          lds R6,_g_dAimMotorPosition
 00E4 70900900          lds R7,_g_dAimMotorPosition+1
 00E8 620C              add R6,R2
 00EA 731C              adc R7,R3
 00EC 841C              adc R8,R4
 00EE 951C              adc R9,R5
 00F0 70920900          sts _g_dAimMotorPosition+1,R7
 00F4 60920800          sts _g_dAimMotorPosition,R6
 00F8 90920B00          sts _g_dAimMotorPosition+2+1,R9
 00FC 80920A00          sts _g_dAimMotorPosition+2,R8
 0100                   .dbline 184
 0100           ;             }
 0100 10C0              rjmp L20
 0102           L19:
 0102                   .dbline 186
 0102           ;             else
 0102           ;             {
 0102                   .dbline 187
 0102           ;                 g_dAimMotorPosition = g_dNowMotorPosition;
 0102 40900600          lds R4,_g_dNowMotorPosition+2
 0106 50900700          lds R5,_g_dNowMotorPosition+2+1
 010A 20900400          lds R2,_g_dNowMotorPosition
 010E 30900500          lds R3,_g_dNowMotorPosition+1
 0112 30920900          sts _g_dAimMotorPosition+1,R3
 0116 20920800          sts _g_dAimMotorPosition,R2
 011A 50920B00          sts _g_dAimMotorPosition+2+1,R5
 011E 40920A00          sts _g_dAimMotorPosition+2,R4
 0122                   .dbline 188
 0122           ;             }
 0122           L20:
 0122                   .dbline 189
 0122           ;             g_dGoDistance = 0;
 0122 40E0              ldi R20,0
 0124 50E0              ldi R21,0
 0126 60E0              ldi R22,0
 0128 70E0              ldi R23,0
 012A 50930D00          sts _g_dGoDistance+1,R21
 012E 40930C00          sts _g_dGoDistance,R20
 0132 70930F00          sts _g_dGoDistance+2+1,R23
 0136 60930E00          sts _g_dGoDistance+2,R22
 013A                   .dbline 190
 013A           ;             g_bIfMarkDistance = FALSE;
 013A 2224              clr R2
 013C 20921000          sts _g_bIfMarkDistance,R2
 0140                   .dbline 191
 0140           ;             s_bIfSendSuccess = TRUE;
 0140 81E0              ldi R24,1
 0142 80931100          sts L7,R24
 0146                   .dbline 192
 0146           ;         }
 0146 32C1              rjmp L17
 0148           L16:
 0148                   .dbline 194
 0148           ;         else
 0148           ;         {
 0148                   .dbline 195
 0148           ;             if (!g_bIfMarkDistance)
 0148 20901000          lds R2,_g_bIfMarkDistance
 014C 2220              tst R2
 014E 09F0              breq X26
 0150 55C0              rjmp L21
 0152           X26:
 0152           X9:
 0152                   .dbline 196
 0152           ;             {
 0152                   .dbline 197
 0152           ;                 if (g_cSpeed < 0)
 0152 80910000          lds R24,_g_cSpeed
 0156 8030              cpi R24,0
 0158 3CF5              brge L23
 015A           X10:
 015A                   .dbline 198
 015A           ;                 {
 015A                   .dbline 199
 015A           ;                     g_dGoDistance = g_dNowMotorPosition - (int32)((float)g_wDistance * (float)MM_K);
 015A 00E0              ldi R16,<L25
 015C 10E0              ldi R17,>L25
 015E 00D0              rcall lpm32
 0160 1801              movw R2,R16
 0162 2901              movw R4,R18
 0164 00910000          lds R16,_g_wDistance
 0168 10910100          lds R17,_g_wDistance+1
 016C 00D0              rcall uint2fp
 016E 3A93              st -y,R19
 0170 2A93              st -y,R18
 0172 1A93              st -y,R17
 0174 0A93              st -y,R16
 0176 8101              movw R16,R2
 0178 9201              movw R18,R4
 017A 00D0              rcall fpmule2
 017C 00D0              rcall fpint
 017E 40900600          lds R4,_g_dNowMotorPosition+2
 0182 50900700          lds R5,_g_dNowMotorPosition+2+1
 0186 20900400          lds R2,_g_dNowMotorPosition
 018A 30900500          lds R3,_g_dNowMotorPosition+1
 018E 201A              sub R2,R16
 0190 310A              sbc R3,R17
 0192 420A              sbc R4,R18
 0194 530A              sbc R5,R19
 0196 30920D00          sts _g_dGoDistance+1,R3
 019A 20920C00          sts _g_dGoDistance,R2
 019E 50920F00          sts _g_dGoDistance+2+1,R5
 01A2 40920E00          sts _g_dGoDistance+2,R4
 01A6                   .dbline 200
 01A6           ;                 }
 01A6 26C0              rjmp L24
 01A8           L23:
 01A8                   .dbline 202
 01A8           ;                 else
 01A8           ;                 {
 01A8                   .dbline 203
 01A8           ;                     g_dGoDistance = g_dNowMotorPosition + (int32)((float)g_wDistance * (float)MM_K);
 01A8 00E0              ldi R16,<L25
 01AA 10E0              ldi R17,>L25
 01AC 00D0              rcall lpm32
 01AE 1801              movw R2,R16
 01B0 2901              movw R4,R18
 01B2 00910000          lds R16,_g_wDistance
 01B6 10910100          lds R17,_g_wDistance+1
 01BA 00D0              rcall uint2fp
 01BC 3A93              st -y,R19
 01BE 2A93              st -y,R18
 01C0 1A93              st -y,R17
 01C2 0A93              st -y,R16
 01C4 8101              movw R16,R2
 01C6 9201              movw R18,R4
 01C8 00D0              rcall fpmule2
 01CA 00D0              rcall fpint
 01CC 40900600          lds R4,_g_dNowMotorPosition+2
 01D0 50900700          lds R5,_g_dNowMotorPosition+2+1
 01D4 20900400          lds R2,_g_dNowMotorPosition
 01D8 30900500          lds R3,_g_dNowMotorPosition+1
 01DC 200E              add R2,R16
 01DE 311E              adc R3,R17
 01E0 421E              adc R4,R18
 01E2 531E              adc R5,R19
 01E4 30920D00          sts _g_dGoDistance+1,R3
 01E8 20920C00          sts _g_dGoDistance,R2
 01EC 50920F00          sts _g_dGoDistance+2+1,R5
 01F0 40920E00          sts _g_dGoDistance+2,R4
 01F4                   .dbline 204
 01F4           ;                 }
 01F4           L24:
 01F4                   .dbline 206
 01F4           ; 
 01F4           ;                 g_bIfMarkDistance = TRUE;
 01F4 81E0              ldi R24,1
 01F6 80931000          sts _g_bIfMarkDistance,R24
 01FA                   .dbline 207
 01FA           ;             }
 01FA D8C0              rjmp L22
 01FC           L21:
 01FC                   .dbline 209
 01FC           ;             else
 01FC           ;             {
 01FC                   .dbline 210
 01FC           ;                 nTempDistance = g_dGoDistance - g_dNowMotorPosition;
 01FC 20900400          lds R2,_g_dNowMotorPosition
 0200 30900500          lds R3,_g_dNowMotorPosition+1
 0204 C0900C00          lds R12,_g_dGoDistance
 0208 D0900D00          lds R13,_g_dGoDistance+1
 020C C218              sub R12,R2
 020E D308              sbc R13,R3
 0210                   .dbline 212
 0210           ; 
 0210           ;                 if (nTempDistance < 0)
 0210 C601              movw R24,R12
 0212 8030              cpi R24,0
 0214 E0E0              ldi R30,0
 0216 9E07              cpc R25,R30
 0218 0CF0              brlt X27
 021A 5AC0              rjmp L26
 021C           X27:
 021C           X11:
 021C                   .dbline 213
 021C           ;                 {
 021C                   .dbline 215
 021C           ;                     
 021C           ;                     if (g_cSpeed < 0)
 021C 80910000          lds R24,_g_cSpeed
 0220 8030              cpi R24,0
 0222 0CF0              brlt X28
 0224 BAC0              rjmp L27
 0226           X28:
 0226           X12:
 0226                   .dbline 216
 0226           ;                     {
 0226                   .dbline 218
 0226           ;                         //合法速度

⌨️ 快捷键说明

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