📄 motor.s
字号:
; }
L67:
.dbline 151
L65:
.dbline -2
L58:
.dbline 0 ; func end
ret
.dbend
.dbfunc e OpenMotor _OpenMotor fV
.even
_OpenMotor::
.dbline -1
.dbline 156
;
; }
; }
;
;
; void OpenMotor(void) //开电机
; {
.dbline 158
;
; if(MotorFlag == CLOSE) //反向切换延时1S
lds R24,_MotorFlag
cpi R24,2
brne L70
.dbline 159
; {
.dbline 160
; MotorFlag = OPEN;
ldi R24,1
sts _MotorFlag,R24
.dbline 162
;
; if(GetDirection())
sbis 0x19,1
rjmp L72
.dbline 163
; {
.dbline 164
; ClrMotor1();
cbi 0x15,1
.dbline 165
; SetMotor2();
sbi 0x15,0
.dbline 166
; }
xjmp L73
L72:
.dbline 168
; else
; {
.dbline 169
; SetMotor1();
sbi 0x15,1
.dbline 170
; ClrMotor2();
cbi 0x15,0
.dbline 171
; }
L73:
.dbline 173
;
; MotorDelayTime = 0;
clr R2
clr R3
sts _MotorDelayTime+1,R3
sts _MotorDelayTime,R2
xjmp L75
L74:
.dbline 175
; while(MotorDelayTime<100)
; {
.dbline 176
sbic 0x19,2
rjmp L80
sbis 0x19,4
rjmp L80
sbic 0x19,3
rjmp L77
L80:
.dbline 176
; if(GetOverheat()||GetLimit())break;
xjmp L76
L77:
.dbline 177
L75:
.dbline 174
lds R24,_MotorDelayTime
lds R25,_MotorDelayTime+1
cpi R24,100
ldi R30,0
cpc R25,R30
brlo L74
L76:
.dbline 178
; }
; }
L70:
.dbline 180
;
; if(MotorFlag == STOP)
lds R24,_MotorFlag
cpi R24,3
brne L81
.dbline 181
; {
.dbline 182
; MotorFlag = OPEN;
ldi R24,1
sts _MotorFlag,R24
.dbline 183
; if(GetDirection())
sbis 0x19,1
rjmp L83
.dbline 184
; {
.dbline 185
; ClrMotor1();
cbi 0x15,1
.dbline 186
; SetMotor2();
sbi 0x15,0
.dbline 187
; }
xjmp L84
L83:
.dbline 189
; else
; {
.dbline 190
; SetMotor1();
sbi 0x15,1
.dbline 191
; ClrMotor2();
cbi 0x15,0
.dbline 192
; }
L84:
.dbline 193
L81:
.dbline -2
L69:
.dbline 0 ; func end
ret
.dbend
.dbfunc e CloseMotor _CloseMotor fV
.even
_CloseMotor::
.dbline -1
.dbline 198
; }
;
; }//开电机
;
; void CloseMotor() //关电机
; {
.dbline 199
; if(MotorFlag == OPEN) //反向切换延时1S
lds R24,_MotorFlag
cpi R24,1
brne L86
.dbline 200
; {
.dbline 201
; MotorFlag = CLOSE;
ldi R24,2
sts _MotorFlag,R24
.dbline 202
; if(GetDirection())
sbis 0x19,1
rjmp L88
.dbline 203
; {
.dbline 204
; SetMotor1();
sbi 0x15,1
.dbline 205
; ClrMotor2();
cbi 0x15,0
.dbline 206
; }
xjmp L89
L88:
.dbline 208
; else
; {
.dbline 209
; ClrMotor1();
cbi 0x15,1
.dbline 210
; SetMotor2();
sbi 0x15,0
.dbline 211
; }
L89:
.dbline 213
;
; MotorDelayTime = 0;
clr R2
clr R3
sts _MotorDelayTime+1,R3
sts _MotorDelayTime,R2
xjmp L91
L90:
.dbline 215
; while(MotorDelayTime<100)
; {
.dbline 216
sbic 0x19,2
rjmp L96
sbis 0x19,4
rjmp L96
sbic 0x19,3
rjmp L93
L96:
.dbline 216
; if(GetOverheat()||GetLimit())break;
xjmp L92
L93:
.dbline 217
L91:
.dbline 214
lds R24,_MotorDelayTime
lds R25,_MotorDelayTime+1
cpi R24,100
ldi R30,0
cpc R25,R30
brlo L90
L92:
.dbline 218
; }
; }
L86:
.dbline 220
;
; if (MotorFlag == STOP)
lds R24,_MotorFlag
cpi R24,3
brne L97
.dbline 221
; {
.dbline 222
; MotorFlag = CLOSE;
ldi R24,2
sts _MotorFlag,R24
.dbline 223
; if(GetDirection())
sbis 0x19,1
rjmp L99
.dbline 224
; {
.dbline 225
; SetMotor1();
sbi 0x15,1
.dbline 226
; ClrMotor2();
cbi 0x15,0
.dbline 227
; }
xjmp L100
L99:
.dbline 229
; else
; {
.dbline 230
; ClrMotor1();
cbi 0x15,1
.dbline 231
; SetMotor2();
sbi 0x15,0
.dbline 232
; }
L100:
.dbline 233
L97:
.dbline -2
L85:
.dbline 0 ; func end
ret
.dbend
.dbfunc e StopMotor _StopMotor fV
.even
_StopMotor::
.dbline -1
.dbline 238
; }
;
; }//关电机
;
; void StopMotor(void) //停电机停延时0.5S
; {
.dbline 239
; if(MotorFlag == OPEN||MotorFlag == CLOSE)
lds R24,_MotorFlag
cpi R24,1
breq L104
lds R24,_MotorFlag
cpi R24,2
brne L102
L104:
.dbline 240
; {
.dbline 241
; MotorFlag = STOP;
ldi R24,3
sts _MotorFlag,R24
.dbline 242
; ClrMotor1();
cbi 0x15,1
.dbline 243
; ClrMotor2();
cbi 0x15,0
.dbline 245
;
; MotorDelayTime = 0;
clr R2
clr R3
sts _MotorDelayTime+1,R3
sts _MotorDelayTime,R2
xjmp L106
L105:
.dbline 247
; while(MotorDelayTime<50)
; {
.dbline 248
sbic 0x19,2
rjmp L111
sbis 0x19,4
rjmp L111
sbic 0x19,3
rjmp L108
L111:
.dbline 248
; if(GetOverheat()||GetLimit())break;
xjmp L107
L108:
.dbline 249
L106:
.dbline 246
lds R24,_MotorDelayTime
lds R25,_MotorDelayTime+1
cpi R24,50
ldi R30,0
cpc R25,R30
brlo L105
L107:
.dbline 250
L102:
.dbline -2
L101:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ProtectMotor _ProtectMotor fV
.even
_ProtectMotor::
.dbline -1
.dbline 254
; }
; }
; }
;
; void ProtectMotor() //过热、限位信号保护
; {
.dbline 255
; if(GetOverheat()) StopMotor();
sbis 0x19,2
rjmp L113
.dbline 255
xcall _StopMotor
L113:
.dbline 257
;
; if(GetLimitClose())
xcall _GetLimitClose
tst R16
breq L115
.dbline 258
; { //开信号时关限位不停
.dbline 259
sbis 0x13,7
rjmp L120
sbis 0x10,5
rjmp L120
lds R24,_MotorFlag
cpi R24,1
brne L117
L120:
.dbline 259
; if(GetLocalOpen()||GetRemoteOpen()||MotorFlag == OPEN)return;
xjmp L112
L117:
.dbline 260
; StopMotor();
xcall _StopMotor
.dbline 261
; }
L115:
.dbline 263
;
; if(GetLimitOpen())
xcall _GetLimitOpen
tst R16
breq L121
.dbline 264
; { //关信号时开限位不停
.dbline 265
sbis 0x13,6
rjmp L126
sbis 0x10,4
rjmp L126
lds R24,_MotorFlag
cpi R24,2
brne L123
L126:
.dbline 265
; if(GetLocalClose()||GetRemoteClose()||MotorFlag == CLOSE)return;
xjmp L112
L123:
.dbline 266
xcall _StopMotor
.dbline 267
L121:
.dbline -2
L112:
.dbline 0 ; func end
ret
.dbend
.dbfunc e GetLimitClose _GetLimitClose fc
.even
_GetLimitClose::
.dbline -1
.dbline 273
; StopMotor();
; }
;
; }
;
;
; uchar GetLimitClose(void)
; {
.dbline 274
; if(limit_direction == 1)
lds R24,_limit_direction
cpi R24,1
brne L128
.dbline 275
; {
.dbline 276
; return GetLimit1();
sbic 0x19,4
rjmp L130
ldi R16,1
ldi R17,0
xjmp L131
L130:
clr R16
clr R17
L131:
xjmp L127
L128:
.dbline 278
; }
; else if((limit_direction == 0))
lds R2,_limit_direction
tst R2
brne L132
.dbline 279
; {
.dbline 280
; return GetLimit2();
sbic 0x19,3
rjmp L134
ldi R16,1
ldi R17,0
xjmp L135
L134:
clr R16
clr R17
L135:
xjmp L127
L132:
.dbline 283
; }
; else
; {
.dbline 284
; return GetLimit1();
sbic 0x19,4
rjmp L136
ldi R16,1
ldi R17,0
xjmp L137
L136:
clr R16
clr R17
L137:
.dbline -2
L127:
.dbline 0 ; func end
ret
.dbend
.dbfunc e GetLimitOpen _GetLimitOpen fc
.even
_GetLimitOpen::
.dbline -1
.dbline 289
; }
; }
;
; uchar GetLimitOpen(void)
; {
.dbline 290
; if(limit_direction == 1)
lds R24,_limit_direction
cpi R24,1
brne L139
.dbline 291
; {
.dbline 292
; return GetLimit2();
sbic 0x19,3
rjmp L141
ldi R16,1
ldi R17,0
xjmp L142
L141:
clr R16
clr R17
L142:
xjmp L138
L139:
.dbline 294
; }
; else if((limit_direction == 0))
lds R2,_limit_direction
tst R2
brne L143
.dbline 295
; {
.dbline 296
; return GetLimit1();
sbic 0x19,4
rjmp L145
ldi R16,1
ldi R17,0
xjmp L146
L145:
clr R16
clr R17
L146:
xjmp L138
L143:
.dbline 299
; }
; else
; {
.dbline 300
; return GetLimit2();
sbic 0x19,3
rjmp L147
ldi R16,1
ldi R17,0
xjmp L148
L147:
clr R16
clr R17
L148:
.dbline -2
L138:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile D:\_文档~1\easy-STQ-20080712\motor.c
_ControlFlag::
.blkb 1
.dbfile D:\_文档~1\easy-STQ-20080712/motor.h
.dbsym e ControlFlag _ControlFlag c
_MotorFlag::
.blkb 1
.dbsym e MotorFlag _MotorFlag c
_MotorDelayTime::
.blkb 2
.dbfile D:\_文档~1\easy-STQ-20080712/schedule.h
.dbsym e MotorDelayTime _MotorDelayTime i
_TimeTick::
.blkb 1
.dbsym e TimeTick _TimeTick c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -