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

📄 motor.lis

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01AA           ;   {
 01AA                   .dbline 102
 01AA           ;    OpenMotor();                                               //开电机
 01AA 50D0              xcall _OpenMotor
 01AC                   .dbline 103
 01AC           ;   }
 01AC           L43:
 01AC                   .dbline 106
 01AC           ;  
 01AC           ;   
 01AC           ;  }
 01AC           L41:
 01AC                   .dbline 108
 01AC           ; 
 01AC           ;  if(GetLocalClose()&&!GetLocalOpen())  //本地关
 01AC 9E99              sbic 0x13,6
 01AE 0CC0              rjmp L45
 01B0 9F9B              sbis 0x13,7
 01B2 0AC0              rjmp L45
 01B4                   .dbline 109
 01B4           ;  {  
 01B4                   .dbline 110
 01B4           ;   if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
 01B4 F3D0              xcall _GetLimitClose
 01B6 0023              tst R16
 01B8 39F4              brne L47
 01BA CA99              sbic 0x19,2
 01BC 05C0              rjmp L47
 01BE 80910100          lds R24,_MotorFlag
 01C2 8230              cpi R24,2
 01C4 09F0              breq L47
 01C6                   .dbline 111
 01C6           ;   {
 01C6                   .dbline 112
 01C6           ;    CloseMotor();
 01C6 75D0              xcall _CloseMotor
 01C8                   .dbline 113
 01C8           ;   }
 01C8           L47:
 01C8                   .dbline 114
 01C8           L45:
 01C8                   .dbline -2
 01C8           L40:
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbend
 01CA                   .dbfunc s MotorRemote3 _MotorRemote3 fV
                        .even
 01CA           _MotorRemote3:
 01CA                   .dbline -1
 01CA                   .dbline 120
 01CA           ;  }
 01CA           ;  
 01CA           ; }//edd of 本地控制
 01CA           ; 
 01CA           ; 
 01CA           ; static void MotorRemote3(void)           //远程三线制
 01CA           ; { 
 01CA                   .dbline 121
 01CA           ;  if(GetRemoteOpen()&&!GetRemoteClose())        //远程三线开
 01CA 8599              sbic 0x10,5
 01CC 0CC0              rjmp L50
 01CE 849B              sbis 0x10,4
 01D0 0AC0              rjmp L50
 01D2                   .dbline 122
 01D2           ;  {  
 01D2                   .dbline 123
 01D2           ;   if(!(GetLimitOpen()||GetOverheat())&&(MotorFlag != OPEN))
 01D2 04D1              xcall _GetLimitOpen
 01D4 0023              tst R16
 01D6 39F4              brne L52
 01D8 CA99              sbic 0x19,2
 01DA 05C0              rjmp L52
 01DC 80910100          lds R24,_MotorFlag
 01E0 8130              cpi R24,1
 01E2 09F0              breq L52
 01E4                   .dbline 124
 01E4           ;   {
 01E4                   .dbline 125
 01E4           ;    OpenMotor();   
 01E4 33D0              xcall _OpenMotor
 01E6                   .dbline 126
 01E6           ;   }
 01E6           L52:
 01E6                   .dbline 127
 01E6           ;  }
 01E6           L50:
 01E6                   .dbline 129
 01E6           ; 
 01E6           ;  if(GetRemoteClose()&&!GetRemoteOpen())        //远程三线关
 01E6 8499              sbic 0x10,4
 01E8 0CC0              rjmp L54
 01EA 859B              sbis 0x10,5
 01EC 0AC0              rjmp L54
 01EE                   .dbline 130
 01EE           ;  {
 01EE                   .dbline 131
 01EE           ;   if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
 01EE D6D0              xcall _GetLimitClose
 01F0 0023              tst R16
 01F2 39F4              brne L56
 01F4 CA99              sbic 0x19,2
 01F6 05C0              rjmp L56
 01F8 80910100          lds R24,_MotorFlag
 01FC 8230              cpi R24,2
 01FE 09F0              breq L56
 0200                   .dbline 132
 0200           ;   {
 0200                   .dbline 133
 0200           ;    CloseMotor();
 0200 58D0              xcall _CloseMotor
 0202                   .dbline 134
 0202           ;   }
 0202           L56:
 0202                   .dbline 136
 0202           L54:
 0202                   .dbline -2
 0202           L49:
 0202                   .dbline 0 ; func end
 0202 0895              ret
 0204                   .dbend
 0204                   .dbfunc s MotorRemote4 _MotorRemote4 fV
                        .even
 0204           _MotorRemote4:
 0204                   .dbline -1
 0204                   .dbline 143
 0204           ;   
 0204           ;  }
 0204           ; }
 0204           ; 
 0204           ; 
 0204           ; 
 0204           ; 
 0204           ; static void MotorRemote4(void)                                //远程四线制
 0204           ; { 
 0204                   .dbline 144
 0204           ;  if(GetRemoteStop())                                  //远程四线停
 0204 8399              sbic 0x10,3
 0206 01C0              rjmp L59
 0208                   .dbline 145
 0208           ;  {
 0208                   .dbline 146
 0208           ;   StopMotor();
 0208 87D0              xcall _StopMotor
 020A                   .dbline 147
 020A           ;  }
 020A           L59:
 020A                   .dbline 149
 020A           ;                                                                                       //远程四线开
 020A           ;  if(GetRemoteOpen()&&!GetRemoteClose()&&!GetRemoteStop())      
 020A 8599              sbic 0x10,5
 020C 0EC0              rjmp L61
 020E 849B              sbis 0x10,4
 0210 0CC0              rjmp L61
 0212 839B              sbis 0x10,3
 0214 0AC0              rjmp L61
 0216                   .dbline 150
 0216           ;  {  
 0216                   .dbline 151
 0216           ;   if(!(GetLimitOpen()||GetOverheat())&&(MotorFlag != OPEN))
 0216 E2D0              xcall _GetLimitOpen
 0218 0023              tst R16
 021A 39F4              brne L63
 021C CA99              sbic 0x19,2
 021E 05C0              rjmp L63
 0220 80910100          lds R24,_MotorFlag
 0224 8130              cpi R24,1
 0226 09F0              breq L63
 0228                   .dbline 152
 0228           ;   {
 0228                   .dbline 153
 0228           ;    OpenMotor();   
 0228 11D0              xcall _OpenMotor
 022A                   .dbline 154
 022A           ;   }
 022A           L63:
 022A                   .dbline 155
 022A           ;  }
 022A           L61:
 022A                   .dbline 157
 022A           ;                                                                                  //远程四线关
 022A           ;  if(GetRemoteClose()&&!GetRemoteOpen()&&!GetRemoteStop())      
 022A 8499              sbic 0x10,4
 022C 0EC0              rjmp L65
 022E 859B              sbis 0x10,5
 0230 0CC0              rjmp L65
 0232 839B              sbis 0x10,3
 0234 0AC0              rjmp L65
 0236                   .dbline 158
 0236           ;  {  
 0236                   .dbline 159
 0236           ;   if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
 0236 B2D0              xcall _GetLimitClose
 0238 0023              tst R16
 023A 39F4              brne L67
 023C CA99              sbic 0x19,2
 023E 05C0              rjmp L67
 0240 80910100          lds R24,_MotorFlag
 0244 8230              cpi R24,2
 0246 09F0              breq L67
 0248                   .dbline 160
 0248           ;   {
 0248                   .dbline 161
 0248           ;    CloseMotor();
 0248 34D0              xcall _CloseMotor
 024A                   .dbline 162
 024A           ;   }
 024A           L67:
 024A                   .dbline 164
 024A           L65:
 024A                   .dbline -2
 024A           L58:
 024A                   .dbline 0 ; func end
 024A 0895              ret
 024C                   .dbend
 024C                   .dbfunc e OpenMotor _OpenMotor fV
                        .even
 024C           _OpenMotor::
 024C                   .dbline -1
 024C                   .dbline 169
 024C           ;   
 024C           ;  }
 024C           ; }
 024C           ; 
 024C           ; 
 024C           ; void OpenMotor(void)                    //开电机
 024C           ; {
 024C                   .dbline 171
 024C           ; 
 024C           ;  if(MotorFlag == CLOSE)                                 //反向切换延时1S
 024C 80910100          lds R24,_MotorFlag
 0250 8230              cpi R24,2
 0252 01F5              brne L70
 0254                   .dbline 172
 0254           ;  { 
 0254                   .dbline 173
 0254           ;   MotorFlag = OPEN;
 0254 81E0              ldi R24,1
 0256 80930100          sts _MotorFlag,R24
 025A                   .dbline 175
 025A           ;   
 025A           ;   if(GetDirection())
 025A C99B              sbis 0x19,1
 025C 03C0              rjmp L72
 025E                   .dbline 176
 025E           ;   {
 025E                   .dbline 177
 025E           ;    ClrMotor1();
 025E A998              cbi 0x15,1
 0260                   .dbline 178
 0260           ;    SetMotor2(); 
 0260 A89A              sbi 0x15,0
 0262                   .dbline 179
 0262           ;   }
 0262 02C0              xjmp L73
 0264           L72:
 0264                   .dbline 181
 0264           ;   else
 0264           ;   {
 0264                   .dbline 182
 0264           ;    SetMotor1();
 0264 A99A              sbi 0x15,1
 0266                   .dbline 183
 0266           ;    ClrMotor2(); 
 0266 A898              cbi 0x15,0
 0268                   .dbline 184
 0268           ;   }
 0268           L73:
 0268                   .dbline 186
 0268           ;   
 0268           ;   MotorDelayTime = 0;
 0268 2224              clr R2
 026A 3324              clr R3
 026C 30920300          sts _MotorDelayTime+1,R3
 0270 20920200          sts _MotorDelayTime,R2
 0274 07C0              xjmp L75
 0276           L74:
 0276                   .dbline 188
 0276           ;   while(MotorDelayTime<100)
 0276           ;   {
 0276                   .dbline 189
 0276 CA99              sbic 0x19,2
 0278 04C0              rjmp L80
 027A CC9B              sbis 0x19,4
 027C 02C0              rjmp L80
 027E CB99              sbic 0x19,3
 0280 01C0              rjmp L77
 0282           L80:
 0282                   .dbline 189
 0282           ;    if(GetOverheat()||GetLimit())break;
 0282 08C0              xjmp L76
 0284           L77:
 0284                   .dbline 190
 0284           L75:
 0284                   .dbline 187
 0284 80910200          lds R24,_MotorDelayTime
 0288 90910300          lds R25,_MotorDelayTime+1
 028C 8436              cpi R24,100
 028E E0E0              ldi R30,0
 0290 9E07              cpc R25,R30
 0292 88F3              brlo L74
 0294           L76:
 0294                   .dbline 191
 0294           ;   }    
 0294           ;  }
 0294           L70:
 0294                   .dbline 193
 0294           ;  
 0294           ;  if(MotorFlag == STOP)
 0294 80910100          lds R24,_MotorFlag
 0298 8330              cpi R24,3
 029A 51F4              brne L81
 029C                   .dbline 194
 029C           ;  {
 029C                   .dbline 195
 029C           ;   MotorFlag = OPEN;
 029C 81E0              ldi R24,1
 029E 80930100          sts _MotorFlag,R24
 02A2                   .dbline 196
 02A2           ;   if(GetDirection())
 02A2 C99B              sbis 0x19,1
 02A4 03C0              rjmp L83
 02A6                   .dbline 197
 02A6           ;   {
 02A6                   .dbline 198
 02A6           ;    ClrMotor1();
 02A6 A998              cbi 0x15,1
 02A8                   .dbline 199
 02A8           ;    SetMotor2(); 
 02A8 A89A              sbi 0x15,0
 02AA                   .dbline 200
 02AA           ;   }
 02AA 02C0              xjmp L84
 02AC           L83:
 02AC                   .dbline 202
 02AC           ;   else
 02AC           ;   {
 02AC                   .dbline 203
 02AC           ;    SetMotor1();
 02AC A99A              sbi 0x15,1
 02AE                   .dbline 204
 02AE           ;    ClrMotor2(); 
 02AE A898              cbi 0x15,0
 02B0                   .dbline 205
 02B0           ;   }
 02B0           L84:
 02B0                   .dbline 206
 02B0           L81:
 02B0                   .dbline -2
 02B0           L69:
 02B0                   .dbline 0 ; func end
 02B0 0895              ret
 02B2                   .dbend
 02B2                   .dbfunc e CloseMotor _CloseMotor fV
                        .even
 02B2           _CloseMotor::
 02B2                   .dbline -1
 02B2                   .dbline 211
 02B2           ;  }
 02B2           ;  
 02B2           ; }//开电机
 02B2           ; 
 02B2           ; void CloseMotor()                             //关电机        
 02B2           ; {
 02B2                   .dbline 212
 02B2           ;  if(MotorFlag == OPEN)                                        //反向切换延时1S
 02B2 80910100          lds R24,_MotorFlag
 02B6 8130              cpi R24,1
 02B8 01F5              brne L86
 02BA                   .dbline 213
 02BA           ;  { 
 02BA                   .dbline 214
 02BA           ;   MotorFlag = CLOSE;     
 02BA 82E0              ldi R24,2
 02BC 80930100          sts _MotorFlag,R24
 02C0                   .dbline 215
 02C0           ;   if(GetDirection())
 02C0 C99B              sbis 0x19,1
 02C2 03C0              rjmp L88
 02C4                   .dbline 216
 02C4           ;   {
 02C4                   .dbline 217
 02C4           ;    SetMotor1();
 02C4 A99A              sbi 0x15,1
 02C6                   .dbline 218
 02C6           ;    ClrMotor2();
 02C6 A898              cbi 0x15,0
 02C8                   .dbline 219
 02C8           ;   }
 02C8 02C0              xjmp L89
 02CA           L88:
 02CA                   .dbline 221
 02CA           ;   else
 02CA           ;   {
 02CA                   .dbline 222
 02CA           ;    ClrMotor1();
 02CA A998              cbi 0x15,1
 02CC                   .dbline 223
 02CC           ;    SetMotor2(); 

⌨️ 快捷键说明

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