📄 wdtdog.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 + -