以下程序是求平均值的子程序,当我调用的时候,如果只单独调用,没有问题;但是当我求两个的平均值的时候,发现两路平均值是两路输入的和的一半?请高手帮忙,谢谢!
主程序:
Network 1
LD SM0.0
CALL AVER, AIW0, 128, VW0
Network 2
LD SM0.0
CALL AVER, AIW2, 128, VW2
AVER子程序:
input 需要处理的值
pre_sample_c 采样次数
output 平均处理后的值
input_temp 为了进行计算,转换成双整的需要处理的值
counter 计数器
sum 采样和
out_temp 为了进行计算,得出的平均值
move_bit 计算移位数,即为除数
Network 1
LD SM0.1
MOVW 0, #counter
MOVW 0, #input
MOVD 0, #input_temp
MOVW 0, #output
MOVD 0, #out_temp
MOVD 0, #sum
Network 2
LD SM0.0
ITD #input, #input_temp
+D #input_temp, #sum
INCW #counter
Network 3
LDW>= #counter, #pre_sample_c
MOVD #sum, #out_temp
ENCO #pre_sample_c, #move_bit
SRD #out_temp, #move_bit
DTI #out_temp, #output
MOVD 0, #sum
MOVW 0, #counter
MOVD 0, #input_temp
MOVD 0, #out_temp