bigluo
級別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 387 個
工控威望: 912 點(diǎn)
下載積分: 2724 分
在線時(shí)間: 73(小時(shí))
注冊時(shí)間: 2007-12-14
最后登錄: 2021-05-15
查看bigluo的 主題 / 回貼
樓主  發(fā)表于: 2010-04-06 11:14
如附件所示。程序想實(shí)現(xiàn)一個看門狗,當(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)容放到主程序里面的話,一切正常。
請指教。。。

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

wsir123
日子在忙碌中才會顯得充實(shí),我喜歡這樣的生活。
級別: 論壇版主

精華主題: 4 篇
發(fā)帖數(shù)量: 1504 個
工控威望: 5491 點(diǎn)
下載積分: 24426 分
在線時(shí)間: 818(小時(shí))
注冊時(shí)間: 2007-01-22
最后登錄: 2024-06-09
查看wsir123的 主題 / 回貼
2樓  發(fā)表于: 2010-04-07 15:46
圖片:
樓主的這個情況就像你叫一個人去10公里外游泳,結(jié)果,那人在河里玩的不回來了,你卻還讓他再去游泳,能行么?一定要讓他回來,然后,再讓他去。。。
不知這個比喻合適不?
附件: 測試.rar (10 K) 下載次數(shù):45
網(wǎng)站提示: 請不要用迅雷下載附件,容易出錯
本帖最近評分記錄:
  • 下載積分:+3(bigluo) 謝謝!
  • 保持每天一點(diǎn)小進(jìn)步足矣。。。
    bigluo
    級別: 家園?
    精華主題: 0
    發(fā)帖數(shù)量: 387 個
    工控威望: 912 點(diǎn)
    下載積分: 2724 分
    在線時(shí)間: 73(小時(shí))
    注冊時(shí)間: 2007-12-14
    最后登錄: 2021-05-15
    查看bigluo的 主題 / 回貼
    3樓  發(fā)表于: 2010-04-07 16:49
    引用
    引用第2樓wsir123于2010-04-07 15:46發(fā)表的  :
    樓主的這個情況就像你叫一個人去10公里外游泳,結(jié)果,那人在河里玩的不回來了,你卻還讓他再去游泳,能行么?一定要讓他回來,然后,再讓他去。。。
    不知這個比喻合適不?

    謝謝了!照你的方法已經(jīng)改好了。
    不過,我還是不明白為什么不能在子程序里面復(fù)位?
    wsir123
    日子在忙碌中才會顯得充實(shí),我喜歡這樣的生活。
    級別: 論壇版主

    精華主題: 4 篇
    發(fā)帖數(shù)量: 1504 個
    工控威望: 5491 點(diǎn)
    下載積分: 24426 分
    在線時(shí)間: 818(小時(shí))
    注冊時(shí)間: 2007-01-22
    最后登錄: 2024-06-09
    查看wsir123的 主題 / 回貼
    4樓  發(fā)表于: 2010-04-07 17:35
    引用
    引用第3樓bigluo于2010-04-07 16:49發(fā)表的  :

    謝謝了!照你的方法已經(jīng)改好了。
    不過,我還是不明白為什么不能在子程序里面復(fù)位?

    測試?yán)锬莻m0其實(shí)就是一個在子程序里溜達(dá)了一圈的一個標(biāo)志,這個標(biāo)志要在主程序里call前對c0 操作一下。
    你可以把主程序里那個m0復(fù)位的和call對調(diào)一下,那個c0就一直是處于復(fù)位狀態(tài)。
    所以,子程序結(jié)尾要m0標(biāo)志一下(溜達(dá)了一圈的一個標(biāo)志),主程序call前要根據(jù)這個標(biāo)志復(fù)位一下就可以了。
    保持每天一點(diǎn)小進(jìn)步足矣。。。
    bigluo
    級別: 家園?
    精華主題: 0
    發(fā)帖數(shù)量: 387 個
    工控威望: 912 點(diǎn)
    下載積分: 2724 分
    在線時(shí)間: 73(小時(shí))
    注冊時(shí)間: 2007-12-14
    最后登錄: 2021-05-15
    查看bigluo的 主題 / 回貼
    5樓  發(fā)表于: 2010-04-07 17:43
    引用
    引用第4樓wsir123于2010-04-07 17:35發(fā)表的  :

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

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