📄 check.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 + -