找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1906|回复: 3
打印 上一主题 下一主题
收起左侧

89S系列单片机的WDT不可靠,我自制个有效的片外看门狗

[复制链接]
跳转到指定楼层
楼主
本帖最后由 Kxuan163 于 2020-12-18 23:06 编辑

一、制作因由:
    笔者开发了一个以AT89s52为MCU的家电控制系统。
    在未有看门狗之前,控制系统受到来自所控对象电路通/断或电网波动之类的干扰,时有程序指针跑飞的死机异常。
为保障控制系统工作可靠稳定,决定使用看门狗(Watchdog)。
    起初,试用AT89s52片内的看门狗WDT, 实践中发现WDT不可靠----当晶振受干扰而停振时,WDT失效。
决定改用抗干扰能力较强的片外看门狗。有行家提及,可选用片外狗芯片MAX708、MAX813、X25045.....
笔者手头上无该类芯片实物及资料。于是自行设计制作了本文所述的片外看门狗。
    半年多以来的使用实践表明,笔者自制的这个片外看门狗有效、实用。


二、基本工作原理:
(1)在单片机程序正常运行状态:
每隔t0时间,T0中断服务程序"喂狗"一次,使它暂不"犬吠"
t0≈65毫秒,由T0初始化程序设置定(请参阅下述的程序块代码 )。
所谓"喂狗",就是由单片机PO.3引脚输出低电平信号,送至片外狗电路的U3_2脚,使狗不"犬吠"。
("喂狗"的实际细节请参阅下述的流程图)
(2)因外界干扰导致程序指针跑飞或晶振停振,不能定时喂狗:
若停止喂狗时间长达td(≈6秒),则狗"犬吠",使单片机复位,复位后恢复平定时喂狗功能。
所谓"犬吠",就是由J5_3脚输出高电平信号送至单片机RST引脚(细节请参阅下述的流程图)。
td时间长短取决于R3阻值与C2电容值的乘积,即RC充放电时间常数。

三、片外看门狗电路图:



四、片外看门狗工作流程图:



五、89s52单片机与喂狗相关的程序块:
;;--------------------------------------------
         ORG   000BH      ;定时器T0中断处理入口地址
         AJMP   T0_INT
;;--------------------------------------------
;;
;;
;;--------------------------------------------
SET_T0:   ;; T0初始化,
          ;; 定时65ms的计数值 =65000μs/1μs =65000
          ;; 方式1,16位计数器,计数值 =65536-65000 =536 =218H
         MOV   TMOD, #01H    ;; T0定时模式.方式1(16位计数器)
         MOV   TH0,  #02H    ;; 装入计数初值高字节
         MOV   TL0,  #18H    ;; 装入计数初值低字节
         SETB  TR0           ;; 启动T0
         SETB  ET0           ;; 允许T0中断
         SETB  EA            ;; MPU开中断
         RET
;;-------------------------------------------  
;;
;;
;;-------------------------------------------  
T0_INT:     ;; T0定时中断处理程序,每隔65ms喂狗一次  
         CLR   P0.3          ;; 89s52的P0.3引脚输出低电平
         MOV   TH0,  #02H    ;; 重装计数初值高字节
         MOV   TL0,  #18H    ;; 重装计数初值低字节
         RETI
;;--------------------------------------------  



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:807591 发表于 2020-12-12 10:47 | 只看该作者
ST的 sot23的狗 1块钱一个
回复

使用道具 举报

板凳
ID:858964 发表于 2020-12-12 14:31 | 只看该作者
szb314 发表于 2020-12-12 10:47
ST的 sot23的狗 1块钱一个

谢谢提供信息。
回复

使用道具 举报

地板
ID:858964 发表于 2022-9-2 16:20 | 只看该作者
我网购得DS1232芯片(¥0.92/片)重新制作看门狗。
.
仿真图如下:



代码如下:
#include<reg51.h>
#include <intrins.h>
#define FLUX

sbit P2_7=P2^7;         

void delayms(unsigned char ms) // 延时ms函数
{                                               
        unsigned char i;
        while(ms--)
        {
                for(i = 0; i < 120; i++);
        }
}

void main()
{

        int x, LED ;

        LED = 0x55; // 奇数灯亮
        P0 = LED;
        delayms(150);

        LED = 0xAA;         // 偶数灯亮
        P0 = LED;
        delayms(150);                               

//   LED =0xff;         // 全灭
//   P0 = LED;

   while(1)
    {
     FLUX
          LED = 0xfe;
          P0 = LED;
      P2_7 =0;
          for(x =1; x<=8; x++)
           {
            delayms(125);
                P2_7 =  ! P2_7;      //P2.7脚电平反转,作喂狗信号
                LED = _crol_(LED,1); //循环右移1位,点亮下一个LED
            P0 = LED;
           }
        }  

}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表