📄 cdt.c
字号:
com1_tl(cdt_in_counter,5)=com1_para(5);
com1_tl(cdt_in_counter,6)=*tbz[cdt_zlmark-0x41];
com1_tl(cdt_in_counter,7)=*(tbz[cdt_zlmark-0x41]+1);
com1_tl(cdt_in_counter,8)=cdt_zcj;
com1_tl(cdt_in_counter,9)=*(tbz[cdt_zlmark-0x41]+3);
com1_tl(cdt_in_counter,10)=*(tbz[cdt_zlmark-0x41]+4);
com1_tl(cdt_in_counter,11)=bch(6);
cdt_tc[cdt_in_counter]=12;
cdt_in_counter^=0x01;
cdt_zxj--;
}
/**********组信息字***********/
void sjzz6 (void)
{
/* if ((cdt_zcj==0x01)&&(cdt_zlmark==cdt_zmark))
{
com1_tl(cdt_in_counter,0)=0x8a;
com1_tl(cdt_in_counter,1)=zbzc[0];
com1_tl(cdt_in_counter,2)=zbzc[1];
com1_tl(cdt_in_counter,3)=zbzc[0];
com1_tl(cdt_in_counter,4)=zbzc[1];
com1_tl(cdt_in_counter,5)=bch(0);
cdt_gong++;
cdt_zcj--;
cdt_tc[cdt_in_counter]=0x06;
cdt_in_counter^=0x01;
}
else
{*/
com1_tl(cdt_in_counter,0)=cdt_gong++;
com1_tl(cdt_in_counter,1)=*cdt_sjta++;
com1_tl(cdt_in_counter,2)=*cdt_sjta++;
com1_tl(cdt_in_counter,3)=*cdt_sjta++;
com1_tl(cdt_in_counter,4)=*cdt_sjta++;
com1_tl(cdt_in_counter,5)=bch(0);
cdt_zcj--;
cdt_tc[cdt_in_counter]=0x06;
cdt_in_counter^=0x01;
// }
}
/*********计算板数**********/
void cdt_f_cl (void)
{
IO_BYTE i,j,k;
i=0;j=0x10;
k=cdt_yc_num;
if (k>2)
{
k-=2;
if(k>6) k=6;
i=k*0x10;
}
cdt_f_led[0]=j;
cdt_f_led[1]=j;
cdt_f_led[2]=i;
k=cdt_yx_num;
if(k>16) k=16;
cdt_f_led[3]=k;
}
void cdt_cl_num(void)
{
IO_WORD i;
i=com1_para(12);
i=(i<<8)+com1_para(11);
cdt_yc_num=(i+31)/32;
i=com1_para(14);
i=(i<<8)+com1_para(13);
cdt_yx_num=(i+31)/32;
}
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: //FB
yc_fm1_counter++;
break;
case 0x01: //FC
yc_fm1_counter++;
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_3l_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_3l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
break;
case 0x04: //转发
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_3l_1x(yc_fm1_counter)=data;
yc_fm1_counter++;
break;
case 0x05: //周波
yc_fm1_counter++;
break;
case 0x06: //总加
yc_fm1_counter++;
break;
default: yc_fm1_counter++;
}
}
}
void cdt_move(void)
{
IO_WORD i,l,r,m,n;
IO_BYTE k,j;
r=0x0000;
m=0x00;
i=com1_para(14);
i=(i<<8)|com1_para(13);
if (i>512) i=512;
i=(i+0x0f)&0xfff0;
while(i!=0)
{
WDTC_WTE=0;
l=0x00;
for (k=0;k<16;k++)
{
WDTC_WTE=0;
l=l>>1;
if (yx_fm_para1(r)!=0xff)
{
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)
{
IO_WORD m;
unsigned long d;
cdt_move();
if(power_count!=0)
{
for(m=0;m<16;m++)
{
yx_2l_1x(m*2)=yx_3l_1x(m*2);
yx_2l_1x(m*2+1)=yx_3l_1x(m*2+1);
}
power_count--;
}
else
{
if(cdt_yx_num>16) cdt_yx_num=16;
for(m=0;m<cdt_yx_num;m++)
{
WDTC_WTE=0;
d=yx_3l_1x(m*2+1)^yx_2l_1x(m*2+1);
d=(d<<16)|(yx_3l_1x(m*2)^yx_2l_1x(m*2));
if(d!=0)
{
cdt_cos_datcl(m);
cdt_soe_datcl(m,d);
}
}
}
}
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>63) 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);
sys_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))
{
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;
}
}
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);
//
soe_txmark1_d7=1;
//
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 + -