发布于 2006-01-18 12:07:37
0楼
就是一个采集模拟量后平均值滤波的程序,其中有两处用了些编程技巧
// 读入模拟输入口数据
LD SM0.0
MOVW AIW0, VW312
[COLOR=red]技巧一:进行符号扩展
使得可以通过双字型访问采入的模拟量参与后面的累加计算,这几句相当于
//itd vw312, ac0
//movd ac0, vd310[/COLOR]
LDW>= VW312, +0
MOVW +0, VW310
NOT
MOVW 16#FFFF, VW310
// 采样值加到累加器,采样计数加1
LD SM0.0
+D VD310, VD314
INCW VW300
//达到设定的采样数时,取出累加值
LDW>= VW300, VW302
MOVD VD314, VD318
[COLOR=red]// 这两句求平均值,相当于
// itd vw300,ac0
// /d ac0,vd318
// 技巧二:因为除法指令比较耗时,这两句可以节约很多时间
// 但用这个方法有个前提,采样次数必须是 2 的幂[/COLOR]
ENCO VW300, VB900
SRD VD318, VB900
// 累加器、采样计数清零
MOVD +0, VD314
MOVW +0, VW300
生命存在的方式只有两种:腐烂或燃烧