bigluo
级别: 家园常客
精华主题: 0
发帖数量: 387 个
工控威望: 912 点
下载积分: 2724 分
在线时间: 73(小时)
注册时间: 2007-12-14
最后登录: 2021-05-15
查看bigluo的 主题 / 回贴
楼主  发表于: 2010-04-06 11:14
如附件所示。程序想实现一个看门狗,当3秒钟的计数器时间到了后,即调用子程序P0,在子程序P0里面将C0复位。
现在的问题是,附件中的程序在监视时,发现子程序是随时有效的,即C0永远处于复位状态,这是为什么?把子程序的内容放到主程序里面的话,一切正常。
请指教。。。

bigluo
级别: 家园常客
精华主题: 0
发帖数量: 387 个
工控威望: 912 点
下载积分: 2724 分
在线时间: 73(小时)
注册时间: 2007-12-14
最后登录: 2021-05-15
查看bigluo的 主题 / 回贴
1楼  发表于: 2010-04-06 11:24
用这个就没有问题:

bigluo
级别: 家园常客
精华主题: 0
发帖数量: 387 个
工控威望: 912 点
下载积分: 2724 分
在线时间: 73(小时)
注册时间: 2007-12-14
最后登录: 2021-05-15
查看bigluo的 主题 / 回贴
2楼  发表于: 2010-04-07 16:49
引用
引用第2楼wsir123于2010-04-07 15:46发表的  :
楼主的这个情况就像你叫一个人去10公里外游泳,结果,那人在河里玩的不回来了,你却还让他再去游泳,能行么?一定要让他回来,然后,再让他去。。。
不知这个比喻合适不?

谢谢了!照你的方法已经改好了。
不过,我还是不明白为什么不能在子程序里面复位?
bigluo
级别: 家园常客
精华主题: 0
发帖数量: 387 个
工控威望: 912 点
下载积分: 2724 分
在线时间: 73(小时)
注册时间: 2007-12-14
最后登录: 2021-05-15
查看bigluo的 主题 / 回贴
3楼  发表于: 2010-04-07 17:43
引用
引用第4楼wsir123于2010-04-07 17:35发表的  :

测试里那个m0其实就是一个在子程序里溜达了一圈的一个标志,这个标志要在主程序里call前对c0 操作一下。
你可以把主程序里那个m0复位的和call对调一下,那个c0就一直是处于复位状态。
所以,子程序结尾要m0标志一下(溜达了一圈的一个标志),主程序call前要根据这个标志复位一下就可以了。

谢谢指点。
在我的程序里面,在C0被置位的扫描周期,应该就会进入子程序,然后,在子程序里对C0复位,这样,下一个扫描周期时,C0就被复位了,应该就不能再进入子程序了,这样不对吗?