📄 cdt2.c
字号:
sjzz62();
}
else
{
if(cdt_zlmark2==0x44)
{
cos_out_pointer2=cos_in_pointer2;
sjzz62();
}
else
{
if(cdt_zcj2<3)
{
sjzz62();
}
else
{
sjyxbw2();
}
}
}
}
}
/*********soe***********/
void sjsoe2 (void)
{
cdt_zlmark2=0x45;
com2_tl(cdt_in_counter2,0)=com0_para(4);
com2_tl(cdt_in_counter2,1)=com0_para(5);
com2_tl(cdt_in_counter2,2)=com0_para(4);
com2_tl(cdt_in_counter2,3)=com0_para(5);
com2_tl(cdt_in_counter2,4)=com0_para(4);
com2_tl(cdt_in_counter2,5)=com0_para(5);
com2_tl(cdt_in_counter2,6)=soez[0];
com2_tl(cdt_in_counter2,7)=soez[1];
com2_tl(cdt_in_counter2,8)=soez[2];
com2_tl(cdt_in_counter2,9)=com0_para(8);//soez[3];
com2_tl(cdt_in_counter2,10)=soez[4];
com2_tl(cdt_in_counter2,11)=bch2(6);
com2_tl(cdt_in_counter2,12)=cdt_soe_data2(soe_out_pointer2+0);
com2_tl(cdt_in_counter2,13)=cdt_soe_data2(soe_out_pointer2+1);
com2_tl(cdt_in_counter2,14)=cdt_soe_data2(soe_out_pointer2+2);
com2_tl(cdt_in_counter2,15)=cdt_soe_data2(soe_out_pointer2+3);
com2_tl(cdt_in_counter2,16)=cdt_soe_data2(soe_out_pointer2+4);
com2_tl(cdt_in_counter2,17)=bch2(12);
com2_tl(cdt_in_counter2,18)=cdt_soe_data2(soe_out_pointer2+6);
com2_tl(cdt_in_counter2,19)=cdt_soe_data2(soe_out_pointer2+7);
com2_tl(cdt_in_counter2,20)=cdt_soe_data2(soe_out_pointer2+8);
com2_tl(cdt_in_counter2,21)=cdt_soe_data2(soe_out_pointer2+9);
com2_tl(cdt_in_counter2,22)=cdt_soe_data2(soe_out_pointer2+10);
com2_tl(cdt_in_counter2,23)=bch2(18);
cdt_tc2[cdt_in_counter2]=24;
cdt_in_counter2^=0x01;
cdt_bz2_a0=0;
cdt_soejs2--;
if (cdt_soejs2==0)
{
cdt_soejs2=0;
soe_out_pointer2+=12;
if (soe_out_pointer2>=1200) soe_out_pointer2=0;
}
}
/************组报头**********/
void sjzz122 (void)
{
cdt_f_cl2();
cdt_zlmark2=*(cdt_zxta[cdt_yc_num2]+cdt_zxcount2);
cdt_zxcount2++;
if ((cdt_zlmark2==cdt_zmark2)&&(cdt_soejs2!=0)) cdt_bz2_a0=0x01;
cdt_zcj2=cdt_f_led2[cdt_zlmark2-0x41];
cdt_gong2=gongg[cdt_zlmark2-0x41];
cdt_sjta2=(__far IO_BYTE*)com_sjdz2[cdt_zlmark2-0x41];
com2_tl(cdt_in_counter2,0)=com0_para(4);
com2_tl(cdt_in_counter2,1)=com0_para(5);
com2_tl(cdt_in_counter2,2)=com0_para(4);
com2_tl(cdt_in_counter2,3)=com0_para(5);
com2_tl(cdt_in_counter2,4)=com0_para(4);
com2_tl(cdt_in_counter2,5)=com0_para(5);
com2_tl(cdt_in_counter2,6)=*tbz[cdt_zlmark2-0x41];
com2_tl(cdt_in_counter2,7)=*(tbz[cdt_zlmark2-0x41]+1);
com2_tl(cdt_in_counter2,8)=cdt_zcj2;
com2_tl(cdt_in_counter2,9)=com0_para(8);//*(tbz[cdt_zlmark2-0x41]+3);
com2_tl(cdt_in_counter2,10)=*(tbz[cdt_zlmark2-0x41]+4);
com2_tl(cdt_in_counter2,11)=bch2(6);
cdt_tc2[cdt_in_counter2]=12;
cdt_in_counter2^=0x01;
cdt_zxj2--;
}
/**********组信息字***********/
void sjzz62 (void)
{
if ((cdt_zcj2==0x01)&&(cdt_zlmark2==cdt_zmark2))
{
com2_tl(cdt_in_counter2,0)=0x8a;
com2_tl(cdt_in_counter2,1)=zbzc2[0];
com2_tl(cdt_in_counter2,2)=zbzc2[1];
com2_tl(cdt_in_counter2,3)=zbzc2[0];
com2_tl(cdt_in_counter2,4)=zbzc2[1];
com2_tl(cdt_in_counter2,5)=bch2(0);
cdt_gong2++;
cdt_zcj2--;
cdt_tc2[cdt_in_counter2]=0x06;
cdt_in_counter2^=0x01;
}
else
{
com2_tl(cdt_in_counter2,0)=cdt_gong2++;
com2_tl(cdt_in_counter2,1)=*cdt_sjta2++;
com2_tl(cdt_in_counter2,2)=*cdt_sjta2++;
com2_tl(cdt_in_counter2,3)=*cdt_sjta2++;
com2_tl(cdt_in_counter2,4)=*cdt_sjta2++;
com2_tl(cdt_in_counter2,5)=bch2(0);
cdt_zcj2--;
cdt_tc2[cdt_in_counter2]=0x06;
cdt_in_counter2^=0x01;
}
}
/*********计算板数**********/
void cdt_f_cl2 (void)
{
IO_BYTE i,j,k;
i=0;j=0x10;
k=cdt_yc_num2;
if (k>2)
{
k-=2;
if(k>6) k=6;
i=k*0x10;
}
cdt_f_led2[0]=j;
cdt_f_led2[1]=j;
cdt_f_led2[2]=i;
k=cdt_yx_num2;
if(k>16) k=16;
cdt_f_led2[3]=k;
}
void cdt_cl_num2(void)
{
IO_WORD i;
i=com0_para(12);
i=(i<<8)+com0_para(11);
cdt_yc_num2=(i+31)/32;
i=com0_para(14);
i=(i<<8)+com0_para(13);
cdt_yx_num2=(i+31)/32;
}
void cdt_yccl2(void)
{
IO_WORD l,data;
l=com0_para(12);
l=(l<<8)+com0_para(11);
if ((yc_fm_para0x(yc_fm2_counter*3)==0xffff)||(yc_fm2_counter>l))//系数为0xffff返回
{
yc_fm2_counter=0;
return;
}
else
{
switch (yc_fm_para0(yc_fm2_counter*6))//判功能码
{
case 0x00: //new 智能单元
if((yc_fm_para0(yc_fm2_counter*6+1)&0x3f)==0x3c)
{
l=yc_fm_para0x(yc_fm2_counter*3+1);
data=ioyc_1lx(l)&0x0fff;
yc_2l_2x(yc_fm2_counter)=data;
yc_fm2_counter++;
}
else
{
l=(yc_fm_para0(yc_fm2_counter*6+1)-1)*18+yc_fm_para0x(yc_fm2_counter*3+1);
data=yc_1lx(l)&0x0fff;
yc_2l_2x(yc_fm2_counter)=data;
yc_fm2_counter++;
}
break;
case 0x01: //FC
break;
case 0x02: //MCK
l=(yc_fm_para0(yc_fm2_counter*6+1)-1)*18+yc_fm_para0x(yc_fm2_counter*3+1);//偏移量
data=(yc_1lx(l)>>4)&0x0fff;//取数
yc_2l_2x(yc_fm2_counter)=data;
yc_fm2_counter++;
break;
case 0x03: //MTY
l=(yc_fm_para0(yc_fm2_counter*6+1)-1)*18+yc_fm_para0x(yc_fm2_counter*3+1);
data=(yc_1lx(l)>>4)&0x0fff;
yc_2l_2x(yc_fm2_counter)=data;
yc_fm2_counter++;
break;
case 0x04: //转发
if((yc_fm_para0(yc_fm2_counter*6+1)&0x3f)==0x3c)
{
l=yc_fm_para0x(yc_fm2_counter*3+1);
data=ioyc_1lx(l)&0x0fff;
yc_2l_2x(yc_fm2_counter)=data;
yc_fm2_counter++;
}
else
{
l=(yc_fm_para0(yc_fm2_counter*6+1)-1)*18+yc_fm_para0x(yc_fm2_counter*3+1);
data=yc_1lx(l)&0x0fff;
yc_2l_2x(yc_fm2_counter)=data;
yc_fm2_counter++;
}
break;
case 0x05: //周波
break;
case 0x06: //总加
break;
}
}
}
void cdt_ddcl2(void)
{
IO_WORD l,datal,datah;
IO_BYTE sort;
l=com0_para(16);
l=(l<<8)+com0_para(15);
if((dd_fm2_counter>=l)||(dd_fm_para0(dd_fm2_counter*2)==0xff))
{
dd_fm2_counter=0;
}
sort=dd_fm_para0(dd_fm2_counter*2);
sort=(sort>>6)&0x03;
switch (sort)//判模块类型
{
case 0x00: //new
if((dd_fm_para0(dd_fm2_counter*2)&0x3f)==0x3c)
{
l=dd_fm_para0(dd_fm2_counter*2+1);
datal=iodd_1lx(l*2);
datah=iodd_1lx(l*2+1)&0x20ff;
dd_2l_2x(dd_fm2_counter*2)=datal;
dd_2l_2x(dd_fm2_counter*2+1)=datah;
dd_fm2_counter++;
}
else
{
l=((dd_fm_para0(dd_fm2_counter*2)&0x3f)-1)*4+dd_fm_para0(dd_fm2_counter*2+1);//偏移量
datal=dd_1lx(l*2); //取数
datah=dd_1lx(l*2+1)&0x20ff;
dd_2l_2x(dd_fm2_counter*2)=datal;
dd_2l_2x(dd_fm2_counter*2+1)=datah;
dd_fm2_counter++;
}
break;
case 0x01: //MCK
break;
case 0x02: //转发
if((dd_fm_para0(dd_fm2_counter*2)&0x3f)==0x3c)
{
l=dd_fm_para0(dd_fm2_counter*2+1);
datal=iodd_1lx(l*2);
datah=iodd_1lx(l*2+1)&0x20ff;
dd_2l_2x(dd_fm2_counter*2)=datal;
dd_2l_2x(dd_fm2_counter*2+1)=datah;
dd_fm2_counter++;
}
else
{
l=((dd_fm_para0(dd_fm2_counter*2)&0x3f)-1)*4+dd_fm_para0(dd_fm2_counter*2+1);//偏移量
datal=dd_1lx(l*2); //取数
datah=dd_1lx(l*2+1)&0x20ff;
dd_2l_2x(dd_fm2_counter*2)=datal;
dd_2l_2x(dd_fm2_counter*2+1)=datah;
dd_fm2_counter++;
}
break;
case 0x03: //备用
break;
}
}
void cdt_move2(void)
{
IO_WORD i,l,bb,n,ll;
IO_BYTE k,j;
i=com0_para(14);
i=(i<<8)|com0_para(13);
if (i>512) i=512;
i=(i+0x0f)&0xfff0;
if((yx_fm2_counter*32)>=i)
{
yx_fm2_counter=0;
}
for(bb=0;bb<2;bb++)
{
l=0x00;
for (k=0;k<16;k++)
{
ll=(yx_fm2_counter<<6)+bb*32+k*2;
l=l>>1;
if (yx_fm_para0(ll)!=0xff)
{
if((yx_fm_para0(ll)&0x3f)==0x3c)
{
n=yx_fm_para0(ll+1)/8;
j=ioyx_1l(n)<<(7-(yx_fm_para0(ll+1)%8));
l=l|((j&0x80)<<8);
}
else
{
n=((yx_fm_para0(ll)&0x3f)-1)<<3;
n=yx_fm_para0(ll+1)/8+n;
j=yx_1l(n)<<(7-(yx_fm_para0(ll+1)%8));
l=l|((j&0x80)<<8);
}
}
}
yx_3l_2x(yx_fm2_counter*2+bb)=l;
}
}
void cdt_yxcl2(void)
{
unsigned long d;
cdt_move2();
if(power_count!=0)
{
if (yx_fm2_counter!=0)
{
yx_2l_2x(yx_fm2_counter*2)=yx_3l_2x(yx_fm2_counter*2);
yx_2l_2x(yx_fm2_counter*2+1)=yx_3l_2x(yx_fm2_counter*2+1);
yx_fm2_counter++;
}
else
{
power_count--;
yx_2l_2x(yx_fm2_counter*2)=yx_3l_2x(yx_fm2_counter*2);
yx_2l_2x(yx_fm2_counter*2+1)=yx_3l_2x(yx_fm2_counter*2+1);
yx_fm2_counter++;
}
}
else
{
d=yx_3l_2x(yx_fm2_counter*2+1)^yx_2l_2x(yx_fm2_counter*2+1);
d=(d<<16)|(yx_3l_2x(yx_fm2_counter*2)^yx_2l_2x(yx_fm2_counter*2));
if(d!=0)
{
cdt_cos_datcl2(yx_fm2_counter);
cdt_soe_datcl2(yx_fm2_counter,d);
}
yx_fm2_counter+=1;
}
}
void cdt_rec2(void) //////////////COM0 接收中断
{
IO_BYTE i,j;
com_int_tmout[2]=0; //add 03-2-8
com2_rl(cdt_rc12)=com_port2_dat; //接收
cdt_rc12++;
cdt_rc2++;
if (cdt_rc12>63) cdt_rc12=cdt_rc2=0;
/* i=0x01;
rrb2(i);
i&=0x10;
if (i!=0)
{
i=0x00;j=0x30;
wrb2(i,j);
}*/
i=0x00;j=0x38;
wrb2(i,j);
cdt_time_mark2=0;
}
void yksele2(IO_BYTE l)
{
IO_BYTE k;
k=bchr2(l+8);
if((com2_rl1(l+8)==0xe0) && (com2_rl1(l+13)==k))
{
cyksm1();
cyk_sel_num=com2_rl1(l+10);
cyk_sel_num=(cyk_sel_num<<8)+com2_rl1(l+11);
cdt_ykmark2=0x10;
yktime1=18000;
yktime=0x00;
//yk_time1=1;
}
}
void ykexcu2(IO_BYTE l)
{
if((com2_rl1(l+8)==0xe2) && com2_rl1(l+13)==bchr2(l+8))
{
cyk_exe_num=com2_rl1(l+10);
cyk_exe_num=(cyk_exe_num<<8)+com2_rl1(l+11);
cdt_ykmark2=0x10;
yk_time=0x0;
//yk_time1=1;
}
}
void ykcanc2(IO_BYTE l)
{
if((com2_rl1(l+8)==0xe3) && com2_rl1(l+13)==bchr2(l+8))
{
cyk_chx_num=com2_rl1(l+10);
cyk_chx_num=(cyk_chx_num<<8)+com2_rl1(l+11);
cdt_ykmark2=0x10;
//yk_time1=1;
}
}
/***********对时************/
void upda_time2(IO_BYTE l)
{
if((com2_rl1(l+8)==0xee) && com2_rl1(l+13)==bchr2(l+8)&& (com2_rl1(l+14)==0xef) && com2_rl1(l+19)==bchr2(l+14))
{
sys_msecond=(com2_rl1(l+10)<<8)+(com2_rl1(l+9)&0x00ff)+500;
sys_second=com2_rl1(l+11);
second=com2_rl1(l+11);
sys_minute=com2_rl1(l+12);
minute=com2_rl1(l+12);
sys_hour=com2_rl1(l+15);
sys_day=com2_rl1(l+16);
sys_month=com2_rl1(l+17);
sys_year=com2_rl1(l+18);
}
}
/**********接收处理**********/
void cdt_rec_cl2(void)
{
IO_BYTE i,l,k;
l=cdt_rc2;
for (i=0;i<l;i++) com2_rl1(i)=com2_rl(i);
cdt_rc2=cdt_rc12=0;
for (i=0;i<l;i++)
{
if ((com2_rl1(i)==com0_para(4))&&(com2_rl1(i+1)==com0_para(5))&&(com2_rl1(i+2)==0x71)&&(com2_rl1(i+6)==com0_para(8)))
{
k=bchr2(i+2);
if(com2_rl1(i+7)==k)
{
cdt_type2=com2_rl1(i+3);
switch(cdt_type2)
{
case 0x61: yksele2(i); //遥控选择
break;
case 0xc2: ykexcu2(i); //遥控执行
break;
case 0xb3: ykcanc2(i); //遥控撤消
break;
case 0xf4: yksele2(i); //遥调选择
break;
case 0x85: ykexcu2(i); //遥调执行
break;
case 0x26: ykcanc2(i); //遥调撤消
break;
case 0x7a: upda_time2(i);//对时
break;
}
}
return;
}
}
}
void cdt_cos_datcl2(IO_WORD m)
{
cdt_cos_data2(cos_in_pointer2+0)=0xf0+m;
cdt_cos_data2(cos_in_pointer2+1)=yx_3l_2(m*4);
cdt_cos_data2(cos_in_pointer2+2)=yx_3l_2(m*4+1);
cdt_cos_data2(cos_in_pointer2+3)=yx_3l_2(m*4+2);
cdt_cos_data2(cos_in_pointer2+4)=yx_3l_2(m*4+3);
cos_in_pointer2+=6;
if (cos_in_pointer2>=600) cos_in_pointer2=0;
yx_2l_2(m*4)=yx_3l_2(m*4);
yx_2l_2(m*4+1)=yx_3l_2(m*4+1);
yx_2l_2(m*4+2)=yx_3l_2(m*4+2);
yx_2l_2(m*4+3)=yx_3l_2(m*4+3);
}
void cdt_soe_datcl2(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_data2(soe_in_pointer2+0)=0x80;
cdt_soe_data2(soe_in_pointer2+1)=sys_msecond&0x00ff;
cdt_soe_data2(soe_in_pointer2+2)=(sys_msecond>>8)&0x00ff;
cdt_soe_data2(soe_in_pointer2+3)=sys_second;
cdt_soe_data2(soe_in_pointer2+4)=sys_minute;
cdt_soe_data2(soe_in_pointer2+6)=0x81;
cdt_soe_data2(soe_in_pointer2+7)=sys_hour;
cdt_soe_data2(soe_in_pointer2+8)=sys_day;
cdt_soe_data2(soe_in_pointer2+9)=(m*32+s)&0x00ff;
l=yx_3l_2x(m*2+1);
l=(l<<16)|yx_3l_2x(m*2);
if((l>>s)&0x01)
cdt_soe_data2(soe_in_pointer2+10)=((m*32+s)>>8)|0x80;
else {cdt_soe_data2(soe_in_pointer2+10)=(m*32+s)>>8; }
soe_in_pointer2+=12;
if (soe_in_pointer2>=1200) soe_in_pointer2=0;
}
d>>=0x01;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -