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
用这个就没有问题:

wsir123
日子在忙碌中才会显得充实,我喜欢这样的生活。
级别: 论坛版主

精华主题: 4 篇
发帖数量: 1504 个
工控威望: 5491 点
下载积分: 24426 分
在线时间: 818(小时)
注册时间: 2007-01-22
最后登录: 2024-06-09
查看wsir123的 主题 / 回贴
2楼  发表于: 2010-04-07 15:46
图片:
楼主的这个情况就像你叫一个人去10公里外游泳,结果,那人在河里玩的不回来了,你却还让他再去游泳,能行么?一定要让他回来,然后,再让他去。。。
不知这个比喻合适不?
附件: 测试.rar (10 K) 下载次数:45
网站提示: 请不要用迅雷下载附件,容易出错
本帖最近评分记录:
  • 下载积分:+3(bigluo) 谢谢!
  • 保持每天一点小进步足矣。。。
    bigluo
    级别: 家园常客
    精华主题: 0
    发帖数量: 387 个
    工控威望: 912 点
    下载积分: 2724 分
    在线时间: 73(小时)
    注册时间: 2007-12-14
    最后登录: 2021-05-15
    查看bigluo的 主题 / 回贴
    3楼  发表于: 2010-04-07 16:49
    引用
    引用第2楼wsir123于2010-04-07 15:46发表的  :
    楼主的这个情况就像你叫一个人去10公里外游泳,结果,那人在河里玩的不回来了,你却还让他再去游泳,能行么?一定要让他回来,然后,再让他去。。。
    不知这个比喻合适不?

    谢谢了!照你的方法已经改好了。
    不过,我还是不明白为什么不能在子程序里面复位?
    wsir123
    日子在忙碌中才会显得充实,我喜欢这样的生活。
    级别: 论坛版主

    精华主题: 4 篇
    发帖数量: 1504 个
    工控威望: 5491 点
    下载积分: 24426 分
    在线时间: 818(小时)
    注册时间: 2007-01-22
    最后登录: 2024-06-09
    查看wsir123的 主题 / 回贴
    4楼  发表于: 2010-04-07 17:35
    引用
    引用第3楼bigluo于2010-04-07 16:49发表的  :

    谢谢了!照你的方法已经改好了。
    不过,我还是不明白为什么不能在子程序里面复位?

    测试里那个m0其实就是一个在子程序里溜达了一圈的一个标志,这个标志要在主程序里call前对c0 操作一下。
    你可以把主程序里那个m0复位的和call对调一下,那个c0就一直是处于复位状态。
    所以,子程序结尾要m0标志一下(溜达了一圈的一个标志),主程序call前要根据这个标志复位一下就可以了。
    保持每天一点小进步足矣。。。
    bigluo
    级别: 家园常客
    精华主题: 0
    发帖数量: 387 个
    工控威望: 912 点
    下载积分: 2724 分
    在线时间: 73(小时)
    注册时间: 2007-12-14
    最后登录: 2021-05-15
    查看bigluo的 主题 / 回贴
    5楼  发表于: 2010-04-07 17:43
    引用
    引用第4楼wsir123于2010-04-07 17:35发表的  :

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

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