📄 check.lis
字号:
.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 + -