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

📄 data_log.asm

📁 这是关于有刷直流电动机PWM控制方案的源码
💻 ASM
字号:
;====================================================================================
; 文件名:	Data_log.asm
;
; 模块名: 	DATA_LOG					      
;
; 初始化程序名: DATA_LOG_INIT
;
; 公司:	达盛科技
;
; 功能描述:	将实时模式下任意两个24x/24xx变量的值写到数据存储器的特定区域 
;		变量通过 dlog_iptr1 和 dlog_iptr2输入,数据写入的开始地址分别为
;       0E00h and 0F00h。每个存储区域能够存储256个 数据。
;
;				        |~~~~~~~~~~~~~~~~~~~~~~~|	  
;	dlog_iptr1	o------>|		            	|
;   dlog_iptr2  o------>|    DATA_LOG/ Data RAM |
;   	 		o------>|	   	            	|
;				        |_______________________|	   
;
;
; 目标板cpu:	C2xx core only
;
;
;=====================================================================================
; 修改记录:
;-------------------------------------------------------------------------------------
; 最终修改日期:2005.6.13	版本号	Ver 1.0
;===========================================================================
;(要调用模块,就将下面声明语句复制到主程序代码中相应位置)
;		.ref		DATA_LOG, DATA_LOG_INIT		;function call
;		.ref		dlog_iptr1, dlog_iptr2		;Inputs
;		.ref		trig_value						;Inputs
;===========================================================================
;外部变量定义
		.def		DATA_LOG, DATA_LOG_INIT		;function call
		.def		dlog_iptr1, dlog_iptr2		;Inputs
		.def		trig_value					;Inputs
;===========================================================================
		.include	x24x_app.h


DLOG_PRESCALE	.set	3			;1代表50微秒采样时间
DL_BUFFER1_ADR	.set	00e00h
DL_BUFFER2_ADR	.set	00f00h
DLOG_CNTR_MAX	.set	100h

dlog_iptr1		.usect "data_log",1
dlog_iptr2		.usect "data_log",1
dlog_skip_cntr	.usect "data_log",1
dlog_cntr		.usect "data_log",1
task_ptr		.usect "data_log",1
graph_ptr1		.usect "data_log",1
graph_ptr2		.usect "data_log",1
trig_value		.usect "data_log",1

;-----------------------------------------------------------------------------
DATA_LOG_INIT:       ;初始化
;-----------------------------------------------------------------------------
		LDP		#task_ptr
		SPLK	#POS_TRIG_S1, task_ptr
		SPLK	#DL_BUFFER1_ADR, graph_ptr1
		SPLK	#DL_BUFFER2_ADR, graph_ptr2
		SPLK	#22dh, dlog_iptr1
		SPLK	#236h, dlog_iptr2

		SPLK	#0010h, trig_value		;设置触发点

		SPLK	#0h, dlog_skip_cntr		;clear Data log skip counter
		SPLK	#0h, dlog_cntr			;clear Data log counter

		RET

;---------------------------------------------------------------------------------
DATA_LOG:
;---------------------------------------------------------------------------------
		LDP	#task_ptr
		MAR	*, AR5
		SETC	SXM
		LACC	task_ptr
		BACC

POS_TRIG_S1:	;(Positive trigger, detect Negative signal)
		LAR		AR5, dlog_iptr1
		LACC	*,1
		SUB		trig_value,1
		BCND	DL_EXIT, GEQ			;If not Neg return
		SPLK	#POS_TRIG_S2, task_ptr
		B		DL_EXIT

POS_TRIG_S2:	;(Positive trigger, detect Positive signal)
		LAR		AR5, dlog_iptr1
		LACC	*,1
		SUB		trig_value,1
		BCND	PTS2_1, LT			;If Neg, return to S1
		SPLK	#DL_TRIGGERED, task_ptr

		B	DL_EXIT

PTS2_1:		SPLK	#POS_TRIG_S1, task_ptr
		B	DL_EXIT


DL_TRIGGERED:

		LACC	dlog_skip_cntr		;Check if time to Log
		ADD	#1
		SACL	dlog_skip_cntr
		SUB		#DLOG_PRESCALE
		BCND	DL_EXIT, NEQ

	;Data is logged here
		LAR	AR5, dlog_iptr1
		LACC	*
		LAR	AR5, graph_ptr1
		SACL	*+
		SAR	AR5, graph_ptr1

		LAR	AR5, dlog_iptr2
		LACC	*
		LAR	AR5, graph_ptr2
		SACL	*+
		SAR	AR5, graph_ptr2

		SPLK	#0, dlog_skip_cntr

		LACC	dlog_cntr			;Check if Data buffer full
		ADD	#1
		SACL	dlog_cntr
		SUB	#DLOG_CNTR_MAX
		BCND	DL_EXIT, NEQ

		SPLK	#0, dlog_cntr
		SPLK	#POS_TRIG_S1, task_ptr
		SPLK	#DL_BUFFER1_ADR, graph_ptr1
		SPLK	#DL_BUFFER2_ADR, graph_ptr2

DL_EXIT
		RET

⌨️ 快捷键说明

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