📄 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: x2407
;=====================================================================================
; 修改记录:
;-------------------------------------------------------------------------------------
; 最终修改日期:2005.6.13 版本号 Ver 1.0
;===========================================================================
;(要调用模块,就将下面声明语句复制到主程序代码中相应位置)
; .ref DATA_LOG, DATA_LOG_INIT ;子程序调用
; .ref dlog_iptr1, dlog_iptr2 ;输入
; .ref trig_value ;输入
;===========================================================================
;外部变量定义
.def DATA_LOG, DATA_LOG_INIT ;子程序调用
.def dlog_iptr1, dlog_iptr2 ;输入
.def trig_value ;输入
;===========================================================================
.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 #228h, dlog_iptr1
SPLK #22bh, dlog_iptr2
SPLK #0010h, trig_value ;设置触发点
SPLK #0h, dlog_skip_cntr ;清0跳过数据采样计数器
SPLK #0h, dlog_cntr ;清0数据采样计数器
RET
;---------------------------------------------------------------------------------
DATA_LOG: ;控制程序
;---------------------------------------------------------------------------------
LDP #task_ptr
MAR *, AR5
SETC SXM
LACC task_ptr
BACC
POS_TRIG_S1: ;反向触发, 检测反向信号
LAR AR5, dlog_iptr1
LACC *,1
SUB trig_value,1
BCND DL_EXIT, GEQ ;如果未反向则返回
SPLK #POS_TRIG_S2, task_ptr
B DL_EXIT
POS_TRIG_S2: ;反向触发, 检测反向信号
LAR AR5, dlog_iptr1
LACC *,1
SUB trig_value,1
BCND PTS2_1, LT ;如果反向则返回到 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 ;检测是否超时
ADD #1
SACL dlog_skip_cntr
SUB #DLOG_PRESCALE
BCND DL_EXIT, NEQ
;数据存储
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 ;检查数据缓冲区是否已满
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 + -