您好,欢迎访问上海现易电子元器件有限公司网站!

021-51870898
021-51870898   18019251567
4新闻资讯
您的位置: 首页 ->  新闻资讯 -> 单片机

​AVR 看门狗使用

文章出处:单片机 责任编辑:上海现易电子元器件有限公司 发表时间:2020-11-10

    //观察喂狗与不喂狗的区别,使用PB口的LED指示灯做状态指示。

    //将PB口的LED指示灯使能开关切换到"ON"状态。

    #include


    #define DISP_DDR DDRB

    #define DISP_PORT PORTB

    //看门狗WDT初始化程序

    void wdt_init(void)

    {

        asm("wdr");   //clr wdt

        WDTCR=0x0F;   //enable wdt,clk = 2048,2.1S

    }

    void main(void)

    {

        uint8 i;


        DISP_DDR = 0XFF;

        wdt_init();


        while(1)

        {

            DISP_PORT++;    //数据显示向上加,作AVR正常运行的指示

            asm("wdr");    //喂狗,去除此句将导致狗饿死,AVR复位

            delay50ms(20);

        }

    }

    void WDT_off(void)

    {

        asm("cli");

        asm("wdr");   //复位看门狗,即喂狗

        /* Clear WDRF in MCUSR */

        MCUSR &= ~(1<

        /* 置位 WDTOE  和 WDE*/

        WDTCR |= (1<

        /* 关闭 WDT */

        WDTCR = 0x00;

    }

     void WATCHDOG_Feed()

     {

         asm("wdr");   //复位看门狗,即喂狗

     }

//在AVR的运行程序中设置让PB显示端口自加。若AVR正常工作,

//及时喂狗,则单片机设置的显示端口正常自加。

//去除语句:asm("wdr");单片机不断复位,程序得不到允许,自加数据没有显示往上加。


初始化,然后喂狗,喂狗要在看门狗咬人之前,(复位之前喂狗) 
注:清狗指令不能放定时器中断里,因此不管程序飞跑到哪里, 
执行哪里,中断产生后都会执行中断函数, 
所以在定时器里的清狗指令会使WDT起不到作用(失效)。

上海现易电子元器件有限公司 版权所有 未经授权禁止复制或镜像

CopyRight 2020-2025 www.xy777.net All rights reserved   沪ICP备2020031792号

友情链接:

电话

易经理

18019251567

微信

易经理

易经理

顶部

咨询