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

📄 carddeal.c

📁 采用430单片机完成的门禁控制器程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    }
  }
  return 2;
}
/***************************************************/
/*********更改权限**********************************/
/***************************************************/
void changevip()
{
  ulong i;
  uchar buf;
  for(i=0; i<nvip*5; i++)
  {
    if(i == addrbuf)
    {
      write040pre();
      write040((i+0x70000),card_buf[4]);
    }
    else
    {
      buf = read040(i);
      write040pre();
      write040((i+0x70000),buf);
    }
  }
  for(i=0x2000; i<(0x2000+nnom*5); i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x4000; i<(0x4000+nyvip*5); i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x6000; i<(0x6000+nynom*5); i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x8000; i<0x8050; i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x9000; i<0x9348; i++)
  {
    buf =  read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  erasesector040(0x0000);
  
  for(i=0; i<nvip*5; i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x2000; i<(0x2000+nnom*5); i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x4000; i<(0x4000+nyvip*5); i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x6000; i<(0x6000+nynom*5); i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x8000; i<0x8050; i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x9000; i<0x9348; i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  FLAG1 |= gb_era7;
}
/***************************************************/
/****增加正式卡号***********************************/
/***************************************************/
void card_addvip()
{
  if(FLAG & gb_addvip)
  {
    uchar i;
    ulong addr39;
    FLAG &= ~gb_addvip;
    if(nvip < 500)
    {
      i = cardexist(0x0000, nvip);
      if(i == 0)
      {
        set_par_re();
      }
      else if(i == 1)
      {
        set_par_re();
        FLAG |= gb_tx;
        uart0_tx();
        changevip();
      }
      else if(i == 2)
      {
        addr39 = nvip*5;
        for(i=0; i<5; i++)
        {
          write040pre();
          write040(addr39,card_buf[i]);
          addr39++;
        }
        set_par_re();
        nvip++;
        FLAG1 |= gb_flashw;
      }
    }
    else
    {
      set_tx();
      TX_DATA[7] = 0X45;
      TX_DATA[8] = 0X32;
      TX_DATA[9] = 0X30;
      TX_DATA[10] = 0X30;
      TX_DATA[11] = 0X30;
      TX_DATA[12] = 0X30;
      TX_DATA[13] = 0X46;
      TX_DATA[14] = 0X44;
      TX_DATA[15] = 0X39;
      TX_DATA[16] = 0X46;
      TX_DATA[17] = 0X0D;
      tx_len = 18;
      FLAG |= gb_tx;
    }
  }
}
/************************************************************/
/****增加巡更卡号********************************************/
/************************************************************/
void card_addnom()
{
  if(FLAG & gb_addnom)
  {
    FLAG &= ~gb_addnom;
    uchar i;
    ulong addr39;
    if(nnom < 500)
    {
      i = cardexist(0x2000, nnom);
      if(i == 2)
      {
        addr39 = 0x2000+nnom*5;
        for(i=0; i<5; i++)
        {
          write040pre();
          write040(addr39,card_buf[i]);
          addr39++;
        }
        nnom++;
        FLAG1 |= gb_flashw;
      }
      set_par_re();
    }
    else
    {
      set_tx();
      TX_DATA[7] = 0X45;
      TX_DATA[8] = 0X32;
      TX_DATA[9] = 0X30;
      TX_DATA[10] = 0X30;
      TX_DATA[11] = 0X30;
      TX_DATA[12] = 0X30;
      TX_DATA[13] = 0X46;
      TX_DATA[14] = 0X44;
      TX_DATA[15] = 0X39;
      TX_DATA[16] = 0X46;
      TX_DATA[17] = 0X0D;
      tx_len = 18;
      FLAG |= gb_tx;
    }
  }
}
/**************************************************/
/***********删除卡号处理程序***********************/
/**************************************************/
void deldeal()
{
  ulong addr39;
  uchar buf;
  for(addr39=0; addr39<nvip*5; addr39++)
  {
    if(addr39 >= (addrbuf-4))
    {
      buf = read040(addr39+5);      
    }
    else
    {
      buf = read040(addr39);      
    }    
    write040pre();
    write040((addr39+0x70000),buf);
  }
  for(addr39=0x2000; addr39<(0x2000+nnom*5); addr39++)
  {
    if(addr39 >= (addrbuf-4))
    {
      buf = read040(addr39+5);      
    }
    else
    {
      buf = read040(addr39);      
    }    
    write040pre();
    write040((addr39+0x70000),buf);
  }
  for(addr39=0x8000; addr39<0x8050; addr39++)
  {
    buf = read040(addr39);
    write040pre();
    write040((addr39+0x70000),buf);
  }
  for(addr39=0x9000; addr39<0x9348; addr39++)
  {
    buf = read040(addr39);
    write040pre();
    write040((addr39+0x70000),buf);
  }
  erasesector040(0x0000);
  for(addr39=0; addr39<nvip*5; addr39++)
  {
    buf = read040(addr39+0x70000);
    write040pre();
    write040(addr39,buf);
  }
  for(addr39=0x2000; addr39<(0x2000+nnom*5); addr39++)
  {
    buf = read040(addr39+0x70000);
    write040pre();
    write040(addr39,buf);
  }
  for(addr39=0x8000; addr39<0x8050; addr39++)
  {
    buf = read040(addr39+0x70000);
    write040pre();
    write040(addr39,buf);
  }
  for(addr39=0x9000; addr39<0x9348; addr39++)
  {
    buf = read040(addr39+0x70000);
    write040pre();
    write040(addr39,buf);
  }
  FLAG1 |= gb_era7;
}
/**************************************************/
/****删除卡号处理程序******************************/
/**************************************************/
void card_delvip()
{
  if(FLAG & gb_delvip)
  {
    FLAG &= ~gb_delvip;
    uchar i;    
    i = cardexist(0x0000, nvip);
    if(i == 2)
    {
      i = cardexist(0x2000, nvip);
      if(i == 2)
      {
        set_par_re();
      }
      else 
      {
        nnom--;
        FLAG1 |= gb_flashw;
        set_par_re();
        FLAG |= gb_tx;
        uart0_tx();
        deldeal();
      }
    }
    else
    {
      nvip--;
      FLAG1 |= gb_flashw;
      set_par_re();
      FLAG |= gb_tx;
      uart0_tx();
      deldeal();      
    }
  }
}
/**************************************************/
/****删除所有卡号**********************************/
/**************************************************/
void card_delnom()
{
  if(FLAG & gb_delnom)
  {
    FLAG &= ~gb_delnom;
    ulong i;
    uchar buf;
    for(i=0x8000; i<0x8050; i++)
    {
      buf = read040(i);
      write040pre();
      write040((i+0x70000),buf);
    }
    for(i=0x9000; i<0x9348; i++)
    {
      buf =  read040(i);
      write040pre();
      write040((i+0x70000),buf);
    }
    erasesector040(0x0000);
    for(i=0x8000; i<0x8050; i++)
    {
      buf = read040(i+0x70000);
      write040pre();
      write040(i,buf);
    }
    for(i=0x9000; i<0x9348; i++)
    {
      buf = read040(i+0x70000);
      write040pre();
      write040(i,buf);
    }
    nvip = 0;
    nnom = 0;    
    FLAG1 |= gb_flashw;
    FLAG1 |= gb_era7;
  }
}
/******************************************************/
/********更改遥控器正式卡权限**************************/
/******************************************************/
void changeyvip()
{
  ulong i;
  uchar buf;
  for(i=0; i<nvip*5; i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x2000; i<(0x2000+nnom*5); i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x4000; i<(0x4000+nyvip*5); i++)
  {
   if(i == addrbuf)
    {
      write040pre();
      write040((i+0x70000),card_buf[4]);
    }
    else
    {
      buf = read040(i);
      write040pre();
      write040((i+0x70000),buf);
    }
  }
  for(i=0x6000; i<(0x6000+nynom*5); i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x8000; i<0x8050; i++)
  {
    buf = read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  for(i=0x9000; i<0x9348; i++)
  {
    buf =  read040(i);
    write040pre();
    write040((i+0x70000),buf);
  }
  erasesector040(0x0000);
  
  for(i=0; i<nvip*5; i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x2000; i<(0x2000+nnom*5); i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x4000; i<(0x4000+nyvip*5); i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x6000; i<(0x6000+nynom*5); i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x8000; i<0x8050; i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  
  for(i=0x9000; i<0x9348; i++)
  {
    buf = read040(i+0x70000);
    write040pre();
    write040(i,buf);
  }
  FLAG1 |= gb_era7;
}
/*****************************************************/
/********增加遙控器正式卡號***************************/
/****储存的地址为 0x4000-0x6000***********************/
/*****************************************************/
void card_addyvip()
{
  if(FLAG2 & gb_addyvip)
  {
    uchar i;
    ulong addr39;
    FLAG2 &= ~gb_addyvip;
    if(nyvip < 500)
    {
      i = cardexist(0x4000, nyvip);
      if(i == 0)
      {
        set_par_re();
      }
      else if(i == 1)
      {
        set_par_re();
        FLAG |= gb_tx;
        uart0_tx();
        changeyvip();
      }
      else if(i == 2)
      {
        addr39 = (0x4000+nyvip*5);
        for(i=0; i<5; i++)
        {
          write040pre();
          write040(addr39,card_buf[i]);
          addr39++;
        }
        set_par_re();
        nyvip++;
        FLAG1 |= gb_flashw;
      }
    }
  }
}
/*****************************************************/
/********增加遙控器巡更卡號***************************/
/****储存的地址为 0x6000-0x8000***********************/
/*****************************************************/
void card_addynom()
{
  if(FLAG2 & gb_addynom)
  {
    FLAG2 &= ~gb_addynom;
    uchar i;
    ulong addr39;
    if(nynom < 500)
    {
      i = cardexist(0x6000, nynom);
      if(i == 2)
      {
        addr39 = 0x6000+nynom*5;
        for(i=0; i<5; i++)
        {
          write040pre();
          write040(addr39,card_buf[i]);
          addr39++;
        }
        nynom++;
        FLAG1 |= gb_flashw;
      }
      set_par_re();
    }
  }
}

⌨️ 快捷键说明

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