s7300語句表程序
鄭志武
發(fā)布于2012-12-18 17:51
6
0
標(biāo)簽:
set
save
=l0.1
l#in1
negr
l#in2
tak
<=
jcm001
不知道set,save,l0.1,tak為什么這么用,經(jīng)??吹竭@樣用,但不理解什么意思!只看明白in1<=in2則跳轉(zhuǎn)!開始的前面句子不知道有什么用!望大俠們能具體講解下!不勝感激!
問題補(bǔ)充:
set
save
=l0.1
這句的意思是不是局部堆棧l0.1強(qiáng)制為1保存到br位!我感覺這句好像沒什么用啊,直接用下面比較那句好了?。∏蠼猓?!
佳答案
1、set命令:使用rlo置位(set)指令,可以將rlo的信號(hào)狀態(tài)置為“1”。
2、save命令:使用save指令,可以將rlo存入br位。
3、tak:累加器1與累加器2進(jìn)行互換
4、有關(guān)rlo的信號(hào)狀態(tài):
邏輯運(yùn)算結(jié)果:狀態(tài)字的第1位為rlo位(rlo=“邏輯運(yùn)算結(jié)果”),在二進(jìn)制邏輯運(yùn)算中用作暫時(shí)存儲(chǔ)位。比如,一串邏輯指令中的某個(gè)指令檢查觸點(diǎn)的信號(hào)狀態(tài),并根據(jù)布爾邏輯運(yùn)算規(guī)則將檢查的結(jié)果(狀態(tài)位)與rlo位進(jìn)行邏輯門運(yùn)算,然后邏輯運(yùn)算結(jié)果又存在rlo位中。
5、有關(guān)程序:為了將"db_f_show"變量清零,事先將rlo的信號(hào)狀態(tài)置為“1”。
set//rlo的信號(hào)狀態(tài)置為“1”。
r"db_f_show"//如果rlo=1,則將"db_f_show"變量清零。
7、negr將浮點(diǎn)數(shù)(32位,ieeefp)取反;結(jié)果保存到累加器1中。
lz的問題補(bǔ)充:
是stl指令的監(jiān)控通過cpu內(nèi)部寄存器中的狀態(tài)字實(shí)現(xiàn),br位于該狀態(tài)字的第八位,而rlo位于位。
br的作用及含義如下:
br是二進(jìn)制結(jié)果位,解釋字邏輯的結(jié)果。另一方面,在編寫函數(shù)或函數(shù)塊時(shí),如果沒有將rlo位存儲(chǔ)到br中,使用lad調(diào)用時(shí),不能激活函數(shù)輸出“eno”(不導(dǎo)通狀態(tài)),例如程序如下圖:
||———————|
||fc1|
|————|eneno|————————
|||
||————————|
如果沒將rlo位存入到br中,當(dāng)調(diào)用用戶編寫的函數(shù)fc1時(shí),函數(shù)執(zhí)行,但eno沒有輸出,能流沒導(dǎo)通。在函數(shù)的結(jié)尾,簡(jiǎn)單使用save指令可以顯示eno的狀態(tài)。
狀態(tài)字中的br信號(hào)可以在程序中使用指令進(jìn)行操作,如調(diào)用set、clr指令直接對(duì)rlo位進(jìn)行操作。狀態(tài)字是調(diào)試stl程序不可缺少的工具。
這樣,你就能明白,你所列出的程序?yàn)槭裁匆@樣寫了。
程序開頭
set//強(qiáng)行將rlo置位為"1”
save//將rlo位存儲(chǔ)到br
=l0.1//l0.1為局部臨時(shí)變量,在這里沒有特別意義,通過該指令使當(dāng)前rlo位不影響下一語句。
程序本體。。。
程序結(jié)尾
clr//強(qiáng)行將rlo復(fù)位為"0"
al0.1//與l0.1進(jìn)行與操作,rlo結(jié)果仍為"0"
save//將br位復(fù)位清0
也就是說有了這程序開頭和結(jié)尾,該程序中l(wèi)ad調(diào)用任何用戶函數(shù)fc或fb時(shí),保證能流導(dǎo)通。