看到三菱論壇里有網(wǎng)友發(fā)貼求助<寄存器不能清零,求助 >,大意是數(shù)據(jù)寄器在使用一段時間后會出現(xiàn)不能清零現(xiàn)象。換地址也不可以。為此將程序上傳請求幫助。
我打開程序查找該數(shù)據(jù)寄存器地址,第一地址為計數(shù)器賦值,采用加一指令,程序指令如下:ANDD< D62 K999999999 / DINCP D660
另一個清零指令 LD T66 MOVP K0 D660 / RST D660
上面的程序來看,是看不出多少問題,后面的RTS指令我估計是樓主沒辦法的情況下加上去,但是就這樣也是不能清零。
我發(fā)現(xiàn)一個問題就是:前面加一信號用了32位,這說明數(shù)據(jù)很大,應(yīng)該是大于32767.而后面清零指令只用了16位。也就是說清零只能清除16以下,大于32767的數(shù)據(jù)將不能清零。
為了證實(shí)我的想法。進(jìn)行模擬仿真。將D660賦值大于32767.為了調(diào)方便,做了一點(diǎn)小更改:LDP X0 DMOV K45000 D660 / LD X1 MOVP K0 D660
按上述程序調(diào)試并清零,當(dāng)數(shù)據(jù)小于32767以下,也就是16位數(shù)據(jù)位程序能清零,當(dāng)把45000傳進(jìn)去以后,程序不能清零,且數(shù)據(jù)變?yōu)樨?fù)值。這就證實(shí)我了是論證,于是將清零程序改寫為32位 LD X1 DMOVP K0 D660
再進(jìn)行清零動作,OK
在程序編寫的時候,一定要注意32位和16位的區(qū)別,當(dāng)賦值大于32位時,清零同樣也要用32.否則只能清除16位以下數(shù)據(jù)。










