在現(xiàn)場(chǎng)控制中,經(jīng)常需要將一個(gè)控制位的狀態(tài)轉(zhuǎn)移到下一個(gè)狀態(tài)或者后N個(gè)狀態(tài),在這里使用移位指令是非常方便的,但是移位指令的位移位數(shù)的范圍是存在局限性的。
以永宏P(guān)LC左位移指令51DP.SHFL]為例,當(dāng)指令為16位時(shí),位移的位數(shù)是1-16;指令為32位時(shí),位移的位數(shù)是1-32;超過范圍指令將無(wú)法執(zhí)行,那么怎樣滿足實(shí)際應(yīng)用中數(shù)十甚至上百位移位數(shù)的要求呢?本文以永宏P(guān)LC[左位移指令51DP.SHFL]為例,介紹筆者對(duì)上述問題的處理方法。
首先,利用多個(gè)移位指令進(jìn)行狀態(tài)轉(zhuǎn)移,如下圖:
圖1 多個(gè)移位指令轉(zhuǎn)移
由上圖可以看出,僅僅只是將前一個(gè)移位指令的最后一位作為后一個(gè)移位指令的移入位元使用,但是如果依次使用各個(gè)狀態(tài)位,就會(huì)發(fā)現(xiàn)程序并不是按我們的需要去動(dòng)作的,原因如下
由上圖會(huì)發(fā)現(xiàn)圖中的黃色部分即前一個(gè)移位指令的最后一位與后一個(gè)移位指令的第一位狀態(tài)相同,因此在實(shí)際應(yīng)用中應(yīng)當(dāng)將兩個(gè)狀態(tài)位視為同一個(gè)狀態(tài)位,在程序中使用完前一個(gè)移位指令的最后一位緊接著使用后一個(gè)移位指令的第二位就可以達(dá)到依次移位的效果了。
|