📄 cdt1.c
字号:
if((com1_rl1(l+8)==0x00)&&(com1_rl1(l+14)==0x01)&&(com1_rl1(l+13)==bchr(l+8))&&(com1_rl1(l+19)==bchr(l+14)))
{
dzh_in_pointer=0;
bridge=0;
len=com1_rl1(l+4)-2;
dzh_len=com1_rl1(l+11);
dz_id=com1_rl1(l+9);
dzh_type=com1_rl1(l+15);
dzh_in_pointer+=6;
dzh_2l_1(dzh_in_pointer+0)=0x00;
dzh_2l_1(dzh_in_pointer+1)=com1_rl1(l+9);
dzh_in_pointer+=2;
for(y=0;y<len;y++)
{
dzh_2l_1(dzh_in_pointer+0)=com1_rl1(l+21+bridge);
dzh_2l_1(dzh_in_pointer+1)=com1_rl1(l+22+bridge);
dzh_2l_1(dzh_in_pointer+2)=com1_rl1(l+23+bridge);
dzh_2l_1(dzh_in_pointer+3)=com1_rl1(l+24+bridge);
dzh_in_pointer+=4;
bridge+=6;
}
//if(dzh_in_pointer>=66) dzh_in_pointer=0;
bh_gong=com1_rl1(l+10);
switch(bh_gong)
{
case 0x07:
cdt_dzh_a0=1; //传定值标志
break;
case 0x08:
cdt_dzh_a1=1; //写定值标志
break;
case 0x09:
cdt_dzh_a2=1; //读定值标志
break;
}
}
}
void cdt_yccl(void)
{
IO_WORD l,data;
l=com1_para(12);
l=(l<<8)+com1_para(11);
if ((yc_fm_para1x(yc_fm1_counter*3)==0xffff)||(yc_fm1_counter>l))//系数为0xffff返回
{
yc_fm1_counter=0;
return;
}
else
{
switch (yc_fm_para1(yc_fm1_counter*6))//判功能码
{
case 0x00: //new 智能单元
if((yc_fm_para1(yc_fm1_counter*6+1)&0x3f)==0x3c)
{
l=yc_fm_para1x(yc_fm1_counter*3+1);
data=ioyc_1lx(l)&0x0fff;
yc_2l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
}
else
{
l=(yc_fm_para1(yc_fm1_counter*6+1)-1)*18+yc_fm_para1x(yc_fm1_counter*3+1);
data=yc_1lx(l)&0x0fff;
yc_2l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
}
break;
case 0x01: //FC
break;
case 0x02: //MCK
l=(yc_fm_para1(yc_fm1_counter*6+1)-1)*18+yc_fm_para1x(yc_fm1_counter*3+1);//偏移量
data=(yc_1lx(l)>>4)&0x0fff;//取数
yc_2l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
break;
case 0x03: //MTY
l=(yc_fm_para1(yc_fm1_counter*6+1)-1)*18+yc_fm_para1x(yc_fm1_counter*3+1);
data=(yc_1lx(l)>>4)&0x0fff;
yc_2l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
break;
case 0x04: //转发
if((yc_fm_para1(yc_fm1_counter*6+1)&0x3f)==0x3c)
{
l=yc_fm_para1x(yc_fm1_counter*3+1);
data=ioyc_1lx(l)&0x0fff;
yc_2l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
}
else
{
l=(yc_fm_para1(yc_fm1_counter*6+1)-1)*18+yc_fm_para1x(yc_fm1_counter*3+1);
data=yc_1lx(l)&0x0fff;
yc_2l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
}
break;
case 0x05: //周波
break;
case 0x06: //总加
break;
}
}
}
void cdt_ddcl(void)
{
IO_WORD l,datal,datah;
IO_BYTE sort;
l=com1_para(16);
l=(l<<8)+com1_para(15);
if((dd_fm1_counter>=l)||(dd_fm_para1(dd_fm1_counter*2)==0xff))
{
dd_fm1_counter=0;
}
sort=dd_fm_para1(dd_fm1_counter*2);
sort=(sort>>6)&0x03;
switch (sort)//判模块类型
{
case 0x00: //new
if((dd_fm_para1(dd_fm1_counter*2)&0x3f)==0x3c)
{
l=dd_fm_para1(dd_fm1_counter*2+1);
datal=iodd_1lx(l*2);
datah=iodd_1lx(l*2+1)&0x20ff;
dd_2l_1x(dd_fm1_counter*2)=datal;
dd_2l_1x(dd_fm1_counter*2+1)=datah;
dd_fm1_counter++;
}
else
{
l=((dd_fm_para0(dd_fm1_counter*2)&0x3f)-1)*4+dd_fm_para1(dd_fm1_counter*2+1);//偏移量
datal=dd_1lx(l*2); //取数
datah=dd_1lx(l*2+1)&0x20ff;
dd_2l_1x(dd_fm1_counter*2)=datal;
dd_2l_1x(dd_fm1_counter*2+1)=datah;
dd_fm1_counter++;
}
break;
case 0x01: //MCK
break;
case 0x02: //转发
if((dd_fm_para1(dd_fm1_counter*2)&0x3f)==0x3c)
{
l=dd_fm_para1(dd_fm1_counter*2+1);
datal=iodd_1lx(l*2);
datah=iodd_1lx(l*2+1)&0x20ff;
dd_2l_1x(dd_fm1_counter*2)=datal;
dd_2l_1x(dd_fm1_counter*2+1)=datah;
dd_fm1_counter++;
}
else
{
l=((dd_fm_para0(dd_fm1_counter*2)&0x3f)-1)*4+dd_fm_para1(dd_fm1_counter*2+1);//偏移量
datal=dd_1lx(l*2); //取数
datah=dd_1lx(l*2+1)&0x20ff;
dd_2l_1x(dd_fm1_counter*2)=datal;
dd_2l_1x(dd_fm1_counter*2+1)=datah;
dd_fm1_counter++;
}
break;
case 0x03: //备用
break;
}
}
void cdt_move(void)
{
IO_WORD i,l,bb,n,ll;
IO_BYTE k,j;
i=com1_para(14);
i=(i<<8)|com1_para(13);
if (i>512) i=512;
i=(i+0x0f)&0xfff0;
if((yx_fm1_counter*32)>=i)
{
yx_fm1_counter=0;
}
for(bb=0;bb<2;bb++)
{
l=0x00;
for (k=0;k<16;k++)
{
ll=(yx_fm1_counter<<6)+bb*32+k*2;
l=l>>1;
if (yx_fm_para1(ll)!=0xff)
{
if((yx_fm_para1(ll)&0x3f)==0x3c)
{
n=yx_fm_para1(ll+1)/8;
j=ioyx_1l(n)<<(7-(yx_fm_para1(ll+1)%8));
l=l|((j&0x80)<<8);
}
else
{
n=((yx_fm_para1(ll)&0x3f)-1)<<3;
n=yx_fm_para1(ll+1)/8+n;
j=yx_1l(n)<<(7-(yx_fm_para1(ll+1)%8));
l=l|((j&0x80)<<8);
}
}
}
yx_3l_1x(yx_fm1_counter*2+bb)=l;
}
}
//yx_fm1_counter+=1;
/*while(i!=0)
{
l=0x00;
for (k=0;k<16;k++)
{
l=l>>1;
if (yx_fm_para1(r)!=0xff)
{
if((yx_fm_para1(r)&0x3f)==0x3c)
{
n=yx_fm_para1(r+1)/8;
j=ioyx_1l(n)<<(7-(yx_fm_para1(r+1)%8));
l=l|((j&0x80)<<8);
}
else
{
n=((yx_fm_para1(r)&0x3f)-1)<<3;
n=yx_fm_para1(r+1)/8+n;
j=yx_1l(n)<<(7-(yx_fm_para1(r+1)%8));
l=l|((j&0x80)<<8);
}
}
i--;
r+=2;
}
yx_3l_1x(m)=l;
m++;
}*/
void cdt_yxcl(void)
{
unsigned long d;
cdt_move();
if(power_count!=0)
{
if (yx_fm1_counter!=0)
{
yx_2l_1x(yx_fm1_counter*2)=yx_3l_1x(yx_fm1_counter*2);
yx_2l_1x(yx_fm1_counter*2+1)=yx_3l_1x(yx_fm1_counter*2+1);
yx_fm1_counter++;
}
else
{
power_count--;
yx_2l_1x(yx_fm1_counter*2)=yx_3l_1x(yx_fm1_counter*2);
yx_2l_1x(yx_fm1_counter*2+1)=yx_3l_1x(yx_fm1_counter*2+1);
yx_fm1_counter++;
}
}
else
{
d=yx_3l_1x(yx_fm1_counter*2+1)^yx_2l_1x(yx_fm1_counter*2+1);
d=(d<<16)|(yx_3l_1x(yx_fm1_counter*2)^yx_2l_1x(yx_fm1_counter*2));
if(d!=0)
{
cdt_cos_datcl(yx_fm1_counter);
cdt_soe_datcl(yx_fm1_counter,d);
}
yx_fm1_counter+=1;
}
}
void cdt_rec(void)
{
IO_BYTE i,j;
com_int_tmout[1]=0; //add 03-2-8
com1_rl(cdt_rc1)=com_port1_dat; //接收
cdt_rc1++;
cdt_rc++;
if (cdt_rc1>127) cdt_rc1=cdt_rc=0;
/* i=0x01;
rrb(i);
i&=0x10;
if (i!=0)
{
i=0x00;j=0x30;
wrb(i,j);
}*/
i=0x00;j=0x38;
wrb(i,j);
cdt_time_mark=0;
}
void yksele(IO_BYTE l)
{
IO_BYTE k;
k=bchr(l+8);
if((com1_rl1(l+8)==0xe0) && (com1_rl1(l+13)==k))
{
cyksm1();
cyk_sel_num=com1_rl1(l+10);
cyk_sel_num=(cyk_sel_num<<8)+com1_rl1(l+11);
cdt_ykmark=0x10;
yktime1=18000;
yktime=0x00;
//yk_time1=1;
}
}
void ykexcu(IO_BYTE l)
{
if((com1_rl1(l+8)==0xe2) && com1_rl1(l+13)==bchr(l+8))
{
cyk_exe_num=com1_rl1(l+10);
cyk_exe_num=(cyk_exe_num<<8)+com1_rl1(l+11);
cdt_ykmark=0x10;
yk_time=0x0;
//yk_time1=1;
}
}
void ykcanc(IO_BYTE l)
{
if((com1_rl1(l+8)==0xe3) && com1_rl1(l+13)==bchr(l+8))
{
cyk_chx_num=com1_rl1(l+10);
cyk_chx_num=(cyk_chx_num<<8)+com1_rl1(l+11);
cdt_ykmark=0x10;
//yk_time1=1;
}
}
/***********对时************/
void upda_time(IO_BYTE l)
{
if((com1_rl1(l+8)==0xee) && com1_rl1(l+13)==bchr(l+8)&& (com1_rl1(l+14)==0xef) && com1_rl1(l+19)==bchr(l+14))
{
sys_msecond=(com1_rl1(l+10)<<8)+(com1_rl1(l+9)&0x00ff)+500;
sys_second=com1_rl1(l+11);
second=com1_rl1(l+11);
sys_minute=com1_rl1(l+12);
minute=com1_rl1(l+12);
sys_hour=com1_rl1(l+15);
sys_day=com1_rl1(l+16);
sys_month=com1_rl1(l+17);
sys_year=com1_rl1(l+18);
}
}
/**********接收处理**********/
void cdt_rec_cl(void)
{
IO_BYTE i,l,k;
l=cdt_rc;
for (i=0;i<l;i++) com1_rl1(i)=com1_rl(i);
cdt_rc=cdt_rc1=0;
for (i=0;i<l;i++)
{
if ((com1_rl1(i)==com1_para(4))&&(com1_rl1(i+1)==com1_para(5))&&(com1_rl1(i+2)==0x71)&&(com1_rl1(i+6)==com1_para(8)))
{
k=bchr(i+2);
if(com1_rl1(i+7)==k)
{
cdt_type=com1_rl1(i+3);
switch(cdt_type)
{
case 0x61: yksele(i); //遥控选择
break;
case 0xc2: ykexcu(i); //遥控执行
break;
case 0xb3: ykcanc(i); //遥控撤消
break;
case 0xf4: yksele(i); //遥调选择
break;
case 0x85: ykexcu(i); //遥调执行
break;
case 0x26: ykcanc(i); //遥调撤消
break;
case 0x7a: upda_time(i);//对时
break;
case 0x3D: cdt_dzhcl(i);//定值
break;
}
}
return;
}
}
}
void cdt_cos_datcl(IO_WORD m)
{
cdt_cos_data(cos_in_pointer+0)=0xf0+m;
cdt_cos_data(cos_in_pointer+1)=yx_3l_1(m*4);
cdt_cos_data(cos_in_pointer+2)=yx_3l_1(m*4+1);
cdt_cos_data(cos_in_pointer+3)=yx_3l_1(m*4+2);
cdt_cos_data(cos_in_pointer+4)=yx_3l_1(m*4+3);
cos_in_pointer+=6;
if (cos_in_pointer>=600) cos_in_pointer=0;
yx_2l_1(m*4)=yx_3l_1(m*4);
yx_2l_1(m*4+1)=yx_3l_1(m*4+1);
yx_2l_1(m*4+2)=yx_3l_1(m*4+2);
yx_2l_1(m*4+3)=yx_3l_1(m*4+3);
}
void cdt_soe_datcl(IO_WORD m,unsigned long int d)
{
IO_BYTE s;
unsigned long int e,l;
for(s=0;s<32;s++)
{
e=d;
if(e&0x01)
{
cdt_soe_data(soe_in_pointer+0)=0x80;
cdt_soe_data(soe_in_pointer+1)=sys_msecond&0x00ff;
cdt_soe_data(soe_in_pointer+2)=(sys_msecond>>8)&0x00ff;
cdt_soe_data(soe_in_pointer+3)=sys_second;
cdt_soe_data(soe_in_pointer+4)=sys_minute;
cdt_soe_data(soe_in_pointer+6)=0x81;
cdt_soe_data(soe_in_pointer+7)=sys_hour;
cdt_soe_data(soe_in_pointer+8)=sys_day;
cdt_soe_data(soe_in_pointer+9)=(m*32+s)&0x00ff;
l=yx_3l_1x(m*2+1);
l=(l<<16)|yx_3l_1x(m*2);
if((l>>s)&0x01)
cdt_soe_data(soe_in_pointer+10)=((m*32+s)>>8)|0x80;
else {cdt_soe_data(soe_in_pointer+10)=(m*32+s)>>8; }
soe_in_pointer+=12;
if (soe_in_pointer>=1200) soe_in_pointer=0;
}
d>>=0x01;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -