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

📄 check.lis

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module check.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712\check.c
 0000                   .dbfunc e check _check fV
                        .even
 0000           _check::
 0000 0E940000          xcall push_gset2
 0004                   .dbline -1
 0004                   .dbline 20
 0004           ; 
 0004           ; ///////////////////////////////////////////////////////////////
 0004           ; /**************************************************************
 0004           ; 
 0004           ;       公司名称:       扬州恒博科技
 0004           ;       模块名  :       点动型STQ执行机构主控程序 
 0004           ;       创建人  :       章俭文                                         
 0004           ;       日期    :       2008/08/19                                              
 0004           ;       功能描述:   完成对本地旋钮和远程开关量的控制功能                                
 0004           ;       其它说明:   编译环境为ICCAVR V6.31A                                            
 0004           ;       版本    :       V1.0
 0004           ; 
 0004           ; **************************************************************/
 0004           ; ///////////////////////////////////////////////////////////////
 0004           ; 
 0004           ; #define CHECK_GLOBAL
 0004           ; #include "check.h"
 0004           ; 
 0004           ; void check(void)              //电机参数检测任务,只上电时执行一次
 0004           ; {
 0004                   .dbline 21
 0004           ;  limit_direction = 0;
 0004 2224              clr R2
 0006 20920000          sts _limit_direction,R2
 000A                   .dbline 23
 000A           ;  
 000A           ;  if(GetLimit1())              //限位1正常为关限位
 000A CC99              sbic 0x19,4
 000C 34C0              rjmp L5
 000E                   .dbline 24
 000E           ;  {
 000E           L7:
 000E                   .dbline 26
 000E           ;  LIMIT1:
 000E           ;   OpenMotor();
 000E 0E940000          xcall _OpenMotor
 0012                   .dbline 27
 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 28
 001E           L9:
 001E                   .dbline 28
 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 29
 0036           ;   if(GetLimit1())limit_direction = 0;
 0036 CC99              sbic 0x19,4
 0038 04C0              rjmp L12
 003A                   .dbline 29
 003A 2224              clr R2
 003C 20920000          sts _limit_direction,R2
 0040 03C0              xjmp L13
 0042           L12:
 0042                   .dbline 30
 0042           ;   else limit_direction = 1;
 0042 81E0              ldi R24,1
 0044 80930000          sts _limit_direction,R24
 0048           L13:
 0048                   .dbline 32
 0048           ;                                          
 0048           ;   CloseMotor();                  //复位电机
 0048 0E940000          xcall _CloseMotor
 004C                   .dbline 33
 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 34
 0058           L15:
 0058                   .dbline 34
 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 35
 0070           ;   StopMotor();        
 0070 0E940000          xcall _StopMotor
 0074                   .dbline 37
 0074           ;   
 0074           ;   return;
 0074 A1C0              xjmp L4
 0076           L5:
 0076                   .dbline 41
 0076           ;  }
 0076           ;  
 0076           ;  
 0076           ;  else if(GetLimit2())        //限位2正常为开限位
 0076 CB99              sbic 0x19,3
 0078 34C0              rjmp L19
 007A                   .dbline 42
 007A           ;  {
 007A           L21:
 007A                   .dbline 44
 007A           ;  LIMIT2:
 007A           ;   CloseMotor();
 007A 0E940000          xcall _CloseMotor
 007E                   .dbline 45
 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 46
 008A           L23:
 008A                   .dbline 46
 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 47
 00A2           ;   if(GetLimit2())limit_direction = 0;
 00A2 CB99              sbic 0x19,3
 00A4 04C0              rjmp L26
 00A6                   .dbline 47
 00A6 2224              clr R2
 00A8 20920000          sts _limit_direction,R2
 00AC 03C0              xjmp L27
 00AE           L26:
 00AE                   .dbline 48
 00AE           ;   else limit_direction = 1;
 00AE 81E0              ldi R24,1
 00B0 80930000          sts _limit_direction,R24
 00B4           L27:
 00B4                   .dbline 50
 00B4           ;   
 00B4           ;   OpenMotor();
 00B4 0E940000          xcall _OpenMotor
 00B8                   .dbline 51
 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 52
 00C4           L29:
 00C4                   .dbline 52
 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 53
 00DC           ;   StopMotor();        
 00DC 0E940000          xcall _StopMotor
 00E0                   .dbline 55
 00E0           ;    
 00E0           ;   return;
 00E0 6BC0              xjmp L4
 00E2           L19:
 00E2                   .dbline 60
 00E2           ;  }
 00E2           ;  
 00E2           ;  
 00E2           ;  else                 //在中间位置时尝试使电机动作到限位
 00E2           ;  {
 00E2                   .dbline 61

⌨️ 快捷键说明

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