⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdtdog.c

📁 AVR IAR 环境下任务调度器,有优先级
💻 C
字号:
#include "INCLUDE\config.h"

/***WDT**/
__eeprom int8u code_ID[8];
__eeprom int8u WDT_ERR=0x55;






void sys_id(int8u *s)
{
  int8u buf,i;
  int8u code_buf[8];
  buf=OSCCAL;
  code_buf[0]=buf;
  code_buf[1]=~buf;
  code_buf[2]=buf^0x55;
  code_buf[3]=buf^0xaa;
  code_buf[4]=0;
  for(i=0;i<8;i++)
  {
   code_buf[4]>>=1;    
   if(buf&0x80)code_buf[4]|=0x80;
   buf<<=1;
  }
  buf=code_buf[4];
  code_buf[5]=~buf;
  code_buf[6]=buf^0x55;
  code_buf[7]=buf^0xaa;
  *s=(code_buf[0]&0x01)+(code_buf[1]&0x02)+(code_buf[2]&0x04)+(code_buf[3]&0x08)\
    +(code_buf[4]&0x10)+(code_buf[5]&0x20)+(code_buf[6]&0x40)+(code_buf[7]&0x80);
     s++;
  *s=(code_buf[1]&0x01)+(code_buf[2]&0x02)+(code_buf[3]&0x04)+(code_buf[4]&0x08)\
     +(code_buf[5]&0x10)+(code_buf[6]&0x20)+(code_buf[7]&0x40)+(code_buf[0]&0x80);
     s++;
  *s=(code_buf[2]&0x01)+(code_buf[3]&0x02)+(code_buf[4]&0x04)+(code_buf[5]&0x08)\
    +(code_buf[6]&0x10)+(code_buf[7]&0x20)+(code_buf[0]&0x40)+(code_buf[1]&0x80);
     s++;
  *s=(code_buf[3]&0x01)+(code_buf[4]&0x02)+(code_buf[5]&0x04)+(code_buf[6]&0x08)\
    +(code_buf[7]&0x10)+(code_buf[0]&0x20)+(code_buf[1]&0x40)+(code_buf[2]&0x80);
     s++;
  *s=(code_buf[4]&0x01)+(code_buf[5]&0x02)+(code_buf[6]&0x04)+(code_buf[7]&0x08)\
    +(code_buf[0]&0x10)+(code_buf[1]&0x20)+(code_buf[2]&0x40)+(code_buf[3]&0x80);
     s++;
  *s=(code_buf[5]&0x01)+(code_buf[6]&0x02)+(code_buf[7]&0x04)+(code_buf[0]&0x08)\
    +(code_buf[1]&0x10)+(code_buf[2]&0x20)+(code_buf[3]&0x40)+(code_buf[4]&0x80);
     s++;
  *s=(code_buf[6]&0x01)+(code_buf[7]&0x02)+(code_buf[0]&0x04)+(code_buf[1]&0x08)\
    +(code_buf[2]&0x10)+(code_buf[3]&0x20)+(code_buf[4]&0x40)+(code_buf[5]&0x80);
     s++;
  *s=(code_buf[7]&0x01)+(code_buf[0]&0x02)+(code_buf[1]&0x04)+(code_buf[2]&0x08)\
    +(code_buf[3]&0x10)+(code_buf[4]&0x20)+(code_buf[5]&0x40)+(code_buf[6]&0x80);
  
}

void in_code_ID(void)
{
  int8u buf[8],i;
  sys_id(&buf[0]);
  for(i=0;i<8;i++)
  {
    code_ID[i]=buf[i];
  }
  
}


void test_ID(void)
{
  int8u buf[8],i;

  sys_id(&buf[0]);
  for(i=0;i<8;i++)
  {
    if(buf[i]!=code_ID[i])
    {
      if(WDT_ERR!=0xaa)WDT_ERR=0xaa;
    }
  }
}


void system_test(void)
{
  static int16u time_WDT;
  static int8u fi;
/*  if((sys_fi&0x20)&&(fi==0)){TCCR0B|=0x02;fi=1;}
  if((sys_fi&0x20)==0)fi=0;
  if(++time_WDT>300)
  {
    if(K_WDT==0)
    {
     if(time_WDT>400)                          //自动检测ID代码
     {            
      in_code_ID(); 
      time_WDT=0;
     }
    }
    else 
    {
      test_ID();
      time_WDT=0;
      if(WDT_ERR==0xaa)
      {
      //OS_Clear();
     //power_out=OFF;
      }
    }
    
  }*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -