我想用寄存器尋址的方式編一個(gè)“單按鈕”功能
劉玉蓉
發(fā)布于2014-11-21 17:15
28
0
標(biāo)簽:
OB1 程序如下
CALL FC 1
middle:=M0.0
button:=M100.0
FC1 在in_out欄目下 建立兩個(gè)bool型變量 ,button 與middle
我的目標(biāo)是是middle是button 控制的單按鈕
FC1內(nèi)容如下:
程序段1:
L P##middle
L DW#16#FFFFFFF8
AD
LAR1
A #button
FP M M [AR1,P#0.6] //為什么這一條上升沿不能正常執(zhí)行?
JCN _001
L 1
L MB [AR1,P#0.0]
+I
T MB [AR1,P#0.0]
_001: NOP 0
程序段2:
A M [AR1,P#0.0]
FN M [AR1,P#0.5] //但是這一條下降沿可以正常執(zhí)行,
JCN _002
L 0
T MB 20
_002: NOP 0
問題補(bǔ)充:
我FP后面多寫了M,是我在這里寫錯(cuò)了。但是我將FP后面的內(nèi)容換成一個(gè)比如說M100.6,再執(zhí)行程序,就能正常的執(zhí)行啊。功能也能實(shí)現(xiàn)。
我上面的AD指令,按位求與,我是想將不管別人輸M0.7~M0.0,我都是希望是M0.0啊,這里應(yīng)該不會(huì)讓M0.0始終為1 啊
佳答案
這種尋址不支持位變量,你監(jiān)控時(shí)可以看到AR1是V區(qū)的變量,并不是M區(qū)的。你可以將#middle的類型改為字節(jié)即可。
感覺你的程序也不太嚴(yán)謹(jǐn),可以去掉M標(biāo)識(shí),并且對(duì)MB [AR1,P#0.0]累積加1,上升沿用 M [AR1,P#0.6],累加值會(huì)出現(xiàn)錯(cuò)誤。