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

📄 motor.lis

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 02CC A89A              sbi 0x15,0
 02CE                   .dbline 224
 02CE           ;   }
 02CE           L89:
 02CE                   .dbline 226
 02CE           ;   
 02CE           ;   MotorDelayTime = 0;
 02CE 2224              clr R2
 02D0 3324              clr R3
 02D2 30920300          sts _MotorDelayTime+1,R3
 02D6 20920200          sts _MotorDelayTime,R2
 02DA 07C0              xjmp L91
 02DC           L90:
 02DC                   .dbline 228
 02DC           ;   while(MotorDelayTime<100)
 02DC           ;   {
 02DC                   .dbline 229
 02DC CA99              sbic 0x19,2
 02DE 04C0              rjmp L96
 02E0 CC9B              sbis 0x19,4
 02E2 02C0              rjmp L96
 02E4 CB99              sbic 0x19,3
 02E6 01C0              rjmp L93
 02E8           L96:
 02E8                   .dbline 229
 02E8           ;    if(GetOverheat()||GetLimit())break;
 02E8 08C0              xjmp L92
 02EA           L93:
 02EA                   .dbline 230
 02EA           L91:
 02EA                   .dbline 227
 02EA 80910200          lds R24,_MotorDelayTime
 02EE 90910300          lds R25,_MotorDelayTime+1
 02F2 8436              cpi R24,100
 02F4 E0E0              ldi R30,0
 02F6 9E07              cpc R25,R30
 02F8 88F3              brlo L90
 02FA           L92:
 02FA                   .dbline 231
 02FA           ;   }      
 02FA           ;  }
 02FA           L86:
 02FA                   .dbline 233
 02FA           ;  
 02FA           ;  if (MotorFlag == STOP)
 02FA 80910100          lds R24,_MotorFlag
 02FE 8330              cpi R24,3
 0300 51F4              brne L97
 0302                   .dbline 234
 0302           ;  {
 0302                   .dbline 235
 0302           ;   MotorFlag = CLOSE; 
 0302 82E0              ldi R24,2
 0304 80930100          sts _MotorFlag,R24
 0308                   .dbline 236
 0308           ;   if(GetDirection())
 0308 C99B              sbis 0x19,1
 030A 03C0              rjmp L99
 030C                   .dbline 237
 030C           ;   {
 030C                   .dbline 238
 030C           ;    SetMotor1();
 030C A99A              sbi 0x15,1
 030E                   .dbline 239
 030E           ;    ClrMotor2();
 030E A898              cbi 0x15,0
 0310                   .dbline 240
 0310           ;   }
 0310 02C0              xjmp L100
 0312           L99:
 0312                   .dbline 242
 0312           ;   else
 0312           ;   {
 0312                   .dbline 243
 0312           ;    ClrMotor1();
 0312 A998              cbi 0x15,1
 0314                   .dbline 244
 0314           ;    SetMotor2(); 
 0314 A89A              sbi 0x15,0
 0316                   .dbline 245
 0316           ;   }
 0316           L100:
 0316                   .dbline 246
 0316           L97:
 0316                   .dbline -2
 0316           L85:
 0316                   .dbline 0 ; func end
 0316 0895              ret
 0318                   .dbend
 0318                   .dbfunc e StopMotor _StopMotor fV
                        .even
 0318           _StopMotor::
 0318                   .dbline -1
 0318                   .dbline 251
 0318           ;  }
 0318           ;  
 0318           ; }//关电机
 0318           ; 
 0318           ; void StopMotor(void)                          //停电机停延时0.5S
 0318           ; {
 0318                   .dbline 252
 0318           ;  if(MotorFlag == OPEN||MotorFlag == CLOSE)
 0318 80910100          lds R24,_MotorFlag
 031C 8130              cpi R24,1
 031E 21F0              breq L104
 0320 80910100          lds R24,_MotorFlag
 0324 8230              cpi R24,2
 0326 D9F4              brne L102
 0328           L104:
 0328                   .dbline 253
 0328           ;  { 
 0328                   .dbline 254
 0328           ;   MotorFlag = STOP;
 0328 83E0              ldi R24,3
 032A 80930100          sts _MotorFlag,R24
 032E                   .dbline 255
 032E           ;   ClrMotor1();
 032E A998              cbi 0x15,1
 0330                   .dbline 256
 0330           ;   ClrMotor2();
 0330 A898              cbi 0x15,0
 0332                   .dbline 258
 0332           ;   
 0332           ;   MotorDelayTime = 0;                 
 0332 2224              clr R2
 0334 3324              clr R3
 0336 30920300          sts _MotorDelayTime+1,R3
 033A 20920200          sts _MotorDelayTime,R2
 033E 07C0              xjmp L106
 0340           L105:
 0340                   .dbline 260
 0340           ;   while(MotorDelayTime<50)
 0340           ;   {
 0340                   .dbline 261
 0340 CA99              sbic 0x19,2
 0342 04C0              rjmp L111
 0344 CC9B              sbis 0x19,4
 0346 02C0              rjmp L111
 0348 CB99              sbic 0x19,3
 034A 01C0              rjmp L108
 034C           L111:
 034C                   .dbline 261
 034C           ;    if(GetOverheat()||GetLimit())break;
 034C 08C0              xjmp L107
 034E           L108:
 034E                   .dbline 262
 034E           L106:
 034E                   .dbline 259
 034E 80910200          lds R24,_MotorDelayTime
 0352 90910300          lds R25,_MotorDelayTime+1
 0356 8233              cpi R24,50
 0358 E0E0              ldi R30,0
 035A 9E07              cpc R25,R30
 035C 88F3              brlo L105
 035E           L107:
 035E                   .dbline 263
 035E           L102:
 035E                   .dbline -2
 035E           L101:
 035E                   .dbline 0 ; func end
 035E 0895              ret
 0360                   .dbend
 0360                   .dbfunc e ProtectMotor _ProtectMotor fV
                        .even
 0360           _ProtectMotor::
 0360                   .dbline -1
 0360                   .dbline 267
 0360           ;   }     
 0360           ;  } 
 0360           ; }
 0360           ; 
 0360           ; void ProtectMotor()                                              //过热、限位信号保护
 0360           ; {                                                                                
 0360                   .dbline 268
 0360           ;  if(GetOverheat()) StopMotor();
 0360 CA9B              sbis 0x19,2
 0362 01C0              rjmp L113
 0364                   .dbline 268
 0364 D9DF              xcall _StopMotor
 0366           L113:
 0366                   .dbline 270
 0366           ;  
 0366           ;  if(GetLimitClose())
 0366 1AD0              xcall _GetLimitClose
 0368 0023              tst R16
 036A 51F0              breq L115
 036C                   .dbline 271
 036C           ;  {                                                                           //开信号时关限位不停
 036C                   .dbline 272
 036C 9F9B              sbis 0x13,7
 036E 06C0              rjmp L120
 0370 859B              sbis 0x10,5
 0372 04C0              rjmp L120
 0374 80910100          lds R24,_MotorFlag
 0378 8130              cpi R24,1
 037A 09F4              brne L117
 037C           L120:
 037C                   .dbline 272
 037C           ;   if(GetLocalOpen()||GetRemoteOpen()||MotorFlag == OPEN)return;
 037C 0EC0              xjmp L112
 037E           L117:
 037E                   .dbline 273
 037E           ;   StopMotor();
 037E CCDF              xcall _StopMotor
 0380                   .dbline 274
 0380           ;  }
 0380           L115:
 0380                   .dbline 276
 0380           ;  
 0380           ;  if(GetLimitOpen())   
 0380 2DD0              xcall _GetLimitOpen
 0382 0023              tst R16
 0384 51F0              breq L121
 0386                   .dbline 277
 0386           ;  {                                                                               //关信号时开限位不停                    
 0386                   .dbline 278
 0386 9E9B              sbis 0x13,6
 0388 06C0              rjmp L126
 038A 849B              sbis 0x10,4
 038C 04C0              rjmp L126
 038E 80910100          lds R24,_MotorFlag
 0392 8230              cpi R24,2
 0394 09F4              brne L123
 0396           L126:
 0396                   .dbline 278
 0396           ;   if(GetLocalClose()||GetRemoteClose()||MotorFlag == CLOSE)return;
 0396 01C0              xjmp L112
 0398           L123:
 0398                   .dbline 279
 0398 BFDF              xcall _StopMotor
 039A                   .dbline 280
 039A           L121:
 039A                   .dbline -2
 039A           L112:
 039A                   .dbline 0 ; func end
 039A 0895              ret
 039C                   .dbend
 039C                   .dbfunc e GetLimitClose _GetLimitClose fc
                        .even
 039C           _GetLimitClose::
 039C                   .dbline -1
 039C                   .dbline 286
 039C           ;   StopMotor();
 039C           ;  }
 039C           ;  
 039C           ; }
 039C           ; 
 039C           ; 
 039C           ; uchar GetLimitClose(void)
 039C           ; {
 039C                   .dbline 287
 039C           ;  if(limit_direction == 1)
 039C 80910000          lds R24,_limit_direction
 03A0 8130              cpi R24,1
 03A2 41F4              brne L128
 03A4                   .dbline 288
 03A4           ;  {
 03A4                   .dbline 289
 03A4           ;   return GetLimit1();
 03A4 CC99              sbic 0x19,4
 03A6 03C0              rjmp L130
 03A8 01E0              ldi R16,1
 03AA 10E0              ldi R17,0
 03AC 02C0              xjmp L131
 03AE           L130:
 03AE 0027              clr R16
 03B0 1127              clr R17
 03B2           L131:
 03B2 13C0              xjmp L127
 03B4           L128:
 03B4                   .dbline 291
 03B4           ;  }
 03B4           ;  else if((limit_direction == 0))
 03B4 20900000          lds R2,_limit_direction
 03B8 2220              tst R2
 03BA 41F4              brne L132
 03BC                   .dbline 292
 03BC           ;  {
 03BC                   .dbline 293
 03BC           ;   return GetLimit2(); 
 03BC CB99              sbic 0x19,3
 03BE 03C0              rjmp L134
 03C0 01E0              ldi R16,1
 03C2 10E0              ldi R17,0
 03C4 02C0              xjmp L135
 03C6           L134:
 03C6 0027              clr R16
 03C8 1127              clr R17
 03CA           L135:
 03CA 07C0              xjmp L127
 03CC           L132:
 03CC                   .dbline 296
 03CC           ;  }
 03CC           ;  else
 03CC           ;  {
 03CC                   .dbline 297
 03CC           ;   return GetLimit1();
 03CC CC99              sbic 0x19,4
 03CE 03C0              rjmp L136
 03D0 01E0              ldi R16,1
 03D2 10E0              ldi R17,0
 03D4 02C0              xjmp L137
 03D6           L136:
 03D6 0027              clr R16
 03D8 1127              clr R17
 03DA           L137:
 03DA                   .dbline -2
 03DA           L127:
 03DA                   .dbline 0 ; func end
 03DA 0895              ret
 03DC                   .dbend
 03DC                   .dbfunc e GetLimitOpen _GetLimitOpen fc
                        .even
 03DC           _GetLimitOpen::
 03DC                   .dbline -1
 03DC                   .dbline 302
 03DC           ;  }
 03DC           ; }
 03DC           ; 
 03DC           ; uchar GetLimitOpen(void)
 03DC           ; {
 03DC                   .dbline 303
 03DC           ;  if(limit_direction == 1)
 03DC 80910000          lds R24,_limit_direction
 03E0 8130              cpi R24,1
 03E2 41F4              brne L139
 03E4                   .dbline 304
 03E4           ;  {
 03E4                   .dbline 305
 03E4           ;   return GetLimit2();
 03E4 CB99              sbic 0x19,3
 03E6 03C0              rjmp L141
 03E8 01E0              ldi R16,1
 03EA 10E0              ldi R17,0
 03EC 02C0              xjmp L142
 03EE           L141:
 03EE 0027              clr R16
 03F0 1127              clr R17
 03F2           L142:
 03F2 13C0              xjmp L138
 03F4           L139:
 03F4                   .dbline 307
 03F4           ;  }
 03F4           ;  else if((limit_direction == 0))
 03F4 20900000          lds R2,_limit_direction
 03F8 2220              tst R2
 03FA 41F4              brne L143
 03FC                   .dbline 308
 03FC           ;  {
 03FC                   .dbline 309
 03FC           ;   return GetLimit1(); 
 03FC CC99              sbic 0x19,4
 03FE 03C0              rjmp L145
 0400 01E0              ldi R16,1
 0402 10E0              ldi R17,0
 0404 02C0              xjmp L146
 0406           L145:
 0406 0027              clr R16
 0408 1127              clr R17
 040A           L146:
 040A 07C0              xjmp L138
 040C           L143:
 040C                   .dbline 312
 040C           ;  }
 040C           ;  else
 040C           ;  {
 040C                   .dbline 313
 040C           ;   return GetLimit2();
 040C CB99              sbic 0x19,3
 040E 03C0              rjmp L147
 0410 01E0              ldi R16,1
 0412 10E0              ldi R17,0
 0414 02C0              xjmp L148
 0416           L147:
 0416 0027              clr R16
 0418 1127              clr R17
 041A           L148:
 041A                   .dbline -2
 041A           L138:
 041A                   .dbline 0 ; func end
 041A 0895              ret
 041C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712\motor.c
 0000           _ControlFlag::
 0000                   .blkb 1
 0001                   .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712/motor.h
 0001                   .dbsym e ControlFlag _ControlFlag c
 0001           _MotorFlag::
 0001                   .blkb 1
 0002                   .dbsym e MotorFlag _MotorFlag c
 0002           _MotorDelayTime::
 0002                   .blkb 2
 0004                   .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712/schedule.h
 0004                   .dbsym e MotorDelayTime _MotorDelayTime i
 0004           _TimeTick::
 0004                   .blkb 1
 0005                   .dbsym e TimeTick _TimeTick c

⌨️ 快捷键说明

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