| 作者 | 主题 |
|---|---|
|
老兵veteran 至圣
经验值:59333 发帖数:9984 精华帖:505 |
楼主
主题:求教:L P#P 0.0
在学习别人的程序时,遇到一条语句,如下:
L P#P 0.0 请问,P0.0代表那个地址区?
天生不宜做胜利者,自来没有胜利的欲望,只是不甘失败,十分十分不甘心失败。木心
|
|
老兵veteran 至圣 经验值:59333 发帖数:9984 精华帖:505 |
楼
主题:回复:求教:L P#P 0.0
今天又写了一段程序:
L DW#16#0 L 512 SLD 3 L P#P 0.0 +D LAR1 L W[AR1,P#0.0] T MW250 下到模拟器中运行,结果是什么?结果就是读的地址为512的外设的输入! 可见,P#P0.0的默认区域就是外设的输入。
天生不宜做胜利者,自来没有胜利的欲望,只是不甘失败,十分十分不甘心失败。木心
|
|
Harry_dong 侠士 经验值:1424 发帖数:480 精华帖:16 |
楼
主题:回复:求教:L P#P 0.0quote:以下是引用老兵在2006-07-23 17:06:38的发言: 今天又写了一段程序: L DW#16#0 L 512 SLD 3 L P#P 0.0 +D LAR1 L W[AR1,P#0.0] T MW250 下到模拟器中运行,结果是什么?结果就是读的地址为512的外设的输入! 可见,P#P0.0的默认区域就是外设的输入。 那么外设的输出又该怎样表示呢?? 我做了下面一个试验老兵侠看看能否说明外设输出是怎样表示的。 硬件:CPU312C,DI10/DO6,I 124~125;Q 124 程序:L P#P 124.0 LAR1 L MB 40 T B [AR1,P#0.0] L P#P 124.0 LAR2 L B [AR2,P#0.0] T MB 50 通过VAT表强制MB40可以得到相应的输出。 通过开关的实际输入可以在MB50中得到相应的数值。 因此:是否在T指令时P#P124.0指向输出;而在L指令时P#P124.0指向输入.
学无止境
|
|
Zane 版主 经验值:85161 发帖数:21047 精华帖:399 |
楼
主题:回复:求教:L P#P 0.0quote:以下是引用sjshej在2006-07-30 01:22:17的发言: 高水平的讨论,受教了。 我一直没有解决一个问题:如何使用指针来存取外部输入(PI)的大段连续区域,比如想用SFC 20(BLKMOV)来取自PIB272起始的20个字节,我写成P#PI272.0 byte 20,不被接受;而写成P#I272.0 byte 20,运行时报错误。要怎样写才正确呢?难道是P#P 272.0 byte 20吗? 外设地址只能用传送指令或SFC14/15来访问,如果你的20个字节定义成一致性区域的话可以一次性用SFC14来读取,否则只能用传送指令逐条读取. SFC20只能针对映像区地址进行操作.
Zane
注册自动化系统工程师
Always save before download
|