打印
[51单片机]

看门狗是如何工作的,是否可以定时,如何定时,谢谢

[复制链接]
919|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小盼abc|  楼主 | 2014-10-29 14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小盼abc 于 2014-10-29 19:03 编辑

具体芯片是at89s52
#include<reg52.h>
sfr  WDTRST  =   0xA6;                                 
sbit key = P3^1;                 
/*------------------------------------------------
                    喂狗
------------------------------------------------*/
void Rst_Watchdog( void )
{
        WDTRST  = 0x1E; //先赋值1E 然后赋值E1
    WDTRST  = 0xE1;
}

/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main( void )
{
        int i;
                                   
        Rst_Watchdog();
                                       
        for( i = 0; i < 500; i++)//这里的这个循环有什么用,如果喂狗的话这样好像意义不大
        {
                Rst_Watchdog();               
        }
    P1=0x00;
        while(!key)               
                                
        {
         P1=0x55;                        
                              
        }
}其次,我发现,如果上面的key如果不按的话,看门狗复位会从main开头开始运行,但是如果按下的话,复位后会从while循环开始,那个可以解释下

相关帖子

沙发
ningling_21| | 2014-10-29 14:21 | 只看该作者
仔细看看芯片资料

使用特权

评论回复
板凳
NE5532| | 2014-10-29 14:58 | 只看该作者
http://baike.baidu.com/subview/2 ... htm#viewPageContent

楼主可以先看百度的基本原理,然后看数据手册,然后再有疑难,再来问。

使用特权

评论回复
地板
小盼abc|  楼主 | 2014-10-29 19:02 | 只看该作者
NE5532 发表于 2014-10-29 14:58
http://baike.baidu.com/subview/280158/10934488.htm#viewPageContent

楼主可以先看百度的基本原理,然后 ...

谢谢,看过了,也有了基本了解,但是还有些问题
#include<reg52.h>
sfr  WDTRST  =   0xA6;                                
sbit key = P3^1;                 
/*------------------------------------------------
                    喂狗
------------------------------------------------*/
void Rst_Watchdog( void )
{
        WDTRST  = 0x1E; //先赋值1E 然后赋值E1
    WDTRST  = 0xE1;
}

/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main( void )
{
        int i;
                                  
        Rst_Watchdog();
                                        
        for( i = 0; i < 500; i++)//这里的这个循环有什么用,如果喂狗的话这样好像意义不大
        {
                Rst_Watchdog();               
        }
    P1=0x00;
        while(!key)               
                                
        {
         P1=0x55;                       
                              
        }
}其次,我发现,如果上面的key如果不按的话,看门狗复位会从main开头开始运行,但是如果按下的话,复位后会从while循环开始,那个可以解释下

使用特权

评论回复
5
NE5532| | 2014-10-29 20:47 | 只看该作者
这个程序应该有问题吧,main里面连个主循环都没有,怎么运行啊?喂狗就是应该在主循环里喂的。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
小盼abc + 1 赞一个!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

86

帖子

0

粉丝