sxdo
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看sxdo的 主题 / 回贴
楼主  发表于: 2010-10-19 18:48
第一个程序:

LD       X0
INCP  D0
LD       M8000
MOV    D0     D10
LD       X1
SFWRP  D10  K4Y0  K8

第二个程序:
LD      X0
INCP  D0
LD      M8000
MOV   D0  D10
LD      X1
SFWRP  DIO  D20 K8
BCD   D20   K4Y0

为什么两种情况下Y0输出不同?请高手帮忙,谢谢!!
[ 此帖被sxdo在2010-10-23 15:14重新编辑 ]
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5200 个
工控威望: 7423 点
下载积分: 158839 分
在线时间: 3163(小时)
注册时间: 2007-11-21
最后登录: 2024-12-02
查看sjm213的 主题 / 回贴
1楼  发表于: 2010-10-19 21:53
1. SWFR指令的【D·】位不仅确定了数据的个数,而且确定了数笔数据存储的位置。程序1中D0的数据被依次放到K4Y20、K4Y40……,而程序2中D0数据只是放入D寄存器,不会映射到输出点上,这是不同之一;
2. 即使单就K4Y0来看,由于程序2中多了一个BCD指令,也有可能造成输出的不同。然而这个程序中SWFR记录的数据量较小,倒是K4Y0输出两者应该是一致的。
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5200 个
工控威望: 7423 点
下载积分: 158839 分
在线时间: 3163(小时)
注册时间: 2007-11-21
最后登录: 2024-12-02
查看sjm213的 主题 / 回贴
2楼  发表于: 2010-10-20 21:31
你用的仿真?那么应该能看到不只是Y20有输出,Y41、Y60、Y61没有变化吗?
原因就在SWFR指令,你先去看看这个指令会产生什么样的动作,看明白了就理解了。