📄 motor.lis
字号:
02CC A89A sbi 0x15,0
02CE .dbline 224
02CE ; }
02CE L89:
02CE .dbline 226
02CE ;
02CE ; MotorDelayTime = 0;
02CE 2224 clr R2
02D0 3324 clr R3
02D2 30920300 sts _MotorDelayTime+1,R3
02D6 20920200 sts _MotorDelayTime,R2
02DA 07C0 xjmp L91
02DC L90:
02DC .dbline 228
02DC ; while(MotorDelayTime<100)
02DC ; {
02DC .dbline 229
02DC CA99 sbic 0x19,2
02DE 04C0 rjmp L96
02E0 CC9B sbis 0x19,4
02E2 02C0 rjmp L96
02E4 CB99 sbic 0x19,3
02E6 01C0 rjmp L93
02E8 L96:
02E8 .dbline 229
02E8 ; if(GetOverheat()||GetLimit())break;
02E8 08C0 xjmp L92
02EA L93:
02EA .dbline 230
02EA L91:
02EA .dbline 227
02EA 80910200 lds R24,_MotorDelayTime
02EE 90910300 lds R25,_MotorDelayTime+1
02F2 8436 cpi R24,100
02F4 E0E0 ldi R30,0
02F6 9E07 cpc R25,R30
02F8 88F3 brlo L90
02FA L92:
02FA .dbline 231
02FA ; }
02FA ; }
02FA L86:
02FA .dbline 233
02FA ;
02FA ; if (MotorFlag == STOP)
02FA 80910100 lds R24,_MotorFlag
02FE 8330 cpi R24,3
0300 51F4 brne L97
0302 .dbline 234
0302 ; {
0302 .dbline 235
0302 ; MotorFlag = CLOSE;
0302 82E0 ldi R24,2
0304 80930100 sts _MotorFlag,R24
0308 .dbline 236
0308 ; if(GetDirection())
0308 C99B sbis 0x19,1
030A 03C0 rjmp L99
030C .dbline 237
030C ; {
030C .dbline 238
030C ; SetMotor1();
030C A99A sbi 0x15,1
030E .dbline 239
030E ; ClrMotor2();
030E A898 cbi 0x15,0
0310 .dbline 240
0310 ; }
0310 02C0 xjmp L100
0312 L99:
0312 .dbline 242
0312 ; else
0312 ; {
0312 .dbline 243
0312 ; ClrMotor1();
0312 A998 cbi 0x15,1
0314 .dbline 244
0314 ; SetMotor2();
0314 A89A sbi 0x15,0
0316 .dbline 245
0316 ; }
0316 L100:
0316 .dbline 246
0316 L97:
0316 .dbline -2
0316 L85:
0316 .dbline 0 ; func end
0316 0895 ret
0318 .dbend
0318 .dbfunc e StopMotor _StopMotor fV
.even
0318 _StopMotor::
0318 .dbline -1
0318 .dbline 251
0318 ; }
0318 ;
0318 ; }//关电机
0318 ;
0318 ; void StopMotor(void) //停电机停延时0.5S
0318 ; {
0318 .dbline 252
0318 ; if(MotorFlag == OPEN||MotorFlag == CLOSE)
0318 80910100 lds R24,_MotorFlag
031C 8130 cpi R24,1
031E 21F0 breq L104
0320 80910100 lds R24,_MotorFlag
0324 8230 cpi R24,2
0326 D9F4 brne L102
0328 L104:
0328 .dbline 253
0328 ; {
0328 .dbline 254
0328 ; MotorFlag = STOP;
0328 83E0 ldi R24,3
032A 80930100 sts _MotorFlag,R24
032E .dbline 255
032E ; ClrMotor1();
032E A998 cbi 0x15,1
0330 .dbline 256
0330 ; ClrMotor2();
0330 A898 cbi 0x15,0
0332 .dbline 258
0332 ;
0332 ; MotorDelayTime = 0;
0332 2224 clr R2
0334 3324 clr R3
0336 30920300 sts _MotorDelayTime+1,R3
033A 20920200 sts _MotorDelayTime,R2
033E 07C0 xjmp L106
0340 L105:
0340 .dbline 260
0340 ; while(MotorDelayTime<50)
0340 ; {
0340 .dbline 261
0340 CA99 sbic 0x19,2
0342 04C0 rjmp L111
0344 CC9B sbis 0x19,4
0346 02C0 rjmp L111
0348 CB99 sbic 0x19,3
034A 01C0 rjmp L108
034C L111:
034C .dbline 261
034C ; if(GetOverheat()||GetLimit())break;
034C 08C0 xjmp L107
034E L108:
034E .dbline 262
034E L106:
034E .dbline 259
034E 80910200 lds R24,_MotorDelayTime
0352 90910300 lds R25,_MotorDelayTime+1
0356 8233 cpi R24,50
0358 E0E0 ldi R30,0
035A 9E07 cpc R25,R30
035C 88F3 brlo L105
035E L107:
035E .dbline 263
035E L102:
035E .dbline -2
035E L101:
035E .dbline 0 ; func end
035E 0895 ret
0360 .dbend
0360 .dbfunc e ProtectMotor _ProtectMotor fV
.even
0360 _ProtectMotor::
0360 .dbline -1
0360 .dbline 267
0360 ; }
0360 ; }
0360 ; }
0360 ;
0360 ; void ProtectMotor() //过热、限位信号保护
0360 ; {
0360 .dbline 268
0360 ; if(GetOverheat()) StopMotor();
0360 CA9B sbis 0x19,2
0362 01C0 rjmp L113
0364 .dbline 268
0364 D9DF xcall _StopMotor
0366 L113:
0366 .dbline 270
0366 ;
0366 ; if(GetLimitClose())
0366 1AD0 xcall _GetLimitClose
0368 0023 tst R16
036A 51F0 breq L115
036C .dbline 271
036C ; { //开信号时关限位不停
036C .dbline 272
036C 9F9B sbis 0x13,7
036E 06C0 rjmp L120
0370 859B sbis 0x10,5
0372 04C0 rjmp L120
0374 80910100 lds R24,_MotorFlag
0378 8130 cpi R24,1
037A 09F4 brne L117
037C L120:
037C .dbline 272
037C ; if(GetLocalOpen()||GetRemoteOpen()||MotorFlag == OPEN)return;
037C 0EC0 xjmp L112
037E L117:
037E .dbline 273
037E ; StopMotor();
037E CCDF xcall _StopMotor
0380 .dbline 274
0380 ; }
0380 L115:
0380 .dbline 276
0380 ;
0380 ; if(GetLimitOpen())
0380 2DD0 xcall _GetLimitOpen
0382 0023 tst R16
0384 51F0 breq L121
0386 .dbline 277
0386 ; { //关信号时开限位不停
0386 .dbline 278
0386 9E9B sbis 0x13,6
0388 06C0 rjmp L126
038A 849B sbis 0x10,4
038C 04C0 rjmp L126
038E 80910100 lds R24,_MotorFlag
0392 8230 cpi R24,2
0394 09F4 brne L123
0396 L126:
0396 .dbline 278
0396 ; if(GetLocalClose()||GetRemoteClose()||MotorFlag == CLOSE)return;
0396 01C0 xjmp L112
0398 L123:
0398 .dbline 279
0398 BFDF xcall _StopMotor
039A .dbline 280
039A L121:
039A .dbline -2
039A L112:
039A .dbline 0 ; func end
039A 0895 ret
039C .dbend
039C .dbfunc e GetLimitClose _GetLimitClose fc
.even
039C _GetLimitClose::
039C .dbline -1
039C .dbline 286
039C ; StopMotor();
039C ; }
039C ;
039C ; }
039C ;
039C ;
039C ; uchar GetLimitClose(void)
039C ; {
039C .dbline 287
039C ; if(limit_direction == 1)
039C 80910000 lds R24,_limit_direction
03A0 8130 cpi R24,1
03A2 41F4 brne L128
03A4 .dbline 288
03A4 ; {
03A4 .dbline 289
03A4 ; return GetLimit1();
03A4 CC99 sbic 0x19,4
03A6 03C0 rjmp L130
03A8 01E0 ldi R16,1
03AA 10E0 ldi R17,0
03AC 02C0 xjmp L131
03AE L130:
03AE 0027 clr R16
03B0 1127 clr R17
03B2 L131:
03B2 13C0 xjmp L127
03B4 L128:
03B4 .dbline 291
03B4 ; }
03B4 ; else if((limit_direction == 0))
03B4 20900000 lds R2,_limit_direction
03B8 2220 tst R2
03BA 41F4 brne L132
03BC .dbline 292
03BC ; {
03BC .dbline 293
03BC ; return GetLimit2();
03BC CB99 sbic 0x19,3
03BE 03C0 rjmp L134
03C0 01E0 ldi R16,1
03C2 10E0 ldi R17,0
03C4 02C0 xjmp L135
03C6 L134:
03C6 0027 clr R16
03C8 1127 clr R17
03CA L135:
03CA 07C0 xjmp L127
03CC L132:
03CC .dbline 296
03CC ; }
03CC ; else
03CC ; {
03CC .dbline 297
03CC ; return GetLimit1();
03CC CC99 sbic 0x19,4
03CE 03C0 rjmp L136
03D0 01E0 ldi R16,1
03D2 10E0 ldi R17,0
03D4 02C0 xjmp L137
03D6 L136:
03D6 0027 clr R16
03D8 1127 clr R17
03DA L137:
03DA .dbline -2
03DA L127:
03DA .dbline 0 ; func end
03DA 0895 ret
03DC .dbend
03DC .dbfunc e GetLimitOpen _GetLimitOpen fc
.even
03DC _GetLimitOpen::
03DC .dbline -1
03DC .dbline 302
03DC ; }
03DC ; }
03DC ;
03DC ; uchar GetLimitOpen(void)
03DC ; {
03DC .dbline 303
03DC ; if(limit_direction == 1)
03DC 80910000 lds R24,_limit_direction
03E0 8130 cpi R24,1
03E2 41F4 brne L139
03E4 .dbline 304
03E4 ; {
03E4 .dbline 305
03E4 ; return GetLimit2();
03E4 CB99 sbic 0x19,3
03E6 03C0 rjmp L141
03E8 01E0 ldi R16,1
03EA 10E0 ldi R17,0
03EC 02C0 xjmp L142
03EE L141:
03EE 0027 clr R16
03F0 1127 clr R17
03F2 L142:
03F2 13C0 xjmp L138
03F4 L139:
03F4 .dbline 307
03F4 ; }
03F4 ; else if((limit_direction == 0))
03F4 20900000 lds R2,_limit_direction
03F8 2220 tst R2
03FA 41F4 brne L143
03FC .dbline 308
03FC ; {
03FC .dbline 309
03FC ; return GetLimit1();
03FC CC99 sbic 0x19,4
03FE 03C0 rjmp L145
0400 01E0 ldi R16,1
0402 10E0 ldi R17,0
0404 02C0 xjmp L146
0406 L145:
0406 0027 clr R16
0408 1127 clr R17
040A L146:
040A 07C0 xjmp L138
040C L143:
040C .dbline 312
040C ; }
040C ; else
040C ; {
040C .dbline 313
040C ; return GetLimit2();
040C CB99 sbic 0x19,3
040E 03C0 rjmp L147
0410 01E0 ldi R16,1
0412 10E0 ldi R17,0
0414 02C0 xjmp L148
0416 L147:
0416 0027 clr R16
0418 1127 clr R17
041A L148:
041A .dbline -2
041A L138:
041A .dbline 0 ; func end
041A 0895 ret
041C .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712\motor.c
0000 _ControlFlag::
0000 .blkb 1
0001 .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712/motor.h
0001 .dbsym e ControlFlag _ControlFlag c
0001 _MotorFlag::
0001 .blkb 1
0002 .dbsym e MotorFlag _MotorFlag c
0002 _MotorDelayTime::
0002 .blkb 2
0004 .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712/schedule.h
0004 .dbsym e MotorDelayTime _MotorDelayTime i
0004 _TimeTick::
0004 .blkb 1
0005 .dbsym e TimeTick _TimeTick c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -