打印

单片机看门狗

[复制链接]
1258|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
man16181|  楼主 | 2008-8-27 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在单片机系统中,我们经常用硬狗复位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)
                   {
                       /*      实际的程序代码  */
                   } 

          }

 [NextPage]

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


还需要在else中重新初始化 
本**来自中国IT实验室http://embed.chinaitlab.com/

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

20

帖子

0

粉丝