回复:关于间接寻址 指针的一段程序

晏小芬

  • 帖子

    39
  • 精华

    0
  • 被关注

    1

论坛等级:游民

注册时间:2011-07-08

普通 普通 如何晋级?

发布于 2012-04-03 16:19:38

8楼

quote:以下是引用n次看你的背影在2012-04-03 15:01:33的发言:
quote:以下是引用cher在2012-04-03 09:48:25的发言:
quote:以下是引用n次看你的背影在2012-04-01 21:08:49的发言:
如果不移位,那麽ld0必须是8的整数倍!
谢谢N侠的指点,这些我是知道的,只是对L区还是有一些疑惑,在FC或者FB中定义临时变量会自动分配给一个L区的值,会不会出现这样的问题,如果FC1中temp用到了LD20,FC2中也用到了LD20导致程序运行出错呢?


cher:youhm大侠说的是正确的。
我举一参考例子说明一下吧:
比如FC1里面需要实现这样的浮点算法 y=a×b+c×d
那么可以这样:
L #a
L #b
*R
T LD20 //暂存a×b的结果,是一个中间运算过程;

L #c
L #d
*R
L LD20
+R
T #y
等这段程序执行完成以后,LD20暂存数据的使命已经完成,它已经被释放,可以被接下来的程序所使用。

比如接下来执行FB1,FB1里面需要实现这样的浮点算法 Y=A×B+C×D
L #A
L #B
*R
T LD20 //暂存A×B的结果,是一个中间运算过程;

L #C
L #D
*R
L LD20
+R
T #Y
这段程序同样也使用了LD20,它将A×B的结果覆盖了原来的数据,但并没有影响FC1执行的结果;FC1中的LD20也没有影响FB1执行的结果。也就是说L区只要遵循先赋值后使用的原则,在一个周期里面可以被多个FC或者FB多次使用!每款CPU的L区的大小会不一样,使用L区时,需要注意L区的地址范围和子程序的嵌套深度,如果超出地址范围,没有相应的中断,CPU会进入STOP模式,切记!

学习了,有问题再请教大师!!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54615条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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