去掉最大值和最小值,中间取平均的滤波程序可以这样写:
采样值全部加总,在采样过程中记下最小值和最大值,采样完毕后,减去最小值和最大值,剩下的平均.
变量:
VW100: 存最小值
VW102: 存最大值
VD104: 存累加值
VW108: 结果
// 采样一个序列
// 第一个采样值
ld 第一个采样条件
movw aiw0 ac0
movw ac0 vw100
movw ac0 vw102
itd ac0 vd104
// 其余的采样
ld 其作余的采样条件
movw aiw0 ac0
itd ac0 ac0
+d ac0 vd104
lps
aw> vw100 ac0 // 是否比前面的小?
movw ac0 vw100
lpp
aw< vw102 ac0 // 是否比前面的大?
movw ac0 vw102
// 最后一个采样完毕
ld 最后一个采样条件
movd vd104 ac0
itd vw100 ac1
-d ac1 ac0
itd vw102 ac1
-d ac1 ac0
/d (采样个数-2) ac0
movw ac0 vw108 // 保存结果