bigluo
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 387 個(gè)
工控威望: 912 點(diǎn)
下載積分: 2724 分
在線時(shí)間: 73(小時(shí))
注冊(cè)時(shí)間: 2007-12-14
最后登錄: 2021-05-15
查看bigluo的 主題 / 回貼
樓主  發(fā)表于: 2010-04-06 11:14
如附件所示。程序想實(shí)現(xiàn)一個(gè)看門狗,當(dāng)3秒鐘的計(jì)數(shù)器時(shí)間到了后,即調(diào)用子程序P0,在子程序P0里面將C0復(fù)位。
現(xiàn)在的問題是,附件中的程序在監(jiān)視時(shí),發(fā)現(xiàn)子程序是隨時(shí)有效的,即C0永遠(yuǎn)處于復(fù)位狀態(tài),這是為什么?把子程序的內(nèi)容放到主程序里面的話,一切正常。
請(qǐng)指教。。。

bigluo
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 387 個(gè)
工控威望: 912 點(diǎn)
下載積分: 2724 分
在線時(shí)間: 73(小時(shí))
注冊(cè)時(shí)間: 2007-12-14
最后登錄: 2021-05-15
查看bigluo的 主題 / 回貼
1樓  發(fā)表于: 2010-04-06 11:24
用這個(gè)就沒有問題:

bigluo
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 387 個(gè)
工控威望: 912 點(diǎn)
下載積分: 2724 分
在線時(shí)間: 73(小時(shí))
注冊(cè)時(shí)間: 2007-12-14
最后登錄: 2021-05-15
查看bigluo的 主題 / 回貼
2樓  發(fā)表于: 2010-04-07 16:49
引用
引用第2樓wsir123于2010-04-07 15:46發(fā)表的  :
樓主的這個(gè)情況就像你叫一個(gè)人去10公里外游泳,結(jié)果,那人在河里玩的不回來了,你卻還讓他再去游泳,能行么?一定要讓他回來,然后,再讓他去。。。
不知這個(gè)比喻合適不?

謝謝了!照你的方法已經(jīng)改好了。
不過,我還是不明白為什么不能在子程序里面復(fù)位?
bigluo
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 387 個(gè)
工控威望: 912 點(diǎn)
下載積分: 2724 分
在線時(shí)間: 73(小時(shí))
注冊(cè)時(shí)間: 2007-12-14
最后登錄: 2021-05-15
查看bigluo的 主題 / 回貼
3樓  發(fā)表于: 2010-04-07 17:43
引用
引用第4樓wsir123于2010-04-07 17:35發(fā)表的  :

測試?yán)锬莻(gè)m0其實(shí)就是一個(gè)在子程序里溜達(dá)了一圈的一個(gè)標(biāo)志,這個(gè)標(biāo)志要在主程序里call前對(duì)c0 操作一下。
你可以把主程序里那個(gè)m0復(fù)位的和call對(duì)調(diào)一下,那個(gè)c0就一直是處于復(fù)位狀態(tài)。
所以,子程序結(jié)尾要m0標(biāo)志一下(溜達(dá)了一圈的一個(gè)標(biāo)志),主程序call前要根據(jù)這個(gè)標(biāo)志復(fù)位一下就可以了。

謝謝指點(diǎn)。
在我的程序里面,在C0被置位的掃描周期,應(yīng)該就會(huì)進(jìn)入子程序,然后,在子程序里對(duì)C0復(fù)位,這樣,下一個(gè)掃描周期時(shí),C0就被復(fù)位了,應(yīng)該就不能再進(jìn)入子程序了,這樣不對(duì)嗎?