📄 easy_icc.lst
字号:
0433 9AC5 SBI 0x18,5
(0055) }
(0056) last_flash = 1;
0434 E081 LDI R24,1
0435 93800063 STS last_flash,R24
(0057) }
0437 9508 RET
_check:
0438 940E053B CALL push_gset2
FILE: E:\_ING\文档\_STQ\easy-STQ-20080712\check.c
(0001)
(0002) ///////////////////////////////////////////////////////////////
(0003) /**************************************************************
(0004)
(0005) 公司名称: 扬州恒博科技
(0006) 模块名 : 点动型STQ执行机构主控程序
(0007) 创建人 : 章俭文
(0008) 日期 : 2008/08/19
(0009) 功能描述: 完成对本地旋钮和远程开关量的控制功能
(0010) 其它说明: 编译环境为ICCAVR V6.31A
(0011) 版本 : V1.0
(0012)
(0013) **************************************************************/
(0014) ///////////////////////////////////////////////////////////////
(0015)
(0016) #define CHECK_GLOBAL
(0017) #include "check.h"
(0018)
(0019) void check(void) //电机参数检测任务,只上电时执行一次
(0020) {
(0021) limit_direction = 0;
043A 2422 CLR R2
043B 9220007E STS limit_direction,R2
(0022)
(0023) if(GetLimit1()) //限位1正常为关限位
043D 99CC SBIC 0x19,4
043E C034 RJMP 0x0473
(0024) {
(0025) LIMIT1:
(0026) OpenMotor();
043F 940E01D0 CALL _OpenMotor
(0027) MotorDelayTime = 0;
0441 2422 CLR R2
0442 2433 CLR R3
0443 92300067 STS MotorDelayTime+1,R3
0445 92200066 STS MotorDelayTime,R2
(0028) while((MotorDelayTime<200)&&GetLimit());
0447 91800066 LDS R24,MotorDelayTime
0449 91900067 LDS R25,MotorDelayTime+1
044B 3C88 CPI R24,0xC8
044C E0E0 LDI R30,0
044D 079E CPC R25,R30
044E F420 BCC 0x0453
044F 9BCC SBIS 0x19,4
0450 CFF6 RJMP 0x0447
0451 9BCB SBIS 0x19,3
0452 CFF4 RJMP 0x0447
(0029) if(GetLimit1())limit_direction = 0;
0453 99CC SBIC 0x19,4
0454 C004 RJMP 0x0459
0455 2422 CLR R2
0456 9220007E STS limit_direction,R2
0458 C003 RJMP 0x045C
(0030) else limit_direction = 1;
0459 E081 LDI R24,1
045A 9380007E STS limit_direction,R24
(0031)
(0032) CloseMotor(); //复位电机
045C 940E0203 CALL _CloseMotor
(0033) MotorDelayTime = 0;
045E 2422 CLR R2
045F 2433 CLR R3
0460 92300067 STS MotorDelayTime+1,R3
0462 92200066 STS MotorDelayTime,R2
(0034) while((MotorDelayTime<200)&&!GetLimit());
0464 91800066 LDS R24,MotorDelayTime
0466 91900067 LDS R25,MotorDelayTime+1
0468 3C88 CPI R24,0xC8
0469 E0E0 LDI R30,0
046A 079E CPC R25,R30
046B F420 BCC 0x0470
046C 9BCC SBIS 0x19,4
046D C002 RJMP 0x0470
046E 99CB SBIC 0x19,3
046F CFF4 RJMP 0x0464
(0035) StopMotor();
0470 940E0236 CALL _StopMotor
(0036)
(0037) return;
0472 C0A1 RJMP 0x0514
(0038) }
(0039)
(0040)
(0041) else if(GetLimit2()) //限位2正常为开限位
0473 99CB SBIC 0x19,3
0474 C034 RJMP 0x04A9
(0042) {
(0043) LIMIT2:
(0044) CloseMotor();
0475 940E0203 CALL _CloseMotor
(0045) MotorDelayTime = 0;
0477 2422 CLR R2
0478 2433 CLR R3
0479 92300067 STS MotorDelayTime+1,R3
047B 92200066 STS MotorDelayTime,R2
(0046) while((MotorDelayTime<200)&&GetLimit());
047D 91800066 LDS R24,MotorDelayTime
047F 91900067 LDS R25,MotorDelayTime+1
0481 3C88 CPI R24,0xC8
0482 E0E0 LDI R30,0
0483 079E CPC R25,R30
0484 F420 BCC 0x0489
0485 9BCC SBIS 0x19,4
0486 CFF6 RJMP 0x047D
0487 9BCB SBIS 0x19,3
0488 CFF4 RJMP 0x047D
(0047) if(GetLimit2())limit_direction = 0;
0489 99CB SBIC 0x19,3
048A C004 RJMP 0x048F
048B 2422 CLR R2
048C 9220007E STS limit_direction,R2
048E C003 RJMP 0x0492
(0048) else limit_direction = 1;
048F E081 LDI R24,1
0490 9380007E STS limit_direction,R24
(0049)
(0050) OpenMotor();
0492 940E01D0 CALL _OpenMotor
(0051) MotorDelayTime = 0;
0494 2422 CLR R2
0495 2433 CLR R3
0496 92300067 STS MotorDelayTime+1,R3
0498 92200066 STS MotorDelayTime,R2
(0052) while((MotorDelayTime<200)&&GetLimit());
049A 91800066 LDS R24,MotorDelayTime
049C 91900067 LDS R25,MotorDelayTime+1
049E 3C88 CPI R24,0xC8
049F E0E0 LDI R30,0
04A0 079E CPC R25,R30
04A1 F420 BCC 0x04A6
04A2 9BCC SBIS 0x19,4
04A3 CFF6 RJMP 0x049A
04A4 9BCB SBIS 0x19,3
04A5 CFF4 RJMP 0x049A
(0053) StopMotor();
04A6 940E0236 CALL _StopMotor
(0054)
(0055) return;
04A8 C06B RJMP 0x0514
(0056) }
(0057)
(0058)
(0059) else //在中间位置时尝试使电机动作到限位
(0060) {
(0061) OpenMotor();
04A9 940E01D0 CALL _OpenMotor
(0062) MotorDelayTime = 0;
04AB 2422 CLR R2
04AC 2433 CLR R3
04AD 92300067 STS MotorDelayTime+1,R3
04AF 92200066 STS MotorDelayTime,R2
(0063) while((MotorDelayTime<200)&&!GetLimit());
04B1 91800066 LDS R24,MotorDelayTime
04B3 91900067 LDS R25,MotorDelayTime+1
04B5 3C88 CPI R24,0xC8
04B6 E0E0 LDI R30,0
04B7 079E CPC R25,R30
04B8 F420 BCC 0x04BD
04B9 9BCC SBIS 0x19,4
04BA C002 RJMP 0x04BD
04BB 99CB SBIC 0x19,3
04BC CFF4 RJMP 0x04B1
(0064) if(GetLimit1())goto LIMIT1;
04BD 99CC SBIC 0x19,4
04BE C001 RJMP 0x04C0
04BF CF7F RJMP 0x043F
(0065) if(GetLimit2())goto LIMIT2;
04C0 99CB SBIC 0x19,3
04C1 C001 RJMP 0x04C3
04C2 CFB2 RJMP 0x0475
(0066)
(0067) if(!GetLimit())
04C3 9BCC SBIS 0x19,4
04C4 C047 RJMP 0x050C
04C5 9BCB SBIS 0x19,3
04C6 C045 RJMP 0x050C
(0068) {
(0069) CloseMotor();
04C7 940E0203 CALL _CloseMotor
(0070) MotorDelayTime = 0;
04C9 2422 CLR R2
04CA 2433 CLR R3
04CB 92300067 STS MotorDelayTime+1,R3
04CD 92200066 STS MotorDelayTime,R2
(0071) while((MotorDelayTime<250)&&!GetLimit());
04CF 91800066 LDS R24,MotorDelayTime
04D1 91900067 LDS R25,MotorDelayTime+1
04D3 3F8A CPI R24,0xFA
04D4 E0E0 LDI R30,0
04D5 079E CPC R25,R30
04D6 F420 BCC 0x04DB
04D7 9BCC SBIS 0x19,4
04D8 C002 RJMP 0x04DB
04D9 99CB SBIC 0x19,3
04DA CFF4 RJMP 0x04CF
(0072) if(GetLimit1())goto LIMIT1;
04DB 99CC SBIC 0x19,4
04DC C001 RJMP 0x04DE
04DD CF61 RJMP 0x043F
(0073) if(GetLimit2())goto LIMIT2;
04DE 99CB SBIC 0x19,3
04DF C001 RJMP 0x04E1
04E0 CF94 RJMP 0x0475
(0074)
(0075) if(!GetLimit())
04E1 9BCC SBIS 0x19,4
04E2 C021 RJMP 0x0504
04E3 9BCB SBIS 0x19,3
04E4 C01F RJMP 0x0504
(0076) {
(0077) MotorDelayTime = 0;
04E5 2422 CLR R2
04E6 2433 CLR R3
04E7 92300067 STS MotorDelayTime+1,R3
04E9 92200066 STS MotorDelayTime,R2
(0078) while((MotorDelayTime<400UL)&&!GetLimit());
04EB E940 LDI R20,0x90
04EC E051 LDI R21,1
04ED E060 LDI R22,0
04EE E070 LDI R23,0
04EF 90200066 LDS R2,MotorDelayTime
04F1 90300067 LDS R3,MotorDelayTime+1
04F3 2444 CLR R4
04F4 2455 CLR R5
04F5 1624 CP R2,R20
04F6 0635 CPC R3,R21
04F7 0646 CPC R4,R22
04F8 0657 CPC R5,R23
04F9 F420 BCC 0x04FE
04FA 9BCC SBIS 0x19,4
04FB C002 RJMP 0x04FE
04FC 99CB SBIC 0x19,3
04FD CFED RJMP 0x04EB
(0079) if(GetLimit1())goto LIMIT1;
04FE 99CC SBIC 0x19,4
04FF C001 RJMP 0x0501
0500 CF3E RJMP 0x043F
(0080) if(GetLimit2())goto LIMIT2;
0501 99CB SBIC 0x19,3
0502 C001 RJMP 0x0504
0503 CF71 RJMP 0x0475
(0081) }
(0082)
(0083) StopMotor();
0504 940E0236 CALL _StopMotor
(0084) if(GetLimit1())goto LIMIT1;
0506 99CC SBIC 0x19,4
0507 C001 RJMP 0x0509
0508 CF36 RJMP 0x043F
(0085) if(GetLimit2())goto LIMIT2;
0509 99CB SBIC 0x19,3
050A C001 RJMP 0x050C
050B CF69 RJMP 0x0475
(0086) }
(0087)
(0088) if(!GetLimit()) //失败之后让程序定位在这里
050C 9BCC SBIS 0x19,4
050D C006 RJMP 0x0514
050E 9BCB SBIS 0x19,3
050F C004 RJMP 0x0514
(0089) {
0510 C002 RJMP 0x0513
(0090) while(1)
(0091) {
(0092) ClrLocalLed();
0511 9AC5 SBI 0x18,5
(0093) ClrRemoteLed();
0512 9AC6 SBI 0x18,6
0513 CFFD RJMP 0x0511
(0094) }
(0095) }
(0096) }
FILE: <library>
0514 940E052F CALL pop_gset2
0516 9508 RET
mod8u:
0517 9468 BSET 6
0518 C001 RJMP xdiv8u
div8u:
0519 94E8 BCLR 6
xdiv8u:
051A 932A ST R18,-Y
051B 92FA ST R15,-Y
051C 92EA ST R14,-Y
051D 24FF CLR R15
051E 24EE CLR R14
051F E120 LDI R18,0x10
0520 0F00 LSL R16
0521 1CFF ROL R15
0522 1CEE ROL R14
0523 16E1 CP R14,R17
0524 F010 BCS 0x0527
0525 1AE1 SUB R14,R17
0526 9503 INC R16
0527 952A DEC R18
0528 F7B9 BNE 0x0520
0529 F40E BRTC 0x052B
052A 2D0E MOV R16,R14
052B 90E9 LD R14,Y+
052C 90F9 LD R15,Y+
052D 9129 LD R18,Y+
052E 9508 RET
pop_gset2:
052F E0E2 LDI R30,2
0530 940C0541 JMP pop
pop_gset5:
0532 27EE CLR R30
0533 940C0541 JMP pop
push_gset5:
0535 92FA ST R15,-Y
0536 92EA ST R14,-Y
push_gset4:
0537 92DA ST R13,-Y
0538 92CA ST R12,-Y
push_gset3:
0539 92BA ST R11,-Y
053A 92AA ST R10,-Y
push_gset2:
053B 937A ST R23,-Y
053C 936A ST R22,-Y
push_gset1:
053D 935A ST R21,-Y
053E 934A ST R20,-Y
053F 9508 RET
pop_gset1:
0540 E0E1 LDI R30,1
pop:
0541 9149 LD R20,Y+
0542 9159 LD R21,Y+
0543 FDE0 SBRC R30,0
0544 9508 RET
0545 9169 LD R22,Y+
0546 9179 LD R23,Y+
0547 FDE1 SBRC R30,1
0548 9508 RET
0549 90A9 LD R10,Y+
054A 90B9 LD R11,Y+
054B FDE2 SBRC R30,2
054C 9508 RET
054D 90C9 LD R12,Y+
054E 90D9 LD R13,Y+
054F FDE3 SBRC R30,3
0550 9508 RET
0551 90E9 LD R14,Y+
0552 90F9 LD R15,Y+
0553 9508 RET
xicall:
0554 920A ST R0,-Y
0555 95C8 LPM
0556 920A ST R0,-Y
0557 9631 ADIW R30,1
0558 95C8 LPM
0559 2DF0 MOV R31,R0
055A 91E9 LD R30,Y+
055B 9009 LD R0,Y+
055C 9409 IJMP
push_lset:
055D 93FA ST R31,-Y
055E 93EA ST R30,-Y
055F 93BA ST R27,-Y
0560 93AA ST R26,-Y
0561 939A ST R25,-Y
0562 938A ST R24,-Y
0563 933A ST R19,-Y
0564 932A ST R18,-Y
0565 931A ST R17,-Y
0566 930A ST R16,-Y
0567 929A ST R9,-Y
0568 928A ST R8,-Y
0569 927A ST R7,-Y
056A 926A ST R6,-Y
056B 925A ST R5,-Y
056C 924A ST R4,-Y
056D 923A ST R3,-Y
056E 922A ST R2,-Y
056F 921A ST R1,-Y
0570 920A ST R0,-Y
0571 B60F IN R0,0x3F
0572 920A ST R0,-Y
0573 9508 RET
pop_lset:
0574 9009 LD R0,Y+
0575 BE0F OUT 0x3F,R0
0576 9009 LD R0,Y+
0577 9019 LD R1,Y+
0578 9029 LD R2,Y+
0579 9039 LD R3,Y+
057A 9049 LD R4,Y+
057B 9059 LD R5,Y+
057C 9069 LD R6,Y+
057D 9079 LD R7,Y+
057E 9089 LD R8,Y+
057F 9099 LD R9,Y+
0580 9109 LD R16,Y+
0581 9119 LD R17,Y+
0582 9129 LD R18,Y+
0583 9139 LD R19,Y+
0584 9189 LD R24,Y+
0585 9199 LD R25,Y+
0586 91A9 LD R26,Y+
0587 91B9 LD R27,Y+
0588 91E9 LD R30,Y+
0589 91F9 LD R31,Y+
058A 9508 RET
lsl16:
058B 2322 TST R18
058C F021 BEQ 0x0591
058D 0F00 LSL R16
058E 1F11 ROL R17
058F 952A DEC R18
0590 CFFA RJMP lsl16
0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -