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

📄 minid0712.lis

📁 平缝机的单片机伺服控制系统源代码。本程序为用单片机控制永磁同步电机的低成本方案
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0150           ;  
 0150           ;       SEI();         //re-enable interrupts
 0150 7894              sei
 0152                   .dbline -2
 0152           L5:
 0152                   .dbline 0 ; func end
 0152 0895              ret
 0154                   .dbend
 0154                   .dbfunc e main _main fV
                        .even
 0154           _main::
 0154                   .dbline -1
 0154                   .dbline 117
 0154           ;  
 0154           ; }
 0154           ; 
 0154           ; 
 0154           ;  
 0154           ; void main(void)
 0154           ; {
 0154                   .dbline 119
 0154           ; 
 0154           ;       init_devices();
 0154 E0DF              rcall _init_devices
 0156                   .dbline 121
 0156           ;       
 0156           ;       PIDInit (&sPID);
 0156 00E0              ldi R16,<_sPID
 0158 10E0              ldi R17,>_sPID
 015A 00D0              rcall _PIDInit
 015C                   .dbline 122
 015C           ;       START_ADC();
 015C 8BEE              ldi R24,235
 015E 80937A00          sts 122,R24
 0162                   .dbline 123
 0162           ;       SumDu = 0;                                              //增量式PID清零
 0162 40E0              ldi R20,0
 0164 50E0              ldi R21,0
 0166 60E0              ldi R22,0
 0168 70E0              ldi R23,0
 016A 50934300          sts _SumDu+1,R21
 016E 40934200          sts _SumDu,R20
 0172 70934500          sts _SumDu+2+1,R23
 0176 60934400          sts _SumDu+2,R22
 017A 04C0              rjmp L8
 017C           L7:
 017C                   .dbline 126
 017C                   .dbline 133
 017C 00D0              rcall _det_err
 017E                   .dbline 134
 017E 2227              clr R18
 0180 01E0              ldi R16,1
 0182 00D0              rcall _electromagne_ctrl
 0184                   .dbline 135
 0184           L8:
 0184                   .dbline 125
 0184 FBCF              rjmp L7
 0186           X0:
 0186                   .dbline -2
 0186           L6:
 0186                   .dbline 0 ; func end
 0186 0895              ret
 0188                   .dbend
 0188                   .dbfunc e timer1_ovf_isr_ _timer1_ovf_isr_ fV
                        .even
 0188           _timer1_ovf_isr_::
 0188                   .dbline -1
 0188                   .dbline 148
 0188           ;       
 0188           ;       while (1)
 0188           ;       {
 0188           ;               //if (g_flag10ms == 0xff)
 0188           ;               //{
 0188           ;               //      g_flag10ms = 0;
 0188           ;                       
 0188           ;               //      STARTIIC();                                      //开始发送
 0188           ;               //}
 0188           ;        det_err();
 0188           ;               electromagne_ctrl(1,0);
 0188           ;       }//End while
 0188           ;       
 0188           ;   
 0188           ; }
 0188           ; 
 0188           ; 
 0188           ; //  10 ms 中断 一次
 0188           ; // 需要提供低于220V 的信号g_singleLowVol
 0188           ; // 电机停机信号g_MotorStop
 0188           ; // 高于400V 的信号g_singleOverVol
 0188           ; // 电机正在运行标志g_MotorRun
 0188           ; // 电机速度小于10 RPM 标志g_LowSpeed
 0188           ; void timer1_ovf_isr_(void)
 0188           ; {
 0188                   .dbline 149
 0188           ;       if (!g_MotorRun)
 0188 20903000          lds R2,_g_MotorRun
 018C 2220              tst R2
 018E 09F0              breq X1
 0190 45C0              rjmp L11
 0192           X1:
 0192                   .dbline 150
 0192           ;       {
 0192                   .dbline 151
 0192           ;               if (g_singleLowVol)
 0192 20902F00          lds R2,_g_singleLowVol
 0196 2220              tst R2
 0198 51F0              breq L13
 019A                   .dbline 152
 019A           ;               {
 019A                   .dbline 153
 019A           ;                       g_Lower220VCnt ++;
 019A 80911B00          lds R24,_g_Lower220VCnt
 019E 90911C00          lds R25,_g_Lower220VCnt+1
 01A2 0196              adiw R24,1
 01A4 90931C00          sts _g_Lower220VCnt+1,R25
 01A8 80931B00          sts _g_Lower220VCnt,R24
 01AC                   .dbline 154
 01AC           ;               }
 01AC 09C0              rjmp L14
 01AE           L13:
 01AE                   .dbline 156
 01AE           ;               else
 01AE           ;               {
 01AE                   .dbline 157
 01AE           ;                       g_Over220VCnt ++;
 01AE 80911D00          lds R24,_g_Over220VCnt
 01B2 90911E00          lds R25,_g_Over220VCnt+1
 01B6 0196              adiw R24,1
 01B8 90931E00          sts _g_Over220VCnt+1,R25
 01BC 80931D00          sts _g_Over220VCnt,R24
 01C0                   .dbline 158
 01C0           ;               }
 01C0           L14:
 01C0                   .dbline 159
 01C0           ;               if (g_Lower220VCnt + g_Over220VCnt > 300)
 01C0 20901D00          lds R2,_g_Over220VCnt
 01C4 30901E00          lds R3,_g_Over220VCnt+1
 01C8 40901B00          lds R4,_g_Lower220VCnt
 01CC 50901C00          lds R5,_g_Lower220VCnt+1
 01D0 420C              add R4,R2
 01D2 531C              adc R5,R3
 01D4 8CE2              ldi R24,300
 01D6 91E0              ldi R25,1
 01D8 8415              cp R24,R4
 01DA 9505              cpc R25,R5
 01DC C0F4              brsh L15
 01DE                   .dbline 160
 01DE           ;               {
 01DE                   .dbline 161
 01DE           ;                       if (g_Lower220VCnt > g_Over220VCnt)
 01DE 40901B00          lds R4,_g_Lower220VCnt
 01E2 50901C00          lds R5,_g_Lower220VCnt+1
 01E6 2414              cp R2,R4
 01E8 3504              cpc R3,R5
 01EA 20F4              brsh L17
 01EC                   .dbline 162
 01EC           ;                       {
 01EC                   .dbline 163
 01EC           ;                               g_LowVol = 1;
 01EC 81E0              ldi R24,1
 01EE 80932D00          sts _g_LowVol,R24
 01F2                   .dbline 164
 01F2           ;                       }
 01F2 03C0              rjmp L18
 01F4           L17:
 01F4                   .dbline 166
 01F4           ;                       else
 01F4           ;                       {
 01F4                   .dbline 167
 01F4           ;                               g_LowVol = 0;
 01F4 2224              clr R2
 01F6 20922D00          sts _g_LowVol,R2
 01FA                   .dbline 168
 01FA           ;                       }
 01FA           L18:
 01FA                   .dbline 169
 01FA           ;                       g_Lower220VCnt = 0;
 01FA 2224              clr R2
 01FC 3324              clr R3
 01FE 30921C00          sts _g_Lower220VCnt+1,R3
 0202 20921B00          sts _g_Lower220VCnt,R2
 0206                   .dbline 170
 0206           ;                       g_Over220VCnt = 0;
 0206 30921E00          sts _g_Over220VCnt+1,R3
 020A 20921D00          sts _g_Over220VCnt,R2
 020E                   .dbline 171
 020E           ;               }
 020E           L15:
 020E                   .dbline 172
 020E           ;               g_LowSpeedCnt = 0;
 020E 2224              clr R2
 0210 3324              clr R3
 0212 30921600          sts _g_LowSpeedCnt+1,R3
 0216 20921500          sts _g_LowSpeedCnt,R2
 021A                   .dbline 173
 021A           ;       }
 021A 30C0              rjmp L12
 021C           L11:
 021C                   .dbline 175
 021C           ;       else
 021C           ;       {
 021C                   .dbline 176
 021C           ;               g_Lower220VCnt = 0;
 021C 2224              clr R2
 021E 3324              clr R3
 0220 30921C00          sts _g_Lower220VCnt+1,R3
 0224 20921B00          sts _g_Lower220VCnt,R2
 0228                   .dbline 177
 0228           ;               g_Over220VCnt = 0;      
 0228 30921E00          sts _g_Over220VCnt+1,R3
 022C 20921D00          sts _g_Over220VCnt,R2
 0230                   .dbline 178
 0230           ;               if (g_LowSpeed)
 0230 20902800          lds R2,_g_LowSpeed
 0234 2220              tst R2
 0236 51F0              breq L19
 0238                   .dbline 179
 0238           ;               {
 0238                   .dbline 180
 0238           ;                       g_LowSpeedCnt ++;
 0238 80911500          lds R24,_g_LowSpeedCnt
 023C 90911600          lds R25,_g_LowSpeedCnt+1
 0240 0196              adiw R24,1
 0242 90931600          sts _g_LowSpeedCnt+1,R25
 0246 80931500          sts _g_LowSpeedCnt,R24
 024A                   .dbline 181
 024A           ;               }
 024A 06C0              rjmp L20
 024C           L19:
 024C                   .dbline 183
 024C           ;               else
 024C           ;               {
 024C                   .dbline 184
 024C           ;                       g_LowSpeedCnt = 0;
 024C 2224              clr R2
 024E 3324              clr R3
 0250 30921600          sts _g_LowSpeedCnt+1,R3
 0254 20921500          sts _g_LowSpeedCnt,R2
 0258                   .dbline 185
 0258           ;               }
 0258           L20:
 0258                   .dbline 186
 0258           ;               if (g_LowSpeedCnt > 200)
 0258 88EC              ldi R24,200
 025A 90E0              ldi R25,0
 025C 20901500          lds R2,_g_LowSpeedCnt
 0260 30901600          lds R3,_g_LowSpeedCnt+1
 0264 8215              cp R24,R2
 0266 9305              cpc R25,R3
 0268 48F4              brsh L21
 026A                   .dbline 187
 026A           ;               {
 026A                   .dbline 188
 026A           ;                       g_MotorBlock = 1;
 026A 81E0              ldi R24,1
 026C 80932900          sts _g_MotorBlock,R24
 0270                   .dbline 189
 0270           ;                       g_LowSpeedCnt = 0;
 0270 2224              clr R2
 0272 3324              clr R3
 0274 30921600          sts _g_LowSpeedCnt+1,R3
 0278 20921500          sts _g_LowSpeedCnt,R2
 027C                   .dbline 190
 027C           ;               }       
 027C           L21:
 027C                   .dbline 191
 027C           ;       }
 027C           L12:
 027C                   .dbline 194
 027C           ; 
 027C           ; 
 027C           ;       if (g_SingleOverVol)
 027C 20902B00          lds R2,_g_SingleOverVol
 0280 2220              tst R2
 0282 51F0              breq L23
 0284                   .dbline 195
 0284           ;       {
 0284                   .dbline 196
 0284           ;               g_Lower400VCnt ++;
 0284 80911700          lds R24,_g_Lower400VCnt
 0288 90911800          lds R25,_g_Lower400VCnt+1
 028C 0196              adiw R24,1
 028E 90931800          sts _g_Lower400VCnt+1,R25
 0292 80931700          sts _g_Lower400VCnt,R24
 0296                   .dbline 197
 0296           ;       }
 0296 09C0              rjmp L24
 0298           L23:
 0298                   .dbline 199
 0298           ;       else
 0298           ;       {
 0298                   .dbline 200
 0298           ;               g_Over400VCnt ++;
 0298 80911900          lds R24,_g_Over400VCnt
 029C 90911A00          lds R25,_g_Over400VCnt+1
 02A0 0196              adiw R24,1
 02A2 90931A00          sts _g_Over400VCnt+1,R25
 02A6 80931900          sts _g_Over400VCnt,R24
 02AA                   .dbline 201
 02AA           ;       }
 02AA           L24:
 02AA                   .dbline 202
 02AA           ;       if (g_Lower400VCnt + g_Over400VCnt > 300)
 02AA 20901900          lds R2,_g_Over400VCnt
 02AE 30901A00          lds R3,_g_Over400VCnt+1
 02B2 40901700          lds R4,_g_Lower400VCnt
 02B6 50901800          lds R5,_g_Lower400VCnt+1
 02BA 420C              add R4,R2
 02BC 531C              adc R5,R3
 02BE 8CE2              ldi R24,300
 02C0 91E0              ldi R25,1
 02C2 8415              cp R24,R4
 02C4 9505              cpc R25,R5
 02C6 C0F4              brsh L25
 02C8                   .dbline 203
 02C8           ;       {
 02C8                   .dbline 204
 02C8           ;               if (g_Lower400VCnt >= g_Over400VCnt)
 02C8 40901700          lds R4,_g_Lower400VCnt
 02CC 50901800          lds R5,_g_Lower400VCnt+1
 02D0 4214              cp R4,R2
 02D2 5304              cpc R5,R3
 02D4 20F0              brlo L27
 02D6                   .dbline 205
 02D6           ;               {
 02D6                   .dbline 206

⌨️ 快捷键说明

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