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

📄 mtc.ls

📁 该程序是ST7MC驱动三洋压缩机(交流)
💻 LS
📖 第 1 页 / 共 5 页
字号:
3218  02fb               _MTC_ValidSpeedInfo:
3220  02fb b701          	ld	_MTC_ValidSpeedInfo$L+1,a
3221  02fd bf00          	ld	_MTC_ValidSpeedInfo$L,x
3223                     ; 535 	if ( MinRotorFreq == 0 ) /* Open loop or error */
3225  02ff 4d            	tnz	a
3226  0300 2604          	jrne	L1551
3227  0302 5d            	tnz	x
3228  0303 2601          	jrne	L1551
3229                     ; 537 		return( FALSE );
3233  0305 81            	ret	
3234  0306               L1551:
3235                     ; 541 		return ( (BOOL)((MTC_GetRotorFreq() > MinRotorFreq)
3235                     ; 542 				&& (GetAvrgTachoPeriod() >= GetLastTachoPeriod())) );//acceleration
3237  0306 cd01a0        	call	_MTC_GetRotorFreq
3239  0309 b700          	ld	c_x,a
3240  030b b601          	ld	a,_MTC_ValidSpeedInfo$L+1
3241  030d b000          	sub	a,c_x
3242  030f bf00          	ld	c_x,x
3243  0311 b600          	ld	a,_MTC_ValidSpeedInfo$L
3244  0313 b200          	sbc	a,c_x
3245  0315 2415          	jruge	L46
3246  0317 cd01e0        	call	_GetLastTachoPeriod
3248  031a aefc          	ld	x,#_MTC_ValidSpeedInfo$L-4
3249  031c cd0000        	call	c_rtol
3251  031f cd0233        	call	_GetAvrgTachoPeriod
3253  0322 aefc          	ld	x,#_MTC_ValidSpeedInfo$L-4
3254  0324 cd0000        	call	c_lcmp
3256  0327 2503          	jrult	L46
3257  0329 a601          	ld	a,#1
3259  032b 81            	ret	
3260  032c               L46:
3261  032c 4f            	clr	a
3264  032d 81            	ret	
3288                     ; 561 void MTC_Toggle_Direction( void )
3288                     ; 562 {
3289                     	switch	.text
3290  032e               _MTC_Toggle_Direction:
3293                     ; 563     if (PhaseShift == PHASE_SHIFT)
3295  032e b611          	ld	a,_PhaseShift
3296  0330 a155          	cp	a,#85
3297  0332 2604          	jrne	L5651
3298                     ; 565     	PhaseShift = -PHASE_SHIFT;
3300  0334 a6ab          	ld	a,#171
3302  0336 2002          	jra	L7651
3303  0338               L5651:
3304                     ; 567 	    	PhaseShift = PHASE_SHIFT;
3306  0338 a655          	ld	a,#85
3307  033a               L7651:
3308  033a b711          	ld	_PhaseShift,a
3309                     ; 569 }
3312  033c 81            	ret	
3336                     ; 571 void MTC_Set_ClockWise_Direction( void )
3336                     ; 572 {
3337                     	switch	.text
3338  033d               _MTC_Set_ClockWise_Direction:
3341                     ; 573     PhaseShift = PHASE_SHIFT;
3343  033d a655          	ld	a,#85
3344  033f b711          	ld	_PhaseShift,a
3345                     ; 574 }
3348  0341 81            	ret	
3372                     ; 576 void MTC_Set_CounterClockWise_Direction( void )
3372                     ; 577 {
3373                     	switch	.text
3374  0342               _MTC_Set_CounterClockWise_Direction:
3377                     ; 578     PhaseShift = -PHASE_SHIFT;
3379  0342 a6ab          	ld	a,#171
3380  0344 b711          	ld	_PhaseShift,a
3381                     ; 579 }
3384  0346 81            	ret	
3429                     ; 581 Direction_t MTC_GetRotationDirection( void )
3429                     ; 582 {
3430                     	switch	.text
3431  0347               _MTC_GetRotationDirection:
3434                     ; 584    if ( PhaseShift == PHASE_SHIFT )
3436  0347 b611          	ld	a,_PhaseShift
3437  0349 a155          	cp	a,#85
3438  034b 2602          	jrne	L1361
3439                     ; 586       return( CLOCKWISE );
3441  034d 4f            	clr	a
3444  034e 81            	ret	
3445  034f               L1361:
3446                     ; 590       return( COUNTERCLOCKWISE );
3448  034f a601          	ld	a,#1
3451  0351 81            	ret	
3501                     ; 606 void MTC_StartBraking( u16 DutyCycle)
3501                     ; 607 {
3502                     	switch	.text
3504                     	xref.b	_MTC_StartBraking$L
3505  0352               _MTC_StartBraking:
3507  0352 b701          	ld	_MTC_StartBraking$L+1,a
3508  0354 bf00          	ld	_MTC_StartBraking$L,x
3510                     ; 611 	MTCStatus &= (u8)(~(BRAKE_WAIT_DEMAG + BRAKE_SET_UP + BRAKE));
3512  0356 b610          	ld	a,_MTCStatus
3513  0358 a4f1          	and	a,#241
3514  035a b710          	ld	_MTCStatus,a
3515                     ; 614 	MTC_UpdateSine(0, MTC_GetStatorFreq());	// Cancel voltage on stator
3517  035c cd016b        	call	_MTC_GetStatorFreq
3519  035f b702          	ld	_MTC_UpdateSine$L+2,a
3520  0361 bf01          	ld	_MTC_UpdateSine$L+1,x
3521  0363 4f            	clr	a
3522  0364 cd00c0        	call	_MTC_UpdateSine
3524                     ; 615 	MTCStatus |= FREQ_CHANGE;	// Here this bit is used to verify that U interrupt occured
3526  0367 1010          	bset	_MTCStatus,#0
3527                     ; 616 	MISR = 0xFF;					// Force generation of U interrupt
3529  0369 a6ff          	ld	a,#255
3530  036b b759          	ld	_MISR,a
3531                     ; 617 	Counter = U8_MAX;
3533  036d b7ff          	ld	_MTC_StartBraking$L-1,a
3535  036f 2002          	jra	L3661
3536  0371               L7561:
3537                     ; 620 		Counter--;		// Wait for U interrupt
3539  0371 3aff          	dec	_MTC_StartBraking$L-1
3540  0373               L3661:
3541                     ; 618 	while( (MTCStatus & FREQ_CHANGE) && (Counter > 0) )
3543  0373 011004        	btjf	_MTCStatus,#0,L7661
3545  0376 3dff          	tnz	_MTC_StartBraking$L-1
3546  0378 26f7          	jrne	L7561
3547  037a               L7661:
3548                     ; 626 	MIMR &= ((u8)~MIMR_PUM_OR);
3550  037a b658          	ld	a,_MIMR
3551  037c a47f          	and	a,#127
3552  037e b758          	ld	_MIMR,a
3553                     ; 628 	MTC_DisableMCOutputs();		// All MCO outputs OFF (0 with positive polarity)
3555  0380 cd0014        	call	_MTC_DisableMCOutputs
3557                     ; 630    MTCStatus |= BRAKE_WAIT_DEMAG;
3559  0383 1210          	bset	_MTCStatus,#1
3560                     ; 631 	ART_SetSequenceDuration (STATOR_DEMAG_TIME);
3562  0385 a62c          	ld	a,#44
3563  0387 ae01          	ld	x,#1
3564  0389 cd0000        	call	_ART_SetSequenceDuration
3566                     ; 633 	BrakeDutyCycle = DutyCycle;
3568  038c be00          	ld	x,_MTC_StartBraking$L
3569  038e cf0001        	ld	L3701_BrakeDutyCycle,x
3570  0391 b601          	ld	a,_MTC_StartBraking$L+1
3571  0393 c70002        	ld	L3701_BrakeDutyCycle+1,a
3572                     ; 634 }
3575  0396 81            	ret	
3629                     ; 654 void MTC_Brake( void )
3629                     ; 655 {
3630                     	switch	.text
3632                     	xref.b	_MTC_Brake$L
3633  0397               _MTC_Brake:
3636                     ; 659 	BrakeStatus = (u8)(MTCStatus & BRAKE_MASK);
3638  0397 b610          	ld	a,_MTCStatus
3639  0399 a40e          	and	a,#14
3640  039b b7fd          	ld	_MTC_Brake$L-3,a
3641                     ; 661    switch (BrakeStatus) 
3644  039d a002          	sub	a,#2
3645  039f 270b          	jreq	L1761
3646  03a1 a002          	sub	a,#2
3647  03a3 2727          	jreq	L3761
3648  03a5 a004          	sub	a,#4
3649  03a7 2766          	jreq	L5271
3650                     ; 695 		default:						MTC_DisableMCOutputs();		// All MCO outputs OFF (0 with positive polarity)
3653                     ; 696 										break;
3656  03a9 cc0014        	jp	_MTC_DisableMCOutputs
3657  03ac               L1761:
3658                     ; 663       case BRAKE_WAIT_DEMAG:	if ( ART_IsSequenceCompleted() )
3660  03ac cd0000        	call	_ART_IsSequenceCompleted
3662  03af 4d            	tnz	a
3663  03b0 275d          	jreq	L5271
3664                     ; 666 											MTCStatus &= (u8)(~BRAKE_WAIT_DEMAG);
3666  03b2 1310          	bres	_MTCStatus,#1
3667                     ; 667 											MTCStatus |= BRAKE_SET_UP;
3669  03b4 1410          	bset	_MTCStatus,#2
3670                     ; 668 											ART_SetSequenceDuration (CURRENT_SETUP_TIME);
3672  03b6 5f            	clr	x
3673  03b7 a605          	ld	a,#5
3674  03b9 cd0000        	call	_ART_SetSequenceDuration
3676                     ; 669 											MCPUL = 0;
3678  03bc 4f            	clr	a
3679  03bd b768          	ld	_MCPUL,a
3680                     ; 670 											MCPUH = 0;
3682  03bf b767          	ld	_MCPUH,a
3683                     ; 671 											MCPVL = 0;
3685  03c1 b766          	ld	_MCPVL,a
3686                     ; 672 											MCPVH = 0;
3688  03c3 b765          	ld	_MCPVH,a
3689                     ; 673 											MCPWL = 0;
3691  03c5 b764          	ld	_MCPWL,a
3692                     ; 674 											MCPWH = 0;
3694  03c7 b763          	ld	_MCPWH,a
3695                     ; 675 											MTC_EnableMCOutputs();
3699  03c9 cc000d        	jp	_MTC_EnableMCOutputs
3700  03cc               L3761:
3701                     ; 679 		case BRAKE_SET_UP:		CurrentDutyCycle = ((256*MCPUH + MCPUL)>>3);
3703  03cc be67          	ld	x,_MCPUH
3704  03ce bb68          	add	a,_MCPUL
3705  03d0 2401          	jrnc	L401
3706  03d2 5c            	inc	x
3707  03d3               L401:
3708  03d3 57            	sra	x
3709  03d4 46            	rrc	a
3710  03d5 57            	sra	x
3711  03d6 46            	rrc	a
3712  03d7 57            	sra	x
3713  03d8 46            	rrc	a
3714  03d9 b7ff          	ld	_MTC_Brake$L-1,a
3715  03db bffe          	ld	_MTC_Brake$L-2,x
3716                     ; 680 										if (CurrentDutyCycle == BrakeDutyCycle)	// Expected duty cycle reached
3718  03dd c10002        	cp	a,L3701_BrakeDutyCycle+1
3719  03e0 260a          	jrne	L1371
3720  03e2 c30001        	cp	x,L3701_BrakeDutyCycle
3721  03e5 2605          	jrne	L1371
3722                     ; 682 											MTCStatus &= (u8)(~BRAKE_SET_UP);
3724  03e7 1510          	bres	_MTCStatus,#2
3725                     ; 683 											MTCStatus |= BRAKE;
3727  03e9 1610          	bset	_MTCStatus,#3
3730  03eb 81            	ret	
3731  03ec               L1371:
3732                     ; 685 										else if (ART_IsSequenceCompleted())
3734  03ec cd0000        	call	_ART_IsSequenceCompleted
3736  03ef 4d            	tnz	a
3737  03f0 271d          	jreq	L5271
3738                     ; 687 											CurrentDutyCycle++;
3740  03f2 3cff          	inc	_MTC_Brake$L-1
3741  03f4 2602          	jrne	L011
3742  03f6 3cfe          	inc	_MTC_Brake$L-2
3743  03f8               L011:
3744                     ; 688 											ToCMPxL(MCPUL,CurrentDutyCycle);
3746  03f8 b6ff          	ld	a,_MTC_Brake$L-1
3747  03fa 48            	sll	a
3748  03fb 48            	sll	a
3749  03fc 48            	sll	a
3750  03fd b768          	ld	_MCPUL,a
3751                     ; 689 											ToCMPxH(MCPUH,CurrentDutyCycle);
3753  03ff b6ff          	ld	a,_MTC_Brake$L-1
3754  0401 befe          	ld	x,_MTC_Brake$L-2
3755  0403 54            	srl	x
3756  0404 46            	rrc	a
3757  0405 54            	srl	x
3758  0406 46            	rrc	a
3759  0407 54            	srl	x
3760  0408 46            	rrc	a
3761  0409 54            	srl	x
3762  040a 46            	rrc	a
3763  040b 54            	srl	x
3764  040c 46            	rrc	a
3765  040d b767          	ld	_MCPUH,a
3766  040f               L5271:
3767                     ; 698 }
3770  040f 81            	ret	
3799                     ; 708 void MTC_StopBraking( void )
3799                     ; 709 {
3800                     	switch	.text
3801  0410               _MTC_StopBraking:
3804                     ; 711 	MTCStatus &= (u8)(~(BRAKE_WAIT_DEMAG + BRAKE_SET_UP + BRAKE));
3806  0410 b610          	ld	a,_MTCStatus
3807  0412 a4f1          	and	a,#241
3808  0414 b710          	ld	_MTCStatus,a
3809                     ; 713 	MCPUH = 0;
3811  0416 4f            	clr	a
3812  0417 b767          	ld	_MCPUH,a
3813                     ; 714 	MCPVH = 0;
3815  0419 b765          	ld	_MCPVH,a
3816                     ; 715 	MCPWH = 0;
3818  041b b763          	ld	_MCPWH,a
3819                     ; 716 	MISR = 0xFF;					// Force PWM duty cycle updation
3821  041d 4a            	dec	a
3822  041e b759          	ld	_MISR,a
3823                     ; 718 	MTC_DisableMCOutputs();		// All MCO outputs OFF (0 with positive polarity)
3825  0420 cd0014        	call	_MTC_DisableMCOutputs
3827                     ; 720 	MIMR |= MIMR_PUM_OR;		// Re-enable the PWM U interrupts
3829  0423 b658          	ld	a,_MIMR
3830  0425 aa80          	or	a,#128
3831  0427 b758          	ld	_MIMR,a
3832                     ; 722 }
3835  0429 81            	ret	
3859                     ; 742 BOOL MTC_CheckEmergencyStop(void)
3859                     ; 743 {
3860                     	switch	.text
3861  042a               _MTC_CheckEmergencyStop:
3864                     ; 744 	return(MCES_Status);
3866  042a c60000        	ld	a,L5701_MCES_Status
3869  042d 81            	ret	
3893                     ; 747 void MTC_ClearEmergencyStop(void)
3893                     ; 748 {
3894                     	switch	.text
3895  042e               _MTC_ClearEmergencyStop:
3898                     ; 749 	MCES_Status = FALSE;
3900  042e 4f            	clr	a
3901  042f c70000        	ld	L5701_MCES_Status,a
3902                     ; 750 }
3905  0432 81            	ret	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -