循環(huán)移位指令有什么作用?
閱讀:1448 發(fā)布時(shí)間:2021-4-29
循環(huán)移位指令將字節(jié)、字或雙字中的各位向右或向左循環(huán)移動(dòng)N位后,再送給指令的輸出單元。循環(huán)移位是環(huán)形的,即被移出來的位將返回到另一端空出來的位(見圖4-18)。
帶進(jìn)位的右、左循環(huán)移位指令各位的數(shù)據(jù)與進(jìn)位位一起(16位指令時(shí)一共17位)向右(或向左)循環(huán)移動(dòng)n位。
(1) 16位節(jié)日彩燈的循環(huán)移位控制設(shè)計(jì)循環(huán)移位的16位彩燈控制程序,移位的時(shí)間間隔為1s,掃描時(shí)用M8002來設(shè)置彩燈的初值,X20為OFF時(shí)循環(huán)右移1位,為ON時(shí)循環(huán)左移1位。TO用來產(chǎn)生周期為1s的移位脈沖序列,下面是實(shí)現(xiàn)上述要求的程序:
(2) 10位彩燈循環(huán)左移
要求用S7-200的oo.o - oi.1來控制10位彩燈的循環(huán)左移,即從Q1.1移出的位要移人oo.o。值得注意的是在owo中,QBO在高字節(jié),QB1在低字節(jié)(見圖4-20)。10位循環(huán)移位的關(guān)鍵是將Q1.1移到Q1.2的數(shù)傳送到QO.O中。CPU 224的Q1.2雖然不對外輸出,但是它的輸出過程映像寄存器可以供用戶程序使用。如果在設(shè)置彩燈初值時(shí)令oo.o為1,它會(huì)被Q1.2置為0,造成實(shí)際點(diǎn)亮的燈比設(shè)置的燈少一個(gè)的現(xiàn)象。
(3)循環(huán)投切
假設(shè)用S7-200的QO.O - Q0.7來控制自動(dòng)無功補(bǔ)償裝置投切電容器的8個(gè)交流接觸器。為了使各交流接觸器均衡使用,一般采用循環(huán)投切的工作方式,即最先投入的電容器被最先切除。用8位循環(huán)移位指令可以實(shí)現(xiàn)這一功能。假設(shè)按QO.O至Q0.7的順序投切電容器,當(dāng)前投入了3組電容器,Q0.2- Q0.4為1,Q0.2最先投入。需要投切電容時(shí),首先將QBO循環(huán)左移1位,變?yōu)镼0.3- QO.5為1。如果需要切除電容器,將移位前后兩個(gè)字節(jié)的值相“與”,由表4-3可知,“與”運(yùn)算后僅Q0.3和Q0.4為l,Q0.2被切除。如果需要投入電容器,將移位前后兩個(gè)字節(jié)的值相“或”,由表4-3可知,“或”運(yùn)算后Q0.2-oo.s為1,所以將投入Q0.5。