📄 system.c
字号:
{
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 + -