📄 easy_icc.lst
字号:
0149 93800064 STS ControlFlag,R24
(0058) }
(0059)
(0060) MotorLocal();
014B D026 RCALL _MotorLocal
(0061) }
(0062)
(0063) //远程三线制
(0064) if( (!GetLocal()) && GetRemote() && GetRemoteMode() )
014C 9BCE SBIS 0x19,6
014D C00F RJMP 0x015D
014E 99CD SBIC 0x19,5
014F C00D RJMP 0x015D
0150 9BC8 SBIS 0x19,0
0151 C00B RJMP 0x015D
(0065) {
(0066) ClrLocalLed();
0152 9AC5 SBI 0x18,5
(0067) SetRemoteLed();
0153 98C6 CBI 0x18,6
(0068)
(0069) if(ControlFlag != IN_REMOTE3) //控制状态转换
0154 91800064 LDS R24,ControlFlag
0156 3082 CPI R24,2
0157 F021 BEQ 0x015C
(0070) {
(0071) StopMotor();
0158 D0DD RCALL _StopMotor
(0072) ControlFlag = IN_REMOTE3;
0159 E082 LDI R24,2
015A 93800064 STS ControlFlag,R24
(0073) }
(0074)
(0075) MotorRemote3();
015C D032 RCALL _MotorRemote3
(0076) }
(0077)
(0078) //远程四线制
(0079) if( (!GetLocal()) && GetRemote() && (!GetRemoteMode()) )
015D 9BCE SBIS 0x19,6
015E C00F RJMP 0x016E
015F 99CD SBIC 0x19,5
0160 C00D RJMP 0x016E
0161 99C8 SBIC 0x19,0
0162 C00B RJMP 0x016E
(0080) {
(0081) ClrLocalLed();
0163 9AC5 SBI 0x18,5
(0082) SetRemoteLed();
0164 98C6 CBI 0x18,6
(0083)
(0084) if(ControlFlag != IN_REMOTE4) //控制状态转换
0165 91800064 LDS R24,ControlFlag
0167 3083 CPI R24,3
0168 F021 BEQ 0x016D
(0085) {
(0086) StopMotor();
0169 D0CC RCALL _StopMotor
(0087) ControlFlag = IN_REMOTE4;
016A E083 LDI R24,3
016B 93800064 STS ControlFlag,R24
(0088) }
(0089)
(0090) MotorRemote4();
016D D03E RCALL _MotorRemote4
(0091) }
016E 9624 ADIW R28,4
016F 940E0532 CALL pop_gset5
0171 9508 RET
(0092)
(0093) }//end of 电机任务
(0094)
(0095)
(0096) static void MotorLocal(void) //本地控制
(0097) {
(0098) if(GetLocalOpen()&&!GetLocalClose()) //本地开
_MotorLocal:
0172 999F SBIC 0x13,7
0173 C00C RJMP 0x0180
0174 9B9E SBIS 0x13,6
0175 C00A RJMP 0x0180
(0099) {
(0100) if(!(GetLimitOpen()||GetOverheat())&&(MotorFlag != OPEN))
0176 D121 RCALL _GetLimitOpen
0177 2300 TST R16
0178 F439 BNE 0x0180
0179 99CA SBIC 0x19,2
017A C005 RJMP 0x0180
017B 91800065 LDS R24,MotorFlag
017D 3081 CPI R24,1
017E F009 BEQ 0x0180
(0101) {
(0102) OpenMotor(); //开电机
017F D050 RCALL _OpenMotor
(0103) }
(0104)
(0105)
(0106) }
(0107)
(0108) if(GetLocalClose()&&!GetLocalOpen()) //本地关
0180 999E SBIC 0x13,6
0181 C00C RJMP 0x018E
0182 9B9F SBIS 0x13,7
0183 C00A RJMP 0x018E
(0109) {
(0110) if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
0184 D0F3 RCALL _GetLimitClose
0185 2300 TST R16
0186 F439 BNE 0x018E
0187 99CA SBIC 0x19,2
0188 C005 RJMP 0x018E
0189 91800065 LDS R24,MotorFlag
018B 3082 CPI R24,2
018C F009 BEQ 0x018E
(0111) {
(0112) CloseMotor();
018D D075 RCALL _CloseMotor
(0113) }
(0114) }
018E 9508 RET
(0115)
(0116) }//edd of 本地控制
(0117)
(0118)
(0119) static void MotorRemote3(void) //远程三线制
(0120) {
(0121) if(GetRemoteOpen()&&!GetRemoteClose()) //远程三线开
_MotorRemote3:
018F 9985 SBIC 0x10,5
0190 C00C RJMP 0x019D
0191 9B84 SBIS 0x10,4
0192 C00A RJMP 0x019D
(0122) {
(0123) if(!(GetLimitOpen()||GetOverheat())&&(MotorFlag != OPEN))
0193 D104 RCALL _GetLimitOpen
0194 2300 TST R16
0195 F439 BNE 0x019D
0196 99CA SBIC 0x19,2
0197 C005 RJMP 0x019D
0198 91800065 LDS R24,MotorFlag
019A 3081 CPI R24,1
019B F009 BEQ 0x019D
(0124) {
(0125) OpenMotor();
019C D033 RCALL _OpenMotor
(0126) }
(0127) }
(0128)
(0129) if(GetRemoteClose()&&!GetRemoteOpen()) //远程三线关
019D 9984 SBIC 0x10,4
019E C00C RJMP 0x01AB
019F 9B85 SBIS 0x10,5
01A0 C00A RJMP 0x01AB
(0130) {
(0131) if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
01A1 D0D6 RCALL _GetLimitClose
01A2 2300 TST R16
01A3 F439 BNE 0x01AB
01A4 99CA SBIC 0x19,2
01A5 C005 RJMP 0x01AB
01A6 91800065 LDS R24,MotorFlag
01A8 3082 CPI R24,2
01A9 F009 BEQ 0x01AB
(0132) {
(0133) CloseMotor();
01AA D058 RCALL _CloseMotor
(0134) }
(0135)
(0136) }
01AB 9508 RET
(0137) }
(0138)
(0139)
(0140)
(0141)
(0142) static void MotorRemote4(void) //远程四线制
(0143) {
(0144) if(GetRemoteStop()) //远程四线停
_MotorRemote4:
01AC 9983 SBIC 0x10,3
01AD C001 RJMP 0x01AF
(0145) {
(0146) StopMotor();
01AE D087 RCALL _StopMotor
(0147) }
(0148) //远程四线开
(0149) if(GetRemoteOpen()&&!GetRemoteClose()&&!GetRemoteStop())
01AF 9985 SBIC 0x10,5
01B0 C00E RJMP 0x01BF
01B1 9B84 SBIS 0x10,4
01B2 C00C RJMP 0x01BF
01B3 9B83 SBIS 0x10,3
01B4 C00A RJMP 0x01BF
(0150) {
(0151) if(!(GetLimitOpen()||GetOverheat())&&(MotorFlag != OPEN))
01B5 D0E2 RCALL _GetLimitOpen
01B6 2300 TST R16
01B7 F439 BNE 0x01BF
01B8 99CA SBIC 0x19,2
01B9 C005 RJMP 0x01BF
01BA 91800065 LDS R24,MotorFlag
01BC 3081 CPI R24,1
01BD F009 BEQ 0x01BF
(0152) {
(0153) OpenMotor();
01BE D011 RCALL _OpenMotor
(0154) }
(0155) }
(0156) //远程四线关
(0157) if(GetRemoteClose()&&!GetRemoteOpen()&&!GetRemoteStop())
01BF 9984 SBIC 0x10,4
01C0 C00E RJMP 0x01CF
01C1 9B85 SBIS 0x10,5
01C2 C00C RJMP 0x01CF
01C3 9B83 SBIS 0x10,3
01C4 C00A RJMP 0x01CF
(0158) {
(0159) if(!(GetLimitClose()||GetOverheat())&&(MotorFlag != CLOSE))
01C5 D0B2 RCALL _GetLimitClose
01C6 2300 TST R16
01C7 F439 BNE 0x01CF
01C8 99CA SBIC 0x19,2
01C9 C005 RJMP 0x01CF
01CA 91800065 LDS R24,MotorFlag
01CC 3082 CPI R24,2
01CD F009 BEQ 0x01CF
(0160) {
(0161) CloseMotor();
01CE D034 RCALL _CloseMotor
(0162) }
(0163)
(0164) }
01CF 9508 RET
(0165) }
(0166)
(0167)
(0168) void OpenMotor(void) //开电机
(0169) {
(0170)
(0171) if(MotorFlag == CLOSE) //反向切换延时1S
_OpenMotor:
01D0 91800065 LDS R24,MotorFlag
01D2 3082 CPI R24,2
01D3 F501 BNE 0x01F4
(0172) {
(0173) MotorFlag = OPEN;
01D4 E081 LDI R24,1
01D5 93800065 STS MotorFlag,R24
(0174)
(0175) if(GetDirection())
01D7 9BC9 SBIS 0x19,1
01D8 C003 RJMP 0x01DC
(0176) {
(0177) ClrMotor1();
01D9 98A9 CBI 0x15,1
(0178) SetMotor2();
01DA 9AA8 SBI 0x15,0
(0179) }
01DB C002 RJMP 0x01DE
(0180) else
(0181) {
(0182) SetMotor1();
01DC 9AA9 SBI 0x15,1
(0183) ClrMotor2();
01DD 98A8 CBI 0x15,0
(0184) }
(0185)
(0186) MotorDelayTime = 0;
01DE 2422 CLR R2
01DF 2433 CLR R3
01E0 92300067 STS MotorDelayTime+1,R3
01E2 92200066 STS MotorDelayTime,R2
01E4 C007 RJMP 0x01EC
(0187) while(MotorDelayTime<100)
(0188) {
(0189) if(GetOverheat()||GetLimit())break;
01E5 99CA SBIC 0x19,2
01E6 C004 RJMP 0x01EB
01E7 9BCC SBIS 0x19,4
01E8 C002 RJMP 0x01EB
01E9 99CB SBIC 0x19,3
01EA C001 RJMP 0x01EC
01EB C008 RJMP 0x01F4
01EC 91800066 LDS R24,MotorDelayTime
01EE 91900067 LDS R25,MotorDelayTime+1
01F0 3684 CPI R24,0x64
01F1 E0E0 LDI R30,0
01F2 079E CPC R25,R30
01F3 F388 BCS 0x01E5
(0190) }
(0191) }
(0192)
(0193) if(MotorFlag == STOP)
01F4 91800065 LDS R24,MotorFlag
01F6 3083 CPI R24,3
01F7 F451 BNE 0x0202
(0194) {
(0195) MotorFlag = OPEN;
01F8 E081 LDI R24,1
01F9 93800065 STS MotorFlag,R24
(0196) if(GetDirection())
01FB 9BC9 SBIS 0x19,1
01FC C003 RJMP 0x0200
(0197) {
(0198) ClrMotor1();
01FD 98A9 CBI 0x15,1
(0199) SetMotor2();
01FE 9AA8 SBI 0x15,0
(0200) }
01FF C002 RJMP 0x0202
(0201) else
(0202) {
(0203) SetMotor1();
0200 9AA9 SBI 0x15,1
(0204) ClrMotor2();
0201 98A8 CBI 0x15,0
(0205) }
(0206) }
0202 9508 RET
(0207)
(0208) }//开电机
(0209)
(0210) void CloseMotor() //关电机
(0211) {
(0212) if(MotorFlag == OPEN) //反向切换延时1S
_CloseMotor:
0203 91800065 LDS R24,MotorFlag
0205 3081 CPI R24,1
0206 F501 BNE 0x0227
(0213) {
(0214) MotorFlag = CLOSE;
0207 E082 LDI R24,2
0208 93800065 STS MotorFlag,R24
(0215) if(GetDirection())
020A 9BC9 SBIS 0x19,1
020B C003 RJMP 0x020F
(0216) {
(0217) SetMotor1();
020C 9AA9 SBI 0x15,1
(0218) ClrMotor2();
020D 98A8 CBI 0x15,0
(0219) }
020E C002 RJMP 0x0211
(0220) else
(0221) {
(0222) ClrMotor1();
020F 98A9 CBI 0x15,1
(0223) SetMotor2();
0210 9AA8 SBI 0x15,0
(0224) }
(0225)
(0226) MotorDelayTime = 0;
0211 2422 CLR R2
0212 2433 CLR R3
0213 92300067 STS MotorDelayTime+1,R3
0215 92200066 STS MotorDelayTime,R2
0217 C007 RJMP 0x021F
(0227) while(MotorDelayTime<100)
(0228) {
(0229) if(GetOverheat()||GetLimit())break;
0218 99CA SBIC 0x19,2
0219 C004 RJMP 0x021E
021A 9BCC SBIS 0x19,4
021B C002 RJMP 0x021E
021C 99CB SBIC 0x19,3
021D C001 RJMP 0x021F
021E C008 RJMP 0x0227
021F 91800066 LDS R24,MotorDelayTime
0221 91900067 LDS R25,MotorDelayTime+1
0223 3684 CPI R24,0x64
0224 E0E0 LDI R30,0
0225 079E CPC R25,R30
0226 F388 BCS 0x0218
(0230) }
(0231) }
(0232)
(0233) if (MotorFlag == STOP)
0227 91800065 LDS R24,MotorFlag
0229 3083 CPI R24,3
022A F451 BNE 0x0235
(0234) {
(0235) MotorFlag = CLOSE;
022B E082 LDI R24,2
022C 93800065 STS MotorFlag,R24
(0236) if(GetDirection())
022E 9BC9 SBIS 0x19,1
022F C003 RJMP 0x0233
(0237) {
(0238) SetMotor1();
0230 9AA9 SBI 0x15,1
(0239) ClrMotor2();
0231 98A8 CBI 0x15,0
(0240) }
0232 C002 RJMP 0x0235
(0241) else
(0242) {
(0243) ClrMotor1();
0233 98A9 CBI 0x15,1
(0244) SetMotor2();
0234 9AA8 SBI 0x15,0
(0245) }
(0246) }
0235 9508 RET
(0247)
(0248) }//关电机
(0249)
(0250) void StopMotor(void) //停电机停延时0.5S
(0251) {
(0252) if(MotorFlag == OPEN||MotorFlag == CLOSE)
_StopMotor:
0236 91800065 LDS R24,MotorFlag
0238 3081 CPI R24,1
0239 F021 BEQ 0x023E
023A 91800065 LDS R24,MotorFlag
023C 3082 CPI R24,2
023D F4D9 BNE 0x0259
(0253) {
(0254) MotorFlag = STOP;
023E E083 LDI R24,3
023F 93800065 STS MotorFlag,R24
(0255) ClrMotor1();
0241 98A9 CBI 0x15,1
(0256) ClrMotor2();
0242 98A8 CBI 0x15,0
(0257)
(0258) MotorDelayTime = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -