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

📄 check.lis

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LIS
字号:
                        .module check.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\_文档~1\easy-STQ-20080712\check.c
 0000                   .dbfunc e check _check fV
                        .even
 0000           _check::
 0000 0E940000          xcall push_gset2
 0004                   .dbline -1
 0004                   .dbline 7
 0004           ; 
 0004           ; 
 0004           ; #define CHECK_GLOBAL
 0004           ; #include "check.h"
 0004           ; 
 0004           ; void check(void)              //电机参数检测任务,只上电时执行一次
 0004           ; {
 0004                   .dbline 8
 0004           ;  limit_direction = 0;
 0004 2224              clr R2
 0006 20920000          sts _limit_direction,R2
 000A                   .dbline 10
 000A           ;  
 000A           ;  if(GetLimit1())              //限位1正常为关限位
 000A CC99              sbic 0x19,4
 000C 34C0              rjmp L5
 000E                   .dbline 11
 000E           ;  {
 000E           L7:
 000E                   .dbline 13
 000E           ;  LIMIT1:
 000E           ;   OpenMotor();
 000E 0E940000          xcall _OpenMotor
 0012                   .dbline 14
 0012           ;   MotorDelayTime = 0;
 0012 2224              clr R2
 0014 3324              clr R3
 0016 30920100          sts _MotorDelayTime+1,R3
 001A 20920000          sts _MotorDelayTime,R2
 001E           L8:
 001E                   .dbline 15
 001E           L9:
 001E                   .dbline 15
 001E           ;   while((MotorDelayTime<200)&&GetLimit());
 001E 80910000          lds R24,_MotorDelayTime
 0022 90910100          lds R25,_MotorDelayTime+1
 0026 883C              cpi R24,200
 0028 E0E0              ldi R30,0
 002A 9E07              cpc R25,R30
 002C 20F4              brsh L11
 002E CC9B              sbis 0x19,4
 0030 F6CF              rjmp L8
 0032 CB9B              sbis 0x19,3
 0034 F4CF              rjmp L8
 0036           L11:
 0036                   .dbline 16
 0036           ;   if(GetLimit1())limit_direction = 0;
 0036 CC99              sbic 0x19,4
 0038 04C0              rjmp L12
 003A                   .dbline 16
 003A 2224              clr R2
 003C 20920000          sts _limit_direction,R2
 0040 03C0              xjmp L13
 0042           L12:
 0042                   .dbline 17
 0042           ;   else limit_direction = 1;
 0042 81E0              ldi R24,1
 0044 80930000          sts _limit_direction,R24
 0048           L13:
 0048                   .dbline 19
 0048           ;                                          
 0048           ;   CloseMotor();                  //复位电机
 0048 0E940000          xcall _CloseMotor
 004C                   .dbline 20
 004C           ;   MotorDelayTime = 0;
 004C 2224              clr R2
 004E 3324              clr R3
 0050 30920100          sts _MotorDelayTime+1,R3
 0054 20920000          sts _MotorDelayTime,R2
 0058           L14:
 0058                   .dbline 21
 0058           L15:
 0058                   .dbline 21
 0058           ;   while((MotorDelayTime<200)&&!GetLimit());
 0058 80910000          lds R24,_MotorDelayTime
 005C 90910100          lds R25,_MotorDelayTime+1
 0060 883C              cpi R24,200
 0062 E0E0              ldi R30,0
 0064 9E07              cpc R25,R30
 0066 20F4              brsh L18
 0068 CC9B              sbis 0x19,4
 006A 02C0              rjmp L18
 006C CB99              sbic 0x19,3
 006E F4CF              rjmp L14
 0070           L18:
 0070                   .dbline 22
 0070           ;   StopMotor();        
 0070 0E940000          xcall _StopMotor
 0074                   .dbline 24
 0074           ;   
 0074           ;   return;
 0074 A1C0              xjmp L4
 0076           L5:
 0076                   .dbline 28
 0076           ;  }
 0076           ;  
 0076           ;  
 0076           ;  else if(GetLimit2())        //限位2正常为开限位
 0076 CB99              sbic 0x19,3
 0078 34C0              rjmp L19
 007A                   .dbline 29
 007A           ;  {
 007A           L21:
 007A                   .dbline 31
 007A           ;  LIMIT2:
 007A           ;   CloseMotor();
 007A 0E940000          xcall _CloseMotor
 007E                   .dbline 32
 007E           ;   MotorDelayTime = 0;
 007E 2224              clr R2
 0080 3324              clr R3
 0082 30920100          sts _MotorDelayTime+1,R3
 0086 20920000          sts _MotorDelayTime,R2
 008A           L22:
 008A                   .dbline 33
 008A           L23:
 008A                   .dbline 33
 008A           ;   while((MotorDelayTime<200)&&GetLimit());
 008A 80910000          lds R24,_MotorDelayTime
 008E 90910100          lds R25,_MotorDelayTime+1
 0092 883C              cpi R24,200
 0094 E0E0              ldi R30,0
 0096 9E07              cpc R25,R30
 0098 20F4              brsh L25
 009A CC9B              sbis 0x19,4
 009C F6CF              rjmp L22
 009E CB9B              sbis 0x19,3
 00A0 F4CF              rjmp L22
 00A2           L25:
 00A2                   .dbline 34
 00A2           ;   if(GetLimit2())limit_direction = 0;
 00A2 CB99              sbic 0x19,3
 00A4 04C0              rjmp L26
 00A6                   .dbline 34
 00A6 2224              clr R2
 00A8 20920000          sts _limit_direction,R2
 00AC 03C0              xjmp L27
 00AE           L26:
 00AE                   .dbline 35
 00AE           ;   else limit_direction = 1;
 00AE 81E0              ldi R24,1
 00B0 80930000          sts _limit_direction,R24
 00B4           L27:
 00B4                   .dbline 37
 00B4           ;   
 00B4           ;   OpenMotor();
 00B4 0E940000          xcall _OpenMotor
 00B8                   .dbline 38
 00B8           ;   MotorDelayTime = 0;
 00B8 2224              clr R2
 00BA 3324              clr R3
 00BC 30920100          sts _MotorDelayTime+1,R3
 00C0 20920000          sts _MotorDelayTime,R2
 00C4           L28:
 00C4                   .dbline 39
 00C4           L29:
 00C4                   .dbline 39
 00C4           ;   while((MotorDelayTime<200)&&GetLimit());
 00C4 80910000          lds R24,_MotorDelayTime
 00C8 90910100          lds R25,_MotorDelayTime+1
 00CC 883C              cpi R24,200
 00CE E0E0              ldi R30,0
 00D0 9E07              cpc R25,R30
 00D2 20F4              brsh L31
 00D4 CC9B              sbis 0x19,4
 00D6 F6CF              rjmp L28
 00D8 CB9B              sbis 0x19,3
 00DA F4CF              rjmp L28
 00DC           L31:
 00DC                   .dbline 40
 00DC           ;   StopMotor();        
 00DC 0E940000          xcall _StopMotor
 00E0                   .dbline 42
 00E0           ;    
 00E0           ;   return;
 00E0 6BC0              xjmp L4
 00E2           L19:
 00E2                   .dbline 47
 00E2           ;  }
 00E2           ;  
 00E2           ;  
 00E2           ;  else                 //在中间位置时尝试使电机动作到限位
 00E2           ;  {
 00E2                   .dbline 48
 00E2           ;   OpenMotor();
 00E2 0E940000          xcall _OpenMotor
 00E6                   .dbline 49
 00E6           ;   MotorDelayTime = 0;
 00E6 2224              clr R2
 00E8 3324              clr R3
 00EA 30920100          sts _MotorDelayTime+1,R3
 00EE 20920000          sts _MotorDelayTime,R2
 00F2           L32:
 00F2                   .dbline 50
 00F2           L33:
 00F2                   .dbline 50
 00F2           ;   while((MotorDelayTime<200)&&!GetLimit());
 00F2 80910000          lds R24,_MotorDelayTime
 00F6 90910100          lds R25,_MotorDelayTime+1
 00FA 883C              cpi R24,200
 00FC E0E0              ldi R30,0
 00FE 9E07              cpc R25,R30
 0100 20F4              brsh L36
 0102 CC9B              sbis 0x19,4
 0104 02C0              rjmp L36
 0106 CB99              sbic 0x19,3
 0108 F4CF              rjmp L32
 010A           L36:
 010A                   .dbline 51
 010A           ;   if(GetLimit1())goto LIMIT1;
 010A CC99              sbic 0x19,4
 010C 01C0              rjmp L37
 010E                   .dbline 51
 010E 7FCF              xjmp L7
 0110           L37:
 0110                   .dbline 52
 0110           ;   if(GetLimit2())goto LIMIT2;
 0110 CB99              sbic 0x19,3
 0112 01C0              rjmp L39
 0114                   .dbline 52
 0114 B2CF              xjmp L21
 0116           L39:
 0116                   .dbline 54
 0116           ;   
 0116           ;   if(!GetLimit())
 0116 CC9B              sbis 0x19,4
 0118 47C0              rjmp L41
 011A CB9B              sbis 0x19,3
 011C 45C0              rjmp L41
 011E                   .dbline 55
 011E           ;   {
 011E                   .dbline 56
 011E           ;    CloseMotor();
 011E 0E940000          xcall _CloseMotor
 0122                   .dbline 57
 0122           ;    MotorDelayTime = 0;
 0122 2224              clr R2
 0124 3324              clr R3
 0126 30920100          sts _MotorDelayTime+1,R3
 012A 20920000          sts _MotorDelayTime,R2
 012E           L43:
 012E                   .dbline 58
 012E           L44:
 012E                   .dbline 58
 012E           ;    while((MotorDelayTime<250)&&!GetLimit());
 012E 80910000          lds R24,_MotorDelayTime
 0132 90910100          lds R25,_MotorDelayTime+1
 0136 8A3F              cpi R24,250
 0138 E0E0              ldi R30,0
 013A 9E07              cpc R25,R30
 013C 20F4              brsh L47
 013E CC9B              sbis 0x19,4
 0140 02C0              rjmp L47
 0142 CB99              sbic 0x19,3
 0144 F4CF              rjmp L43
 0146           L47:
 0146                   .dbline 59
 0146           ;    if(GetLimit1())goto LIMIT1;
 0146 CC99              sbic 0x19,4
 0148 01C0              rjmp L48
 014A                   .dbline 59
 014A 61CF              xjmp L7
 014C           L48:
 014C                   .dbline 60
 014C           ;    if(GetLimit2())goto LIMIT2;
 014C CB99              sbic 0x19,3
 014E 01C0              rjmp L50
 0150                   .dbline 60
 0150 94CF              xjmp L21
 0152           L50:
 0152                   .dbline 62
 0152           ;    
 0152           ;    if(!GetLimit())
 0152 CC9B              sbis 0x19,4
 0154 21C0              rjmp L52
 0156 CB9B              sbis 0x19,3
 0158 1FC0              rjmp L52
 015A                   .dbline 63
 015A           ;    {
 015A                   .dbline 64
 015A           ;     MotorDelayTime = 0;
 015A 2224              clr R2
 015C 3324              clr R3
 015E 30920100          sts _MotorDelayTime+1,R3
 0162 20920000          sts _MotorDelayTime,R2
 0166           L54:
 0166                   .dbline 65
 0166           L55:
 0166                   .dbline 65
 0166           ;     while((MotorDelayTime<400UL)&&!GetLimit());
 0166 40E9              ldi R20,144
 0168 51E0              ldi R21,1
 016A 60E0              ldi R22,0
 016C 70E0              ldi R23,0
 016E 20900000          lds R2,_MotorDelayTime
 0172 30900100          lds R3,_MotorDelayTime+1
 0176 4424              clr R4
 0178 5524              clr R5
 017A 2416              cp R2,R20
 017C 3506              cpc R3,R21
 017E 4606              cpc R4,R22
 0180 5706              cpc R5,R23
 0182 20F4              brsh L58
 0184 CC9B              sbis 0x19,4
 0186 02C0              rjmp L58
 0188 CB99              sbic 0x19,3
 018A EDCF              rjmp L54
 018C           L58:
 018C                   .dbline 66
 018C           ;       if(GetLimit1())goto LIMIT1;
 018C CC99              sbic 0x19,4
 018E 01C0              rjmp L59
 0190                   .dbline 66
 0190 3ECF              xjmp L7
 0192           L59:
 0192                   .dbline 67
 0192           ;     if(GetLimit2())goto LIMIT2;
 0192 CB99              sbic 0x19,3
 0194 01C0              rjmp L61
 0196                   .dbline 67
 0196 71CF              xjmp L21
 0198           L61:
 0198                   .dbline 68
 0198           ;    }
 0198           L52:
 0198                   .dbline 70
 0198           ;    
 0198           ;    StopMotor();
 0198 0E940000          xcall _StopMotor
 019C                   .dbline 71
 019C           ;    if(GetLimit1())goto LIMIT1;
 019C CC99              sbic 0x19,4
 019E 01C0              rjmp L63
 01A0                   .dbline 71
 01A0 36CF              xjmp L7
 01A2           L63:
 01A2                   .dbline 72
 01A2           ;    if(GetLimit2())goto LIMIT2;
 01A2 CB99              sbic 0x19,3
 01A4 01C0              rjmp L65
 01A6                   .dbline 72
 01A6 69CF              xjmp L21
 01A8           L65:
 01A8                   .dbline 73
 01A8           ;   }
 01A8           L41:
 01A8                   .dbline 75
 01A8           ;   
 01A8           ;   if(!GetLimit())        //失败之后让程序定位在这里
 01A8 CC9B              sbis 0x19,4
 01AA 06C0              rjmp L67
 01AC CB9B              sbis 0x19,3
 01AE 04C0              rjmp L67
 01B0                   .dbline 76
 01B0           ;   {
 01B0 02C0              xjmp L70
 01B2           L69:
 01B2                   .dbline 78
 01B2                   .dbline 79
 01B2 C59A              sbi 0x18,5
 01B4                   .dbline 80
 01B4 C69A              sbi 0x18,6
 01B6                   .dbline 81
 01B6           L70:
 01B6                   .dbline 77
 01B6           ;    while(1)                  
 01B6 FDCF              xjmp L69
 01B8           X0:
 01B8                   .dbline 82
 01B8           ;    {
 01B8           ;     ClrLocalLed();
 01B8           ;     ClrRemoteLed();
 01B8           ;    }
 01B8           ;   } 
 01B8           L67:
 01B8                   .dbline 83
 01B8           ;  }
 01B8                   .dbline -2
 01B8           L4:
 01B8 0E940000          xcall pop_gset2
 01BC                   .dbline 0 ; func end
 01BC 0895              ret
 01BE                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\_文档~1\easy-STQ-20080712\check.c
 0000           _limit_direction::
 0000                   .blkb 1
 0001                   .dbfile D:\_文档~1\easy-STQ-20080712/check.h
 0001                   .dbsym e limit_direction _limit_direction c

⌨️ 快捷键说明

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