📄 motor.lis
字号:
01AA ; {
01AA .dbline 102
01AA ; OpenMotor(); //开电机
01AA 50D0 xcall _OpenMotor
01AC .dbline 103
01AC ; }
01AC L43:
01AC .dbline 106
01AC ;
01AC ;
01AC ; }
01AC L41:
01AC .dbline 108
01AC ;
01AC ; if(GetLocalClose()&&!GetLocalOpen()) //本地关
01AC 9E99 sbic 0x13,6
01AE 0CC0 rjmp L45
01B0 9F9B sbis 0x13,7
01B2 0AC0 rjmp L45
01B4 .dbline 109
01B4 ; {
01B4 .dbline 110
01B4 ; if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
01B4 F3D0 xcall _GetLimitClose
01B6 0023 tst R16
01B8 39F4 brne L47
01BA CA99 sbic 0x19,2
01BC 05C0 rjmp L47
01BE 80910100 lds R24,_MotorFlag
01C2 8230 cpi R24,2
01C4 09F0 breq L47
01C6 .dbline 111
01C6 ; {
01C6 .dbline 112
01C6 ; CloseMotor();
01C6 75D0 xcall _CloseMotor
01C8 .dbline 113
01C8 ; }
01C8 L47:
01C8 .dbline 114
01C8 L45:
01C8 .dbline -2
01C8 L40:
01C8 .dbline 0 ; func end
01C8 0895 ret
01CA .dbend
01CA .dbfunc s MotorRemote3 _MotorRemote3 fV
.even
01CA _MotorRemote3:
01CA .dbline -1
01CA .dbline 120
01CA ; }
01CA ;
01CA ; }//edd of 本地控制
01CA ;
01CA ;
01CA ; static void MotorRemote3(void) //远程三线制
01CA ; {
01CA .dbline 121
01CA ; if(GetRemoteOpen()&&!GetRemoteClose()) //远程三线开
01CA 8599 sbic 0x10,5
01CC 0CC0 rjmp L50
01CE 849B sbis 0x10,4
01D0 0AC0 rjmp L50
01D2 .dbline 122
01D2 ; {
01D2 .dbline 123
01D2 ; if(!(GetLimitOpen()||GetOverheat())&&(MotorFlag != OPEN))
01D2 04D1 xcall _GetLimitOpen
01D4 0023 tst R16
01D6 39F4 brne L52
01D8 CA99 sbic 0x19,2
01DA 05C0 rjmp L52
01DC 80910100 lds R24,_MotorFlag
01E0 8130 cpi R24,1
01E2 09F0 breq L52
01E4 .dbline 124
01E4 ; {
01E4 .dbline 125
01E4 ; OpenMotor();
01E4 33D0 xcall _OpenMotor
01E6 .dbline 126
01E6 ; }
01E6 L52:
01E6 .dbline 127
01E6 ; }
01E6 L50:
01E6 .dbline 129
01E6 ;
01E6 ; if(GetRemoteClose()&&!GetRemoteOpen()) //远程三线关
01E6 8499 sbic 0x10,4
01E8 0CC0 rjmp L54
01EA 859B sbis 0x10,5
01EC 0AC0 rjmp L54
01EE .dbline 130
01EE ; {
01EE .dbline 131
01EE ; if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
01EE D6D0 xcall _GetLimitClose
01F0 0023 tst R16
01F2 39F4 brne L56
01F4 CA99 sbic 0x19,2
01F6 05C0 rjmp L56
01F8 80910100 lds R24,_MotorFlag
01FC 8230 cpi R24,2
01FE 09F0 breq L56
0200 .dbline 132
0200 ; {
0200 .dbline 133
0200 ; CloseMotor();
0200 58D0 xcall _CloseMotor
0202 .dbline 134
0202 ; }
0202 L56:
0202 .dbline 136
0202 L54:
0202 .dbline -2
0202 L49:
0202 .dbline 0 ; func end
0202 0895 ret
0204 .dbend
0204 .dbfunc s MotorRemote4 _MotorRemote4 fV
.even
0204 _MotorRemote4:
0204 .dbline -1
0204 .dbline 143
0204 ;
0204 ; }
0204 ; }
0204 ;
0204 ;
0204 ;
0204 ;
0204 ; static void MotorRemote4(void) //远程四线制
0204 ; {
0204 .dbline 144
0204 ; if(GetRemoteStop()) //远程四线停
0204 8399 sbic 0x10,3
0206 01C0 rjmp L59
0208 .dbline 145
0208 ; {
0208 .dbline 146
0208 ; StopMotor();
0208 87D0 xcall _StopMotor
020A .dbline 147
020A ; }
020A L59:
020A .dbline 149
020A ; //远程四线开
020A ; if(GetRemoteOpen()&&!GetRemoteClose()&&!GetRemoteStop())
020A 8599 sbic 0x10,5
020C 0EC0 rjmp L61
020E 849B sbis 0x10,4
0210 0CC0 rjmp L61
0212 839B sbis 0x10,3
0214 0AC0 rjmp L61
0216 .dbline 150
0216 ; {
0216 .dbline 151
0216 ; if(!(GetLimitOpen()||GetOverheat())&&(MotorFlag != OPEN))
0216 E2D0 xcall _GetLimitOpen
0218 0023 tst R16
021A 39F4 brne L63
021C CA99 sbic 0x19,2
021E 05C0 rjmp L63
0220 80910100 lds R24,_MotorFlag
0224 8130 cpi R24,1
0226 09F0 breq L63
0228 .dbline 152
0228 ; {
0228 .dbline 153
0228 ; OpenMotor();
0228 11D0 xcall _OpenMotor
022A .dbline 154
022A ; }
022A L63:
022A .dbline 155
022A ; }
022A L61:
022A .dbline 157
022A ; //远程四线关
022A ; if(GetRemoteClose()&&!GetRemoteOpen()&&!GetRemoteStop())
022A 8499 sbic 0x10,4
022C 0EC0 rjmp L65
022E 859B sbis 0x10,5
0230 0CC0 rjmp L65
0232 839B sbis 0x10,3
0234 0AC0 rjmp L65
0236 .dbline 158
0236 ; {
0236 .dbline 159
0236 ; if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
0236 B2D0 xcall _GetLimitClose
0238 0023 tst R16
023A 39F4 brne L67
023C CA99 sbic 0x19,2
023E 05C0 rjmp L67
0240 80910100 lds R24,_MotorFlag
0244 8230 cpi R24,2
0246 09F0 breq L67
0248 .dbline 160
0248 ; {
0248 .dbline 161
0248 ; CloseMotor();
0248 34D0 xcall _CloseMotor
024A .dbline 162
024A ; }
024A L67:
024A .dbline 164
024A L65:
024A .dbline -2
024A L58:
024A .dbline 0 ; func end
024A 0895 ret
024C .dbend
024C .dbfunc e OpenMotor _OpenMotor fV
.even
024C _OpenMotor::
024C .dbline -1
024C .dbline 169
024C ;
024C ; }
024C ; }
024C ;
024C ;
024C ; void OpenMotor(void) //开电机
024C ; {
024C .dbline 171
024C ;
024C ; if(MotorFlag == CLOSE) //反向切换延时1S
024C 80910100 lds R24,_MotorFlag
0250 8230 cpi R24,2
0252 01F5 brne L70
0254 .dbline 172
0254 ; {
0254 .dbline 173
0254 ; MotorFlag = OPEN;
0254 81E0 ldi R24,1
0256 80930100 sts _MotorFlag,R24
025A .dbline 175
025A ;
025A ; if(GetDirection())
025A C99B sbis 0x19,1
025C 03C0 rjmp L72
025E .dbline 176
025E ; {
025E .dbline 177
025E ; ClrMotor1();
025E A998 cbi 0x15,1
0260 .dbline 178
0260 ; SetMotor2();
0260 A89A sbi 0x15,0
0262 .dbline 179
0262 ; }
0262 02C0 xjmp L73
0264 L72:
0264 .dbline 181
0264 ; else
0264 ; {
0264 .dbline 182
0264 ; SetMotor1();
0264 A99A sbi 0x15,1
0266 .dbline 183
0266 ; ClrMotor2();
0266 A898 cbi 0x15,0
0268 .dbline 184
0268 ; }
0268 L73:
0268 .dbline 186
0268 ;
0268 ; MotorDelayTime = 0;
0268 2224 clr R2
026A 3324 clr R3
026C 30920300 sts _MotorDelayTime+1,R3
0270 20920200 sts _MotorDelayTime,R2
0274 07C0 xjmp L75
0276 L74:
0276 .dbline 188
0276 ; while(MotorDelayTime<100)
0276 ; {
0276 .dbline 189
0276 CA99 sbic 0x19,2
0278 04C0 rjmp L80
027A CC9B sbis 0x19,4
027C 02C0 rjmp L80
027E CB99 sbic 0x19,3
0280 01C0 rjmp L77
0282 L80:
0282 .dbline 189
0282 ; if(GetOverheat()||GetLimit())break;
0282 08C0 xjmp L76
0284 L77:
0284 .dbline 190
0284 L75:
0284 .dbline 187
0284 80910200 lds R24,_MotorDelayTime
0288 90910300 lds R25,_MotorDelayTime+1
028C 8436 cpi R24,100
028E E0E0 ldi R30,0
0290 9E07 cpc R25,R30
0292 88F3 brlo L74
0294 L76:
0294 .dbline 191
0294 ; }
0294 ; }
0294 L70:
0294 .dbline 193
0294 ;
0294 ; if(MotorFlag == STOP)
0294 80910100 lds R24,_MotorFlag
0298 8330 cpi R24,3
029A 51F4 brne L81
029C .dbline 194
029C ; {
029C .dbline 195
029C ; MotorFlag = OPEN;
029C 81E0 ldi R24,1
029E 80930100 sts _MotorFlag,R24
02A2 .dbline 196
02A2 ; if(GetDirection())
02A2 C99B sbis 0x19,1
02A4 03C0 rjmp L83
02A6 .dbline 197
02A6 ; {
02A6 .dbline 198
02A6 ; ClrMotor1();
02A6 A998 cbi 0x15,1
02A8 .dbline 199
02A8 ; SetMotor2();
02A8 A89A sbi 0x15,0
02AA .dbline 200
02AA ; }
02AA 02C0 xjmp L84
02AC L83:
02AC .dbline 202
02AC ; else
02AC ; {
02AC .dbline 203
02AC ; SetMotor1();
02AC A99A sbi 0x15,1
02AE .dbline 204
02AE ; ClrMotor2();
02AE A898 cbi 0x15,0
02B0 .dbline 205
02B0 ; }
02B0 L84:
02B0 .dbline 206
02B0 L81:
02B0 .dbline -2
02B0 L69:
02B0 .dbline 0 ; func end
02B0 0895 ret
02B2 .dbend
02B2 .dbfunc e CloseMotor _CloseMotor fV
.even
02B2 _CloseMotor::
02B2 .dbline -1
02B2 .dbline 211
02B2 ; }
02B2 ;
02B2 ; }//开电机
02B2 ;
02B2 ; void CloseMotor() //关电机
02B2 ; {
02B2 .dbline 212
02B2 ; if(MotorFlag == OPEN) //反向切换延时1S
02B2 80910100 lds R24,_MotorFlag
02B6 8130 cpi R24,1
02B8 01F5 brne L86
02BA .dbline 213
02BA ; {
02BA .dbline 214
02BA ; MotorFlag = CLOSE;
02BA 82E0 ldi R24,2
02BC 80930100 sts _MotorFlag,R24
02C0 .dbline 215
02C0 ; if(GetDirection())
02C0 C99B sbis 0x19,1
02C2 03C0 rjmp L88
02C4 .dbline 216
02C4 ; {
02C4 .dbline 217
02C4 ; SetMotor1();
02C4 A99A sbi 0x15,1
02C6 .dbline 218
02C6 ; ClrMotor2();
02C6 A898 cbi 0x15,0
02C8 .dbline 219
02C8 ; }
02C8 02C0 xjmp L89
02CA L88:
02CA .dbline 221
02CA ; else
02CA ; {
02CA .dbline 222
02CA ; ClrMotor1();
02CA A998 cbi 0x15,1
02CC .dbline 223
02CC ; SetMotor2();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -