技术论坛

 回复:求教:L P#P 0.0

返回主题列表
作者 主题
老兵veteran
至圣

经验值:59333
发帖数:9984
精华帖:505
楼主    2006-05-30 16:19:07
主题:求教:L P#P 0.0
在学习别人的程序时,遇到一条语句,如下:
L   P#P 0.0

请问,P0.0代表那个地址区?
天生不宜做胜利者,自来没有胜利的欲望,只是不甘失败,十分十分不甘心失败。木心
老兵veteran
至圣

经验值:59333
发帖数:9984
精华帖:505
    2006-07-23 17:06:38
精华帖  主题:回复:求教: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
    2006-07-24 10:52:53
精华帖  主题:回复:求教:L P#P 0.0
quote:以下是引用老兵在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
    2006-08-02 15:01:59
精华帖  主题:回复:求教:L P#P 0.0
quote:以下是引用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
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。