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

📄 sys_check.c

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

__eeprom int8u SYSID[8] @0x10;
__eeprom int8u SYSFI @0x08;



void check(int8u id,int8u *s)
{
  int8u i,j,k;
  int8u buf[8];
  buf[0]=id;
  buf[1]=~id;
  buf[2]=id^0x55;
  buf[3]=id^0xFF;
  for(i=0;i<8;i++)
  {
    j>>=1;
    if(id&0x80)j|=0x80;
    id<<=1;
  }
  id=j;
  buf[4]=id;
  buf[5]=~id;
  buf[6]=id^0x55;
  buf[7]=id^0xFF;  
  for(i=0;i<8;i++)
  {
    *(s+i)=0;
  }
  for(i=0;i<8;i++)
   {
     for(j=0;j<8;j++)
     {
      id=(i+j)&0x07;
      if(j==0)k=0x01;
      else k<<=1;
      *(s+i)|=(buf[id]&k);
     }
   }
}

int8u id_fc(int8u *s)
{
  int8u i,da=0;
  for(i=0;i<8;i++)
  {
    if(*(s+i)!=SYSID[i])da=1;
  }
  return da;
}



void sys_ch(void)
{
  int8u a,id_buf[8];
  check(OSCCAL,&id_buf[0]);
    a=id_fc(&id_buf[0]);  
  if(SYSKK)
  {
  if(a)SYSFI=0xAA;  
  }
   else
   {
     for(a=0;a<8;a++)
     {
       SYSID[a]=id_buf[a];
     }
   }
  
}

⌨️ 快捷键说明

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