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

📄 rmp2cntl.asm

📁 这个是关于实现三相异步电动机的PWM控制源代码
💻 ASM
字号:
;===========================================================================
; 文件名: rmp2cntl.asm
;
; 模块名: 	RMP2CNTL			 
;
; 初始化程序名: RMP2CNTL_INIT
;
; 公司:	达盛科技
;
; 功能描述:	模块产生斜坡函数.输入变量rmp2_out跟随期望值rmp2_desired斜坡变化 
;
;								|~~~~~~~~~~~|
;  								|		  	|
;  		  rmp2_desired  o------>| RMP2CNTL  |----->o rmp2_out
;  								|		  	|
;								|		  	|
;								|___________|
;
;=====================================================================================
; 修改记录:
;-------------------------------------------------------------------------------------
; 2005.08.22	版本:Ver 1.0	
;===========================================================================
;(要调用模块,就将下面声明语句复制到主程序代码中相应位置)
;		.ref	RMP2CNTL, RMP2CNTL_INIT		;子程序调用
;		.ref	rmp2_dly, rmp2_desired		;输入 
;       .ref	rmp2_out    				;输出
;		.ref	rmp2_max, rmp2_min			;输入
;===========================================================================
;外部变量声明.
		.def	RMP2CNTL, RMP2CNTL_INIT		;函数调用
		.def	rmp2_dly,rmp2_desired		;输入
        .def	rmp2_out,rmp2_step
        .def 	rmp2_max,rmp2_min,rmp2_delay_cntr
;===========================================================================
		.include	x24x_app.h    
                                 
;===========================================================================
;内部变量声明
;---------------------------------------------------------------------------
;rmp2_max			.usect	"rmp2cntl",1	;输出最大值
;rmp2_min			.usect	"rmp2cntl",1	;输出最小值
;rmp2_delay_cntr	.usect	"rmp2cntl",1	;延迟计数器 
;rmp2_dly			.usect	"rmp2cntl",1	;Ramp2 延迟的系统周期数
;rmp2_desired		.usect	"rmp2cntl",1	;预期值输入
;rmp2_out			.usect	"rmp2cntl",1	;输出值

rmp2_max_vars	.usect	"rmp2cntl",7,1	;
rmp2_max		.set	rmp2_max_vars+0	;输出最大值
rmp2_min		.set	rmp2_max_vars+1	;最小输出值
rmp2_delay_cntr	.set	rmp2_max_vars+2	;延迟计数器 
rmp2_dly		.set	rmp2_max_vars+3	;Ramp2 延迟的系统周期数
rmp2_desired	.set	rmp2_max_vars+4	;预期值输入
rmp2_out		.set	rmp2_max_vars+5	;输出
rmp2_step		.set	rmp2_max_vars+6
;======================================================================
RMP2CNTL_INIT:		;初始化程序
;======================================================================
		LDP		#rmp2_out
		SPLK	#0h,rmp2_delay_cntr
		SPLK	#5000h, rmp2_dly		;默认延迟
 		SPLK	#0h, rmp2_out
		SPLK	#07ff0h, rmp2_max	;默认最大输出
		SPLK	#0fh, rmp2_min		;默认最小输出
		SPLK	#0h, rmp2_step
		RET

;===========================================================                
RMP2CNTL:			;控制程序
;=========================================================== 
        LDP	#rmp2_out
      	LACC	rmp2_out            	
        SUB	rmp2_desired    	
        BCND	equ_rmp2,EQ     	

		splk #0,rmp2_step
		LACC	rmp2_delay_cntr 		
		ADD	#1				
		SACL	rmp2_delay_cntr 		
		SUB	rmp2_dly		
		BCND	done_rmp2, LT    		 
		SPLK	#0,  rmp2_delay_cntr 	

chng_rmp2:
		LACC	rmp2_out
		SUB	rmp2_desired 
		BCND	inc_rmp2, LT

dec_rmp2:	
		splk #-1,rmp2_step
		LACC	rmp2_out
		SUB	#1
		SACL	rmp2_out
		SUB	rmp2_min
		BCND	done_rmp2, GEQ
		LACC	rmp2_min
		SACL	rmp2_out
		B	done_rmp2

inc_rmp2	splk #1,rmp2_step	
		LACC    rmp2_out
		ADD		#1
		SACL	rmp2_out
		SUB		rmp2_max
		BCND	done_rmp2, LEQ
		LACC	rmp2_max
		SACL	rmp2_out
		B	done_rmp2
		
equ_rmp2	LDP #rmp2_step	
			splk #0,rmp2_step
done_rmp2:
		RET

⌨️ 快捷键说明

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