您的位置:首页技术文栏综合技术
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

单片机看门狗

[日期:2008-08-04 ] [来源:net 作者:佚名] [字体: (投递新闻)

 在单片机系统中 , 我们经常用硬狗复位MCU。程序经常这样写:

data unsigned char bootflag;

if(bootflag!=0xaa)
   {
        /*      冷启动代码      */
   }
else
   {
        /*      热启动代码      */
   }

  最近做了一个东东,发现即使系统冷启动,bootflag仍为0xaa。
所以希望各位兄第做东西时,如果用到硬狗,程序中至少要用2个启动检查变量,来查看
是冷启动,还是热复位。
  如果程序的RAM比较紧张,或者你就想用一个字节变量做标志,可以在else中这样写:
else
   {
        /*      根据系统用到的变量在运行时的值初始化系统        */
       if(run_var==VAR_DEF_1)
           {
                /*      初始化1 */
           }
       else if(run_var==VAR_DEF_2)
           {
                /*      初始化2 */
           }
       else
           {
                bootflag=0x55;
                soft_dog();
           }
        while(1)
            {
                /*      实际的程序代码  */
            }

   }

需要注意的是,单片机被硬狗复位后,外部端口和SFR将还原成默认状态。所以有些SFR
还需要在else中重新初始化。

 

阅读:
录入:面面

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告