回复:应用探讨——西门子指针编程使用探讨

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2011-11-30 20:09:30

26楼

也想说说我使用指针的感受,一:(位间接寻址)
1、在使用指针时:一般多是先赋值(初始化地址寄存器),后使用;
2、尽量使用常数指针加地址区域标示符来进行间接寻址,这样更容易理解;
3、在寻址时,可以结合循环次数、寻址幅度来改变寻址区域范围;
下面举一个例子参考:(统计每个周期,Q5.5~Q15.5这个地址范围内,88个位状态为1的个数,即设备运行个数)

//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L 0
T MW 100 //将上个周期的累计值清零
LAR1 P#5.5 //指针寻址的起始地址(利用指针常数,初始化地址寄存器1)
L 88 //将其修改成0-65535可以实现全地址范围内寻址
NEXT: T LW 100 //但是必须考虑其循环耗费的时间
A Q [AR1,P#0.0] //修改Q为I、M、L可实现不同存储器间的寻址
JCN M001
L MW 100
+ 1 //扫描到有状态1存在,累计个数自加1功能
T MW 100 //设备运行累计个数
M001: +AR1 P#0.1 //位地址向前推进一位
L LW 100
LOOP NEXT //循环次数减至0时,离开循环,程序往下执行
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬

需注意:+AR1 P#0.1 指令的含义,其实就是下面四条语句的集成、和浓缩!
TAR1 //将地址寄存器1的内容传送至累加器1
L P#0.1 //将累加器1的内容移至累加器2,并将指针常数 P#0.1装载到累加器1
+D //累加器1的内容加上累加器2的内容并暂存在累加器1中
LAR1 //将累加器1的内容装载到地址寄存器1中

从上面的例子和指令分解我们不难发现,地址寄存器可以直接赋值,并可以结合累加器进行灵活的地址运算!
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54756条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。