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

📄 system.c

📁 一体化锁主程序
💻 C
📖 第 1 页 / 共 5 页
字号:
          {
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(18);
          }
          else if(DataBuf[2] == 0xF3)      //设定统感应卡编号的获取方法
          {
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(18);
          }
          else if(DataBuf[2] == 0xF4)      //启用或关闭ES5000键盘<ENT>开门许可
          {
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(18);
          }
          else if(DataBuf[2] == 0xF8)      //启用或关闭 "手动开门按键"输入
          {
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(18);
          }
          else if(DataBuf[2] == 0xFC)      //设定控制器的第二控制字 联动及报警输出特性
          {
             col_flag2 = (DataBuf[4]<<4) + DataBuf[5];
             AT24C128_write(0x0C,&col_flag2,1);
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(18);
          }
          else if(DataBuf[2] == 0xFD)      //设定控制器的第三控制字
          {
             col_flag3 = (DataBuf[4]<<4) + DataBuf[5];
             AT24C128_write(0x0D,&col_flag3,1);
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(18);
          }
          else if(DataBuf[2] == 0xE1)    //设置工作日的准进时段
          {
             i = DataBuf[4]*10 + DataBuf[5];
             if((i > 0) && (i < 5))
             {
                for(j=0;j<16;j++)
                   DataBuf[j] = (DataBuf[j*2 + 6]<<4) + DataBuf[j*2 + 7];
                AT24C128_write(0x1DF0 + i*16,DataBuf,16);
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(18);
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xE2)    //设置非工作日(节假日,或星期内休息日)的准进时段
          {                              //设置门常开时段,刷卡加密时段,门常闭时段,门磁红外监控时段
             i = DataBuf[4]*10 + DataBuf[5];
             if(i == 1)
             {
                for(j=0;j<16;j++)
                   DataBuf[j] = (DataBuf[j*2 + 6]<<4) + DataBuf[j*2 + 7];
                AT24C128_write(0x1E40,DataBuf,16);
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(18);
             }
             else if((i > 4) && (i < 9))
             {
                for(j=0;j<16;j++)
                   DataBuf[j] = (DataBuf[j*2 + 6]<<4) + DataBuf[j*2 + 7];
                AT24C128_write(0x1E00 + i*16,DataBuf,16);
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(18);
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xF1)    //设定星期准进时间段列表
          {
             i = (DataBuf[4]<<4) + DataBuf[5];
             j = (DataBuf[6]<<4) + DataBuf[7];
             if((i < 16) && (j > 0) && (j < 8))
             {
                for(m=0;m<24;m++)
                   DataBuf[m] = (DataBuf[m*2 + 8]<<4) + DataBuf[m*2 + 9];
                AT24C128_write(0x1000 + i*224 + (j-1)*32,DataBuf,24);
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(18);
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xEA)      //设定星期内的休息日
          {
             DataBuf[0] = DataBuf[4]*10 + DataBuf[5];
             DataBuf[1] = DataBuf[6]*10 + DataBuf[7];
             if(((DataBuf[0] > 0) && (DataBuf[0] < 8)) || ((DataBuf[1] > 0) && (DataBuf[1] < 8)))
             {
                AT24C128_write(0x1E90,DataBuf,2);
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(18);
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xEB)      //设定国家法定节假日(不包括星期内休息日)
          {
             DataBuf[0] = DataBuf[4]*10 + DataBuf[5];
             DataBuf[1] = DataBuf[6]*10 + DataBuf[7];
             if((DataBuf[0] > 0) && (DataBuf[0] < 13) && (DataBuf[1] > 0) && (DataBuf[1] < 32))
             {
                if(holiday_n < 14)
                {

                   for(i=0;i<14;i++)
                   {
                      if((holiday_buf[i].holiday[0] == DataBuf[0]) && (holiday_buf[i].holiday[1] == DataBuf[1]))
                      {
                          purview_timer = 0x4B0;
                          DataBuf[7] = 0x30;
                          DataBuf[8] = 0x35;
                          send_chk(18);
                          TI = 0;
                          ES = 1;
                          return;
                      }
                   }
                   for(i=0;i<14;i++)
                   {
                      if((holiday_buf[i].holiday[0] > 12) || (holiday_buf[i].holiday[1] > 31))
                      {
                         holiday_n++;
                         I2C_rcv[0] = holiday_n;
                         AT24C128_write(0x0F,I2C_rcv,1);
                         holiday_buf[i].holiday[0] = DataBuf[0];
                         holiday_buf[i].holiday[1] = DataBuf[1];
                         AT24C128_write(0x1EA0 + i*2,DataBuf,2);
                         purview_timer = 0x4B0;
                         DataBuf[7] = 0x30;
                         DataBuf[8] = 0x30;
                         send_chk(18);
                         TI = 0;
                         ES = 1;
                         return;
                      }
                   }
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x30;
                   DataBuf[8] = 0x35;
                   send_chk(18);
                }
                else
                {
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x30;
                   DataBuf[8] = 0x35;
                   send_chk(18);
                }
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xEC)      //删除一组节假日
          {                                //清空节假日列表(全部删除)
             DataBuf[0] = DataBuf[4]*10 + DataBuf[5];
             DataBuf[1] = DataBuf[6]*10 + DataBuf[7];
             if((DataBuf[0] == 0) && (DataBuf[1] == 0))
             {
                holiday_n = 0;
                I2C_rcv[0] = holiday_n;
                AT24C128_write(0x0F,I2C_rcv,1);
                for(i=0;i<14;i++)
                {
                   holiday_buf[i].holiday[0] = 0xFF;
                   holiday_buf[i].holiday[1] = 0xFF;
                }
                AT24C128_write(0x1EA0,holiday_buf[0].holiday,28);
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(18);
             }
             else if(holiday_n == 0)
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
             else if((DataBuf[0] > 0) && (DataBuf[0] < 13) && (DataBuf[1] > 0) && (DataBuf[1] < 32))
             {
                for(i=0;i<14;i++)
                {
                   if((holiday_buf[i].holiday[0] == DataBuf[0]) && (holiday_buf[i].holiday[1] == DataBuf[1]))
                   {
                      holiday_n--;
                      holiday_buf[i].holiday[0] = 0xFF;
                      holiday_buf[i].holiday[1] = 0xFF;
                      I2C_rcv[0] = holiday_n;
                      AT24C128_write(0x0F,I2C_rcv,1);
                      AT24C128_write(0x1EA0 + i*2,holiday_buf[i].holiday,2);
                      purview_timer = 0x4B0;
                      DataBuf[7] = 0x30;
                      DataBuf[8] = 0x30;
                      send_chk(18);
                   }
                }
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xED)      //远程开门
          {
             DataBuf[4] = (DataBuf[4]<<4) + DataBuf[5];
             if(DataBuf[4] == 1)
             {
                card[0] = 0;
                card[1] = 0;
                card[2] = 0;
                card[3] = 0;
                card[4] = 0;
                card[5] = 0x20;
                card[6] = read_time_byte(0x8d);//sys_year;       //读系统时间 --- 年
                card[7] = read_time_byte(0x89);//sys_mon;       //读系统时间 --- 月
                card[8] = read_time_byte(0x87);//sys_date;       //读系统时间 --- 日
                card[9] = read_time_byte(0x85);//sys_hour;       //读系统时间 --- 时
                card[10] = read_time_byte(0x83);//sys_min;      //读系统时间 --- 分
                card[11] = read_time_byte(0x81);//sys_second;      //读系统时间 --- 秒
                if(P2_7)
                   card[12] = 0x40;
                else card[12] = 0x00;
                card[13] = 0x02;
                if(D0_flag)
                {
                   if(SAVEP == LOADP)
                   {
                      LOADP++;
                      SAVEP++;
                      if(SAVEP > 0x1FF)
                      {
                         LOADP = 0;
                         SAVEP = 0;
                         I2C_rcv[1] = 0;
                         I2C_rcv[2] = 0;
                         I2C_rcv[3] = 0;
                         I2C_rcv[4] = 0;
                         AT24C128_write(0x01,I2C_rcv+1,4);
                         AT24C128_write(0x2000 + 0x1FF*16,card,14);
                      }
                      else
                      {
                         I2C_rcv[3] = (SAVEP >> 8) & 0x00ff;
                         I2C_rcv[4] = SAVEP& 0x00ff;
                         AT24C128_write(0x03,I2C_rcv+3,2);
                         AT24C128_write(0x2000 + (SAVEP-1)*16,card,14);
                      }
                   }
                   else
                   {
                      SAVEP++;
                      if(SAVEP > 0x1FF)
                      {
                         SAVEP = 0;
                         D0_flag = 1;
                         I2C_rcv[3] = (SAVEP >> 8) & 0x00ff;
                         I2C_rcv[4] = SAVEP& 0x00ff;
                         I2C_rcv[5] |= 0x01;
                         AT24C128_write(0x03,I2C_rcv+3,3);
                         AT24C128_write(0x2000 + (SAVEP-1)*16,card,14);
                      }
                      else
                      {
                         I2C_rcv[3] = (SAVEP >> 8) & 0x00ff;
                         I2C_rcv[4] = SAVEP& 0x00ff;
                         AT24C128_write(0x03,I2C_rcv+3,2);
                         AT24C128_write(0x2000 + (SAVEP-1)*16,card,14);
                      }
                   }
                }
                else
                {
                   SAVEP++;
                   if(SAVEP > 0x1FF)
                   {
                      SAVEP = 0;
                      D0_flag = 1;
                      I2C_rcv[3] = 0;
                      I2C_rcv[4] = 0;
                      I2C_rcv[5] = 1;
                      AT24C128_write(0x03,I2C_rcv+3,3);
                      AT24C128_write(0x2000 + 0x1FF*16,card,14);
                   }
                   else
                   {
                      I2C_rcv[3] = (SAVEP >> 8) & 0x00ff;
                      I2C_rcv[4] = SAVEP& 0x00ff;
                      AT24C128_write(0x03,I2C_rcv+3,2);
                      AT24C128_write(0x2000 + (SAVEP-1)*16,card,14);
                   }
                }
                relay = 0;
                LED = 0;
                relay_timer = relay_timer1<<1;
                relay_flag = 1;

                //timer2_out = 0;

⌨️ 快捷键说明

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