永发信息网

请问如何延长AT89S51单片机的喂狗时间?

答案:3  悬赏:40  手机版
解决时间 2021-03-04 15:22
  • 提问者网友:谁的错
  • 2021-03-03 18:42
1. 89S51的看门狗必须由程序激活后才开始工作。所以必须保证CPU有可靠的上电复位。否则看门狗也无法工作。
2. 看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。
3. 89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次。
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
在哪个地方要加入这个喂狗指令?如何才能保证我16毫秒喂一次?
有没有什么办法可以延长喂狗时间?

如果在定时中断程序中加入看门狗,要是主循环跳飞了,而中断程序还在正常运行,那看门狗就失去意义了?
最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-03-03 20:22
可以做一个比16ms时间短的定时器中断,在中断里面喂看门狗.
同时在主循环体里面加一句喂看门狗.
若有死循环延时子程序,里面也在适当的时间加一句.

有些系列的51有看门狗预分频器,可以延长喂狗时间,89s51好象不行.
关于中断加了 为什么主程序还需要加?
因为主程序可能会有些地方有很高实时性要求的需要屏蔽中断.那时候就不中断了.

我一直都是在中断中加,没什么问题.不管加在哪里都有可能只有带喂狗语句的循环正常而其他程序不正常的可能性发生.
全部回答
  • 1楼网友:洒脱疯子
  • 2021-03-03 21:20

这样就可以了

  • 2楼网友:执傲
  • 2021-03-03 21:11
在主程序中多加几个地方就行了.最好不要在中断中加,这样,程序死在中断中了怎么办.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯