嵌入式
返回首页

西门子S7-300PLC的寄存器间接寻址问题

2015-07-07 来源:diangon

在FC1程序中,第4条指令L     W [AR1,P#0.0],后面注释是取指针第1个字内的数据块编号,第9条指令L     D [AR1,P#2.0],后面的注释是取指针内数据区的起始地址。这2条指令格式一样,怎么一个是取地址内的内容(数据块编号),一个是取起始地址?

答:下图是参数类型Pointer的结构:

下面是书中的程序:

参数类型为Pointer的输入参数Start_Addr占6个字节,P##Start_Addr是第1个字节的地址。执行第二条指令后,AR1中是输入参数Start_Addr(指针)的首地址,所以第4条指令装入累加器的是指针第1个字内的数据块编号,第9条指令“L   D [AR1,P#2.0]”装入的是指针第2个字节开始的双字,即指针内数据区的起始地址。

如果Start_Addr的实参为DB2.DBX4.0,第9条指令装入的就是DBX4.0的地址(即DB4的地址)。

进入嵌入式查看更多内容>>
相关视频
  • PX4固件二次开发课程

  • RISC-V嵌入式系统开发

  • NuttX Workshop 2024

  • 自己动手写操作系统

  • SOC系统级芯片设计实验

  • 自己动手做一台计算机

精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 离子检测器电路分析

  • 一个简单的立体声平衡指示器电路

  • 分享一个电网倾角计电路

  • 电谐波图形均衡器示意图

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章