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

📄 proc_motoraction_sctr.lis

📁 一个直流电机的闭环控制源代码程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0094 30900100          lds R3,_g_dAimMotorPosition+1
 0098 A880              ldd R10,y+0
 009A B980              ldd R11,y+1
 009C A218              sub R10,R2
 009E B308              sbc R11,R3
 00A0           L6:
 00A0 B0920100          sts _Delta+1,R11
 00A4 A0920000          sts _Delta,R10
 00A8                   .dbline 92
 00A8           ;         
 00A8           ;         //SAFE_CODE_PERFORMANCE
 00A8           ;         //( 
 00A8           ;             MOTOR_GO_BACK
 00A8 82B3              in R24,0x12
 00AA 8F73              andi R24,63
 00AC 8064              ori R24,64
 00AE 82BB              out 0x12,R24
 00B0                   .dbline 92
 00B0 81E1              ldi R24,17
 00B2 8EBD              out 0x2e,R24
 00B4                   .dbline 92
 00B4                   .dbline 95
 00B4           ;         //)
 00B4           ;         
 00B4           ;         SET_PWM(ERR)
 00B4 80E2              ldi R24,800
 00B6 93E0              ldi R25,3
 00B8 8C15              cp R24,R12
 00BA 9D05              cpc R25,R13
 00BC 10F4              brsh L7
 00BE           X2:
 00BE 5C01              movw R10,R24
 00C0 01C0              rjmp L8
 00C2           L7:
 00C2 5601              movw R10,R12
 00C4           L8:
 00C4 BBBC              out 0x2b,R11
 00C6 AABC              out 0x2a,R10
 00C8                   .dbline 96
 00C8           ;     }
 00C8 65C0              rjmp L4
 00CA           L3:
 00CA                   .dbline 97
 00CA           ;     else if (dTempDCounter < g_dAimMotorPosition)
 00CA 40900200          lds R4,_g_dAimMotorPosition+2
 00CE 50900300          lds R5,_g_dAimMotorPosition+2+1
 00D2 20900000          lds R2,_g_dAimMotorPosition
 00D6 30900100          lds R3,_g_dAimMotorPosition+1
 00DA 6880              ldd R6,y+0
 00DC 7980              ldd R7,y+1
 00DE 8A80              ldd R8,y+2
 00E0 9B80              ldd R9,y+3
 00E2 6214              cp R6,R2
 00E4 7304              cpc R7,R3
 00E6 8404              cpc R8,R4
 00E8 9504              cpc R9,R5
 00EA 08F0              brlo X7
 00EC 4FC0              rjmp L9
 00EE           X7:
 00EE           X3:
 00EE                   .dbline 98
 00EE           ;     {
 00EE                   .dbline 99
 00EE           ;         ERR = (uint16)((g_dAimMotorPosition - dTempDCounter)*MOTOR_P);
 00EE 1301              movw R2,R6
 00F0 2401              movw R4,R8
 00F2 80900200          lds R8,_g_dAimMotorPosition+2
 00F6 90900300          lds R9,_g_dAimMotorPosition+2+1
 00FA 60900000          lds R6,_g_dAimMotorPosition
 00FE 70900100          lds R7,_g_dAimMotorPosition+1
 0102 6218              sub R6,R2
 0104 7308              sbc R7,R3
 0106 8408              sbc R8,R4
 0108 9508              sbc R9,R5
 010A 44E1              ldi R20,20
 010C 50E0              ldi R21,0
 010E 60E0              ldi R22,0
 0110 70E0              ldi R23,0
 0112 9A92              st -y,R9
 0114 8A92              st -y,R8
 0116 7A92              st -y,R7
 0118 6A92              st -y,R6
 011A 8A01              movw R16,R20
 011C 9B01              movw R18,R22
 011E 00D0              rcall empy32u
 0120 6801              movw R12,R16
 0122                   .dbline 100
 0122           ;         Delta = ABS((int16)(g_dAimMotorPosition - dTempDCounter));
 0122 2880              ldd R2,y+0
 0124 3980              ldd R3,y+1
 0126 80910000          lds R24,_g_dAimMotorPosition
 012A 90910100          lds R25,_g_dAimMotorPosition+1
 012E 8219              sub R24,R2
 0130 9309              sbc R25,R3
 0132 8030              cpi R24,0
 0134 E0E0              ldi R30,0
 0136 9E07              cpc R25,R30
 0138 64F4              brge L11
 013A           X4:
 013A 80910000          lds R24,_g_dAimMotorPosition
 013E 90910100          lds R25,_g_dAimMotorPosition+1
 0142 8219              sub R24,R2
 0144 9309              sbc R25,R3
 0146 8095              com R24
 0148 9095              com R25
 014A 8F5F              subi R24,0xFF
 014C 9F4F              sbci R25,0xFF
 014E 5C01              movw R10,R24
 0150 08C0              rjmp L12
 0152           L11:
 0152 2880              ldd R2,y+0
 0154 3980              ldd R3,y+1
 0156 A0900000          lds R10,_g_dAimMotorPosition
 015A B0900100          lds R11,_g_dAimMotorPosition+1
 015E A218              sub R10,R2
 0160 B308              sbc R11,R3
 0162           L12:
 0162 B0920100          sts _Delta+1,R11
 0166 A0920000          sts _Delta,R10
 016A                   .dbline 104
 016A           ;         
 016A           ;         //SAFE_CODE_PERFORMANCE
 016A           ;         //(        
 016A           ;             MOTOR_GO_FRONT
 016A 82B3              in R24,0x12
 016C 8F73              andi R24,63
 016E 8068              ori R24,128
 0170 82BB              out 0x12,R24
 0172                   .dbline 104
 0172 81E1              ldi R24,17
 0174 8EBD              out 0x2e,R24
 0176                   .dbline 104
 0176                   .dbline 107
 0176           ;         //)
 0176           ;         
 0176           ;         SET_PWM(ERR)
 0176 80E2              ldi R24,800
 0178 93E0              ldi R25,3
 017A 8C15              cp R24,R12
 017C 9D05              cpc R25,R13
 017E 10F4              brsh L13
 0180           X5:
 0180 5C01              movw R10,R24
 0182 01C0              rjmp L14
 0184           L13:
 0184 5601              movw R10,R12
 0186           L14:
 0186 BBBC              out 0x2b,R11
 0188 AABC              out 0x2a,R10
 018A                   .dbline 108
 018A           ;     }
 018A 04C0              rjmp L10
 018C           L9:
 018C                   .dbline 110
 018C           ;     else                                                    //计数器相等
 018C           ;     {
 018C                   .dbline 111
 018C           ;         SET_PWM(0)
 018C 2224              clr R2
 018E 3324              clr R3
 0190 3BBC              out 0x2b,R3
 0192 2ABC              out 0x2a,R2
 0194                   .dbline 113
 0194           ;         //MOTOR_BRAKE_FREE
 0194           ;     }
 0194           L10:
 0194           L4:
 0194                   .dbline 125
 0194           ;     /*
 0194           ;     Set_DISP_BUFF
 0194           ;         (
 0194           ;             0x0F,
 0194           ;             SET_DWORD_DIV_8(Delta).BYTEBH,
 0194           ;             SET_DWORD_DIV_8(Delta).BYTEBL,
 0194           ;             SET_DWORD_DIV_8(Delta).BYTEAH,
 0194           ;             SET_DWORD_DIV_8(Delta).BYTEAL
 0194           ;         );
 0194           ;     */
 0194           ; 
 0194           ;     return TRUE;
 0194 01E0              ldi R16,1
 0196                   .dbline -2
 0196           L1:
 0196                   .dbline 0 ; func end
 0196 2496              adiw R28,4
 0198 00C0              rjmp pop_xgsetF03C
 019A                   .dbsym r ERR3 12 i
 019A                   .dbsym r ERR1 12 i
 019A                   .dbsym l dTempDCounter1 0 l
 019A                   .dbend
 019A           ; }

⌨️ 快捷键说明

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