📄 process.c
字号:
freezetime_flag=0;
break;
}
}
/*******************************************************************
抄收时段冻结数据函数
函数原型: void R_time(void)
功 能:
********************************************************************/
void R_time()
{
register uchar i,j;
SenBuf[5]=(RecBuf[5]|0x80);
cs+=SenBuf[5];
SenBuf[6]=RecBuf[7]*6;
for(i=0;i<RecBuf[7];i++)
for(j=0;j<6;j++)
SenBuf[j+7+i*6]=freezesum[i][j];
/*
SenBuf[6]=RecBuf[7]*6;
for(i=0;i<SenBuf[6];i++)
{
SenBuf[7+i]=FreezeData[i];
cs+=SenBuf[7+i];
}
*/
for(i=0;i<SenBuf[6];i++)
cs+=SenBuf[7+i];
cs+=SenBuf[6];
SenBuf[7+SenBuf[6]]=cs;
SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
Senlen=SenBuf[6]+9;
}
/*******************************************************************
设置日冻结函数
函数原型: void S_day(void)
功 能:
********************************************************************/
void S_day(void)
{
// register uchar i,j;
uchar freezeday_end=0;
static freezeday_flag;
// for(i=0;i<16;i++)
// for(j=0;j<6;j++)
// FreezeData[j+i*6]=sum[i][j];
switch(freezeday_flag)
{
case 0:
W_block(WPAGE2,i2c_day_freeze,&sum[0][0],96);
freezeday_end=1;
W_block(WPAGE0,i2c_day_flag,&freezeday_end,1);
freezeday_flag=1;
break;
case 1:
W_block(WPAGE3,i2c_day_freeze,&sum[0][0],96);
freezeday_end=0;
W_block(WPAGE0,i2c_day_flag,&freezeday_end,1);
freezeday_flag=0;
break;
}
}
/*******************************************************************
抄收日冻结数据函数
函数原型: void R_day(void)
功 能:
********************************************************************/
void R_day()
{
register uchar i;
SenBuf[5]=(RecBuf[5]|0x80);
cs+=SenBuf[5];
SenBuf[6]=RecBuf[7]*6;
for(i=0;i<SenBuf[6];i++)
{
SenBuf[7+i]=FreezeData[i];
cs+=SenBuf[7+i];
}
cs+=SenBuf[6];
SenBuf[7+SenBuf[6]]=cs;
SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
Senlen=SenBuf[6]+9;
}
/*******************************************************************
设置月冻结函数
函数原型: void S_month(void)
功 能:
********************************************************************/
void S_month(void)
{
// register uchar i,j;
uchar freezemonth_end=0;
static freezemonth_flag;
// for(i=0;i<16;i++)
// for(j=0;j<6;j++)
// FreezeData[j+i*6]=sum[i][j];
switch(freezemonth_flag)
{
case 0:
W_block(WPAGE2,i2c_month_freeze,&sum[0][0],96);
freezemonth_end=1;
W_block(WPAGE0,i2c_month_flag,&freezemonth_end,1);
freezemonth_flag=1;
break;
case 1:
W_block(WPAGE3,i2c_month_freeze,&sum[0][0],96);
freezemonth_end=0;
W_block(WPAGE0,i2c_month_flag,&freezemonth_end,1);
freezemonth_flag=0;
break;
}
}
/*******************************************************************
抄收月冻结数据函数
函数原型: void R_month(void)
功 能:
********************************************************************/
void R_month()
{
register uchar i;
SenBuf[5]=(RecBuf[5]|0x80);
cs+=SenBuf[5];
SenBuf[6]=RecBuf[7]*6;
for(i=0;i<SenBuf[6];i++)
{
SenBuf[7+i]=FreezeData[i];
cs+=SenBuf[7+i];
}
cs+=SenBuf[6];
SenBuf[7+SenBuf[6]]=cs;
SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
Senlen=SenBuf[6]+9;
}
/*******************************************************************
突发告警上报函数
函数原型: void Br_report(void)
功 能:
********************************************************************/
/*
void Br_report()
{
register uchar i;
SenBuf[5]=(RecBuf[5]|0x80);
cs+=SenBuf[5];
SenBuf[6]=4;
cs+=SenBuf[6];
SenBuf[7]=alarm0;
SenBuf[8]=alarm1;
SenBuf[9]=alarm2;
SenBuf[10]=alarm3;
for(i=0;i<4;i++)
cs+=SenBuf[7+i];
SenBuf[SenBuf[6]+7]=cs;
SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
Senlen=SenBuf[6]+9;
}
*/
/*******************************************************************
地址上报函数
函数原型: void Ad_report(void)
功 能:
********************************************************************/
void Ad_report()
{
SenBuf[5]=(RecBuf[5]|0x80);
cs+=SenBuf[5];
SenBuf[6]=0;
SenBuf[SenBuf[6]+7]=cs;
SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
Senlen=SenBuf[6]+9;
}
/*******************************************************************
轮询告警上报函数
函数原型: void Gb_report(void)
功 能:
********************************************************************/
void Gb_report()
{
register uchar i;
SenBuf[5]=(RecBuf[5]|0x80);
cs+=SenBuf[5];
SenBuf[6]=4;
cs+=SenBuf[6];
SenBuf[7]=alarm0;
SenBuf[8]=alarm1;
SenBuf[9]=alarm2;
SenBuf[10]=alarm3;
for(i=0;i<4;i++)
cs+=SenBuf[7+i];
SenBuf[SenBuf[6]+7]=cs;
SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
Senlen=SenBuf[6]+9;
}
/*******************************************************************
校时函数
函数原型: void ch_Datetime(void)
功 能:
********************************************************************/
void ch_Datetime()
{
// static uchar time_flag=0;
// register uchar time_end;
register i;
/*
R_block(WPAGE0,RPAGE0,i2c_addr_timeflag,&time_end,1);
if(time_end==1)
R_block(WPAGE0,RPAGE0,i2c_addr_time,inittime,6);
else
R_block(WPAGE1,RPAGE1,i2c_addr_time,inittime,6);
*/
for(i=0;i<6;i++)
{
RecBuf[7+i]=((RecBuf[7+i]/10)*16)+(RecBuf[7+i]%10);
inittime[i]=RecBuf[7+i];
}
ds1302set();
}
/*******************************************************************
系统初始化函数
函数原型: void Sys_init(void)
功 能:
********************************************************************/
void Sys_init()
{
register uchar i,j;
uchar k=0,radd_end;
// bit tmp;
if(add_flag==0x07)
{
for(i=0;i<8;i++)
{
if((RecBuf[7]&0x80)==0x80)
{
for(j=0;j<6;j++)
sum[i][j]=RecBuf[9+j+6*k];
k++;
}
RecBuf[7]<<=1;
}
for(i=8;i<16;i++)
{
if((RecBuf[8]&0x80)==0x80)
{
for(j=0;j<6;j++)
sum[i][j]=RecBuf[9+j+6*k];
k++;
}
RecBuf[8]<<=1;
}
W_block(WPAGE0,i2c_addr_data,&sum[0][0],RecBuf[6]-2);
radd_end=1;
W_block(WPAGE0,i2c_addr_addflag,&radd_end,1);
W_block(WPAGE1,i2c_addr_data,&sum[0][0],RecBuf[6]-2);
}
else
{
for(i=0;i<16;i++)
for(j=0;j<6;j++)
sum[i][j]=RecBuf[j+7];
W_block(WPAGE0,i2c_addr_data,&sum[0][0],96);
radd_end=1;
W_block(WPAGE0,i2c_addr_addflag,&radd_end,1);
W_block(WPAGE1,i2c_addr_data,&sum[0][0],96);
}
SenBuf[5]=(RecBuf[5]|0x80);
cs+=SenBuf[5];
SenBuf[6]=0;
SenBuf[SenBuf[6]+7]=cs;
SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
Senlen=SenBuf[6]+9;
}
/*******************************************************************
处理函数
函数原型: void process(void)
功 能:
********************************************************************/
void process(void)
{
register uchar i;
// uchar freezetime_end=0;
uchar freezeday_end=0;
uchar freezemonth_end=0;
// uchar arpt_flag=0;
uchar j,k;
if(r_end)
{
cs=0;
SenBuf[0]=FRAME_START_CHAR;
SenBuf[1]=add[0];
SenBuf[2]=add[1];
SenBuf[3]=add[2];
SenBuf[4]=FRAME_START_CHAR;
for(i=0;i<5;i++)
cs+=SenBuf[i];
if(cycend)
{
cycend=0;
Cyc_end();
}
switch(fc_flag)
{
case 0x01 :
ch_Datetime();
break;
case 0x02 :
for(i=0;i<2;i++)
bport[i]=RecBuf[7+i];
wr_switch=1;
if(bport07)
{
if((RecBuf[9]&0x80)==0)
bwary00=0;
else
bwary00=1;
}
if(bport06)
{
if((RecBuf[9]&0x40)==0)
bwary01=0;
else
bwary01=1;
}
if(bport05)
{
if((RecBuf[9]&0x20)==0)
bwary02=0;
else
bwary02=1;
}
if(bport04)
{
if((RecBuf[9]&0x10)==0)
bwary03=0;
else
bwary03=1;
}
if(bport03)
{
if((RecBuf[9]&0x08)==0)
bwary04=0;
else
bwary04=1;
}
if(bport02)
{
if((RecBuf[9]&0x04)==0)
bwary05=0;
else
bwary05=1;
}
if(bport01)
{
if((RecBuf[9]&0x02)==0)
bwary06=0;
else
bwary06=1;
}
if(bport00)
{
if((RecBuf[9]&0x01)==0)
bwary07=0;
else
bwary07=1;
}
if(bport17)
{
if((RecBuf[10]&0x80)==0)
bwary10=0;
else
bwary10=1;
}
if(bport16)
{
if((RecBuf[10]&0x40)==0)
bwary11=0;
else
bwary11=1;
}
if(bport15)
{
if((RecBuf[10]&0x20)==0)
bwary12=0;
else
bwary12=1;
}
if(bport14)
{
if((RecBuf[10]&0x10)==0)
bwary13=0;
else
bwary13=1;
}
if(bport13)
{
if((RecBuf[10]&0x08)==0)
bwary14=0;
else
bwary14=1;
}
if(bport12)
{
if((RecBuf[10]&0x04)==0)
bwary15=0;
else
bwary15=1;
}
if(bport11)
{
if((RecBuf[10]&0x02)==0)
bwary16=0;
else
bwary16=1;
}
if(bport10)
{
if((RecBuf[10]&0x01)==0)
bwary17=0;
else
bwary17=1;
}
/*
for(i=0;i<2;i++)
bport[i]=RecBuf[7+i];
for(i=0;i<RecBuf[6]-2;i++)
bwary[i]=RecBuf[9+i];
*/
Wr_port();
break;
case 0x04 :
Rd_port();
break;
case 0x08 :
CycleFlag=1;
/* if(RecBuf[7]==0)
{
r_end=0;
s_end=1;
P1_4=R_CON;
return;
}
else
*/ Radd_data();
break;
case 0x10 :
// Gb_report();
break;
case 0x20 :
if(RecBuf[7]==1)
{
for(j=0;j<16;j++)
for(k=0;k<6;k++)
freezesum[j][k]=0;
FreezeFlag=1;
}
else if(RecBuf[7]==2)
{
FreezeFlag=0;
S_time();
}
break;
case 0x30:
CycleFlag=1;
R_time();
break;
case 0x40:
S_day();
break;
case 0x50:
CycleFlag=1;
R_day();
break;
case 0x60:
S_month();
break;
case 0x70:
CycleFlag=1;
R_month();
break;
case 0x80 :
Sys_init();
break;
default:
r_end=0;
s_end=1;
P1_4=R_CON;
return;
}
r_end=0;
// if(delay_10ms>10)
// {
// s_end=1;
// P1_4=R_CON;
// }
// else
// {
if(add_flag==0x07)
{
p_end=1;
P1_4=S_CON;
TI=1;
}
else if(add_flag==0x00)
{
/* if(fc_flag==0x20)
{
p_end=1;
R_block(WPAGE0,RPAGE0,i2c_addr_configflag,&arpt_flag,1);
if((arpt_flag!=1)&&(delay_10min<60000))
{
arpt_flag=1;
W_block(WPAGE0,i2c_addr_configflag,&arpt_flag,1);
h_value=Hash(TL0,TH0,add,240);
P1_4=S_CON;
if(h_value==0)
TI=1;
else
TR2=1;
}
else if(delay_10min>600009)
{
h_value=Hash(TL0,TH0,add,4+ArptCount);
ArptCount++;
if(ArptCount==100)
ArptCount=0;
P1_4=S_CON;
if(h_value==0)
TI=1;
else if((h_value>0)&&(h_value<4))
TR2=1;
else
{
s_end=1;
P1_4=R_CON;
}
}
else
{
s_end=1;
P1_4=R_CON;
}
}
*/// else
// {
s_end=1;
P1_4=R_CON;
// }
}
else
{
if(fc_flag==0x10)
{
p_end=1;
if((alarm0!=0)&&(alarm_ac==0)&&((add[2]%10)==RecBuf[7]))
{
Gb_report();
h_value=Hash(TL0,TH0,add,20);
alarm0=0;
P1_4=S_CON;
if(h_value==0)
TI=1;
else
TR2=1;
}
else if((CheckInFlag)&&((add[2]%10)==RecBuf[7]))
{
Ad_report();
h_value=Hash(TL0,TH0,add,20);
alarm0=0;
P1_4=S_CON;
if(h_value==0)
TI=1;
else
TR2=1;
}
else
{
s_end=1;
P1_4=R_CON;
}
switch(FreezeClass)
{
case 1:
R_block(WPAGE0,RPAGE0,i2c_day_flag,&freezeday_end,1);
if(freezeday_end)
R_block(WPAGE2,RPAGE2,i2c_day_freeze,FreezeData,96);
else
R_block(WPAGE3,RPAGE3,i2c_day_freeze,FreezeData,96);
break;
case 2:
R_block(WPAGE0,RPAGE0,i2c_month_flag,&freezemonth_end,1);
if(freezemonth_end)
R_block(WPAGE2,RPAGE2,i2c_month_freeze,FreezeData,96);
else
R_block(WPAGE3,RPAGE3,i2c_month_freeze,FreezeData,96);
break;
}
}
else
{
s_end=1;
P1_4=R_CON;
}
}
// }
}
if (wr_switch!=0)
User_contr();
if(LightFlashStart)
UserLight_Flash();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -