关于指针变址的使用 点击:414 | 回复:4



peter_wjp

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2008年12月13日
发表于:2008-12-31 12:43:58
楼主

大家好,小弟目前在学习S7-200,我现在要做的是从VB100到VB200之间的100个8位数据都加上1。然后放到VB500-600内存单元里,那我该怎么做?

我希望是用指针做变址

谢谢了

 




peter_wjp

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2008年12月13日
发表于:2008-12-31 13:27:01
1楼

看看这样可以么?
// 实现从把VB100-VB200的值都加上1,然后存储在VB300-VB400面。
// 定义2个指针 *VD1000 和*VD1001

Network 1
LD I0.0
= M2.0


Network 2 // 网络标题
// 网络注释
LD SM0.1
MOVD &VB100, VD1000
MOVD &VB300, VD1001
MOVW 0, VW0


Network 3
LD M2.0
FOR VW0, 1, 100


Network 4
LD M2.0
MOVD 1, *VD1001
+D *VD1000, *VD1001
+D VD0, VD1000
+D VD0, VD1001


Network 5
NEXT

peter_wjp

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2008年12月13日
发表于:2008-12-31 14:16:30
2楼

补充修改下:

Network 4
LD M2.0
MOVW  1, *VD1001
+W *VD1000, *VD1001
+D VD0, VD1000
+D VD0, VD1001

根在河洛

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 23回
  • 年度积分:0
  • 历史总积分:67
  • 注册:2007年12月18日
发表于:2009-01-07 21:24:16
3楼

这样怎样,应该可以实现。

LD SM0.1
MOVD &VB100, VD0 //初始化指针
MOVD 0, VD8 //清零记数双字

LD I0.0 //当输入使能
FOR VW10, 1, 100 //开始从1循环100次
+D 1, *VD0 //将指针数据加1,结果放入*VD0指向的存储器,第一次循环*VD0指向VB100中的数据
+D VD8, VD0 //将地址加上偏移量,进入下一个地址准备计算。
NEXT //循环

LD SM0.0
BMB VB100, VB500, 100 //将计算后的VB100-VB199存入VB500-VB599

原地跑步

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 56回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2006年9月10日
发表于:2009-06-08 21:44:15
4楼

我试试先,呵呵

最近也想玩玩指针:)


热门招聘
相关主题

官方公众号

智造工程师