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

📄 rmp_cntl.asm

📁 这个是关于实现同步电机FOC的控制程序源代码
💻 ASM
字号:
;===========================================================================
; 文件名:	RMP_CNTL.asm
;
; 模块名: 	RAMP_CNTL
;
; 初始化程序名: RAMP_CNTL_INIT
;
; 公司:	达盛科技
;
; 功能:	模块产生斜坡上升和斜坡下降控制功能. 当输出变量setpt_value 等于输入
;		变量target_value时,输出标志s_eq_t_flg被设置成7FFFh.
;
;			            |~~~~~~~~~~~~~~~|
; target_value o------->|		        |----->o  setpt_value
;    			        |   RAMP_CNTL	|
; 			            |		        |----->o  s_eq_t_flg
;			            |_______________|
;	
; 目标cpu:	x2407
;
;=====================================================================================
; 修改记录:
;-------------------------------------------------------------------------------------
; 最后更新日期:2005.06.22	版本号:Ver 1.0	
;===========================================================================
;(使用子程序就把下面的变量声明文件复制到主程序中)
;		.ref	RAMP_CNTL, RAMP_CNTL_INIT	; 子程序调用
;		.ref	target_value 				; 输入
;		.ref	rmp_dly_max, rmp_lo_limit	; 输入参数
;		.ref	rmp_hi_limit				; 输入参数
;		.ref	setpt_value, s_eq_t_flg		; 输出
;===========================================================================
;外部变量定义.
		.def	RAMP_CNTL, RAMP_CNTL_INIT	; 子程序调用
		.def	target_value 				; 输入
		.def	rmp_dly_max, rmp_lo_limit	; 输入参数
		.def	rmp_hi_limit				; 输入参数
		.def	setpt_value, s_eq_t_flg		; 输出
;===========================================================================

target_value	.usect "rmp_cntl",1
setpt_value		.usect "rmp_cntl",1
s_eq_t_flg		.usect "rmp_cntl",1
rmp_delay_cntr	.usect "rmp_cntl",1
rmp_dly_max		.usect "rmp_cntl",1
rmp_lo_limit	.usect "rmp_cntl",1
rmp_hi_limit	.usect "rmp_cntl",1


RAMP_CNTL_INIT:						;初始化程序
		LDP	#setpt_value
		SPLK	#0h,setpt_value
		SPLK	#0h,rmp_delay_cntr
		SPLK	#7,rmp_dly_max
		SPLK	#0300h,rmp_lo_limit
		SPLK	#07500h,rmp_hi_limit
		RET

RAMP_CNTL:
		SETC	SXM					; 允许符号扩展
		SETC	OVM					; 设置溢出保护
		
		LDP	#target_value
		LACC	target_value
		SUB	setpt_value
		BCND	SET_FLG, EQ			; 如果设定值 = 目标值则使 
									; s_eq_t_flg = 7FFFh 然后退出
		LACC	rmp_delay_cntr
		ADD	#1
		SACL	rmp_delay_cntr
		SUB	rmp_dly_max
		BCND	SRC_EXIT, LT

CHNG_VALUE:
		LACC	target_value
		SUB	setpt_value
		BCND	INC_VALUE, GT

DEC_VALUE	LACC	setpt_value
		SUB	#1
		SACL	setpt_value
		SUB	rmp_lo_limit
		BCND	SRC_1, GEQ
		LACC	rmp_lo_limit
		SACL	setpt_value
		B	SRC_1

INC_VALUE	LACC	setpt_value	   
		ADD	#1
		SACL	setpt_value
		SUB	rmp_hi_limit
		BCND	SRC_1, LEQ
		LACC	rmp_hi_limit
		SACL    setpt_value
SRC_1:
		SPLK	#0, rmp_delay_cntr

SRC_EXIT
		RET

SET_FLG
		SPLK	#7FFFh, s_eq_t_flg
		RET

⌨️ 快捷键说明

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