大致想法是用平均值的方法,比如,采样10个周期,取这10个周期的采样平均值,再输出到某个地址,供程序调用。
最好能封装成一个子函数的形式,方便。。
谢谢大侠们。。
最佳答案
程序转载:
主程序:
LDSM0.1
callSBR_0
LDSM0.0
CALLSBR_1
子程序SBR_0
//定于采样次数(次数×采样时间=平均值输出时间)
LDSM0.0
MOVW+10,VW0
//采样值存储器清零
LDSM0.0
FILL+0,VW2,11
//这些都是对应的地址清零
LDSM0.0
MOVD+0,VD200
MOVD+0,VD204
MOVD+0,VD208
MOVD+0,VD212
MOVD+0,VD216
MOVD+0,VD308
MOVD+0,VD224
子程序SBR_1
//调出模拟信号
LDSM0.0
MOVWAIW0,VW200
//定义采样时间
LDSM0.0
ANT37
TONT37,1
//将模拟量值存入表格
LDT37
ATTVW200,VW0
//将值转化为实数
LDSM0.0
ITDVW200,VD204
DTRVD204,VD208
MOVWVW2,VW300
//求采样和
LDT37
+RVD208,VD212
//采样次数到,求平均值,采样和减去采样第一次值
LDW>VW300,+9
ITDVW300,VD216
DTRVD216,VD220
MOVRVD212,VD224
/RVD220,VD224
FIFOVW0,VW306
ITDVW306,VD308
DTRVD308,VD312
-RVD312,VD212
//转换为整数输出
LDSM0.0
ROUNDVD224,VD228
DTIVD228,VW232
仅供参考学习。
提问者对于答案的评价:
本程序完全符合我的想法。。
多谢多谢。。
不过用上系统自带的滤波功能,效果也不错的。。
最佳答案作者回复:
这个就是所谓条条大路通罗马,思路有多种,目的只有一个。