📄 data_log.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 + -