各位,看看这段模拟量编程的源码,我觉得有些问题!
我是在教材上抄下来的,但是我看觉得有些问题:
主程序
//*调用子程序0,初始化*//
//*调用子程序1检查模块情况*//
//*调用子程序2和3采集数据并输出数据*//
LD SM0.1
CALL SBR_0
LD SM0.0
CALL SBR_1
LDN M17.0
AN M17.1
CALL SBR_2
CALL SBR_3
子程序0
//*记数器清零,预置采样次数,采样值清零,采样和清零,平均值清零*//
LD SM0.0
MOVW +0, VW0
MOVW +10, VW2
MOVD +0, VD10
MOVD +0, VD14
MOVD +0, VD18
子程序1
//*检查第一个扩展模块是否存在,不存在则置M17.0为1*//
LDB= SMB8, 16#19
NOT
S M17.0, 1
//*检查第一个模块是否否有错误,并检查电压是否有错误,有错置M17.1为1*//
LDB= SMB9, 16#0
NOT
AB= SMB9, 16#04
S M17.1, 1
子程序2
//*输入信号放入VW12 ?//输入信号是0-5V,字对应是,转换成双字是?*//
LD SM0.0
MOVW AIW0, VW12
//*检查输入值,并把输入值转换成双字 //?W12 变成双字,VW10,没有转换成VD10 的语句?*//
LDW>= VW12, +0
MOVW +0, VW10
NOT
MOVW 16#FFFF, VW10
//*当前采样值加入到采样和 采样计数值加1*//
LD SM0.0
+D VD10, VD14
INCW VW0
//*采样次数达到,则把VD14采样和复制到VD18 //计算移位数//用移位求平均值*//
LDW>= VW0, VW2
MOVD VD14, VD18
ENCO VW2, AC1
SRD VD18, AC1
MOVD +0, VD14
MOVW +0, VW0
(VD18 没有转换成VW20;哪来的VW20输出?)
子程序3
//* VW20数据输出到AQW0 //为单极输入,所以不检查正负 ?输出是字,如何对应0-10V电压*//
LD SM0.0
MOVW VW20, AQW0
注解是我加的,我的问题也在注解中,请各位看看
谢谢