⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 easy_icc.lst

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -