发布于 2009-08-08 14:10:25
0楼
子程序:
Network 1 // 网络标题
// 把采集来的温度数字量存放到V存储区,进行运算;
LD SM0.0
MOVW LW0, VW122
Network 2
// 因为采集后要把N个值加和,有可能超过32767,就要把采集来的值变成双整数,便于以后加和;
// 若为正数,则最高位去给补0;若为负数则补1;VW122是后16位,要给前16位即VW120加符号位;以确保它的正负;
LDW>= VW122, 0
MOVW 0, VW120
NOT
MOVW 16#FFFF, VW120
Network 3
// 把当前采样值VD120加到采样和中去,用自加一计数器,记录采样个数;
LD SM0.0
+D VD120, VD130
INCW VW140
Network 4
// 如果当前的采样次数==设定的采样次数,则进行除法运算求平均值;用ENCO计算移位数;用SHR_DW指令将VD134里的值右移AC1,即用VD134除以了2的AC1 次方;最后将采样和,和自加1计数器中的计数值清0;
LDW>= VW140, VW142
MOVD VD130, VD134
ENCO VW142, AC1
SRD VD134, AC1
MOVD 0, VD130
MOVW 0, VW140
Network 5
// 平均值是温度,0----100度,对应的数字量最大是6400----32000;故温度平均值的数字值一定是在字的范围内;故平均值是VW136;
LD SM0.0
MOVW VW136, LW2