mall9002
級(jí)別: 略有小成
|
怎么感覺FOR循環(huán)下,到達(dá)表達(dá)式成立后后面的,加,轉(zhuǎn)移指令還會(huì)執(zhí)行? 邏輯指令能夠停止?這是怎么回事? FOR shuzhi1:=0 TO 10 BY 1 DO Z1:=Z1+1; DMOV(TRUE,k1234,shuzhi2); Y21:=M8002; IF shuzhi1=10 THEN EXIT; END_IF; END_FOR; shuzhi2 為全局變量 軟元件 D1354Z1 shizhi1 全局變量 D1350 shuzhi1到達(dá)10后,Z1:=Z1+1; DMOV(TRUE,k1234,shuzhi2); 還會(huì)執(zhí)行; Y21:=M8002; 不執(zhí)行 。 而且編譯結(jié)果看起來(lái)也是跳過(guò)這些語(yǔ)句的,實(shí)在不明白了。使用REPEAT的不存在這樣的問題。 129 LDD> D1350 K10 138 CJ P1074 141 LD M8000 142 ADD Z1 K1 Z1 149 LD M8000 150 DMOV K1234 D1354Z1 159 LD M8002 160 OUT Y021 161 LDD<> D1350 K10 170 CJ P1075 173 LD M8000 174 CJ P1074 177 P1075 179 LD M8000 180 DADD K1 D1350 D1350 193 LD M8000 194 CJ P1073 197 P1074 199 LD M8012 200 OUT Y020 |
---|---|
|
mall9002
級(jí)別: 略有小成
|
FOR shuzhi3:=0 TO 10 BY 1 DO shuzhi4:=shuzhi4 +1 ; END_FOR; shuzhi3 = 11 shuzhi4 = 13420; shuzhi4 = 13420 手冊(cè)上的例子照抄都是不停止執(zhí)行。 201 LD M8000 202 MOV K0 D536 207 P1076 209 LD> D536 K10 214 CJ P1077 217 LD M8000 218 ADD D535 K1 D535 225 ADD K1 D536 D536 232 LD M8000 233 CJ P1076 236 P1077 238 P1072 |
---|---|
|
楓落云端
施主,腳抬一下
級(jí)別: 略有小成
|
FOR 是一直會(huì)執(zhí)行循環(huán);建議FOR外面加條件IF,等到需要執(zhí)行FOR的時(shí)候執(zhí)行一次。 至于 “Y21:=M8002; 不執(zhí)行 ” ,應(yīng)該是你分析的問題,實(shí)際上肯定是一直會(huì)執(zhí)行Y21:=m8002; M8002只是第一次開機(jī)掃描周期會(huì)ON,之后都為OFF |
---|---|
|
mall9002
級(jí)別: 略有小成
|
本來(lái)要寫 Y21:=M8012 ,手殘了。改了以后是都執(zhí)行。 if加在for外面是可行的,剛又去翻了一下書,F(xiàn)OR的變量初始值在一次執(zhí)行中是加到到達(dá)數(shù),然后停止循環(huán),再次執(zhí)行到for時(shí)再?gòu)某跏贾甸_始加進(jìn)入循環(huán),所以看到執(zhí)行語(yǔ)句是不停執(zhí)行的。 感謝! IF shuzhi1<10 THEN FOR shuzhi1:=0 TO 10 BY 1 DO bianzhi:=bianzhi+1; DMOV(TRUE,k1234,shuzhi2); Y21:=M8012; END_FOR; END_IF; 這個(gè)是可行的 [ 此帖被mall9002在2019-05-08 15:39重新編輯 ] |
---|---|
|