ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-04
查看ayusecret的 主题 / 回贴
楼主  发表于: 2022-04-24 08:53
图片:
如图,什么情况下能让光标位置的FMOV指令出错,这种情况我相信一般项目是很难遇到的,而在实际项目如果遇到了,一般很难分析出哪里有问题(前提在大量程序和变址调用干扰下)。欢迎分享你们的看法,让其他人可以学习学习。晚点我会分享我的答案。
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-04
查看ayusecret的 主题 / 回贴
1楼  发表于: 2022-04-24 09:57
引用
引用第1楼cvlsam于2022-04-24 09:53发表的  :

这是第一个坑,请看第一条指令,D3000是能被寻址到的。

[attachment=266699]

Good Luck~
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-04
查看ayusecret的 主题 / 回贴
2楼  发表于: 2022-04-24 11:11
图片:
如图、D2060能给到值,但D2048给值就报错,分析下啥原因
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-04
查看ayusecret的 主题 / 回贴
3楼  发表于: 2022-04-25 10:42
本贴讨论要点不在于元件的分配范围大小,根据手册(图1),在于同一软元件在内部元件和文件寄存器之间变址修饰的分配顺序。


参数配置如图2


测试数据如图3


关于图3第一条Mov指令寻址不报错,手册这样解释


一开始我仿真后没找到实际的赋值地址,后面我把W地址给到8K(原来为0),此时M0先断开,因为D1023Z0寻址到大概W1F36处,重写参数后找到查看W1F36区域,发现之前赋给D1023Z0的HFFFF值就在此区域.
同理,对第二条FMOV指令报错,如果在W区或SW区稍微分配个区域,则FMOV里的D1023将寻址到W区或SW区而不报错。

以上总结变址修饰在使用前需正确初始化,否则在实际应用中将导致不可预见的错误而不被察觉。
本帖最近评分记录:
  • 下载积分:+5(金秋来)