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