📄 cdt0.c
字号:
else
{
switch (yc_fm_para0(yc_fm0_counter*6))//判功能码
{
case 0x00: //new
/*if((yc_fm_para0(yc_fm0_counter*6+1)&0x3f)==0x3c)
{
l=yc_fm_para0x(yc_fm0_counter*3+1);
data=ioyc_1lx(l)&0x0fff;
yc_2l_0x(yc_fm0_counter)=data;
yc_fm0_counter++;
}
else
{
l=(yc_fm_para0(yc_fm0_counter*6+1)-1)*18+yc_fm_para0x(yc_fm0_counter*3+1);
data=yc_1lx(l)&0x0fff;
yc_2l_0x(yc_fm0_counter)=data;
yc_fm0_counter++;
}*/
yc_fm0_counter++;
break;
case 0x01: //FC
yc_fm0_counter++;
break;
case 0x02: //MCK
l=(yc_fm_para0(yc_fm0_counter*6+1)-1)*18+yc_fm_para0x(yc_fm0_counter*3+1);//偏移量
data=(yc_1lx(l)>>4)&0x0fff;//取数
yc_2l_0x(yc_fm0_counter)=data;
yc_fm0_counter++;
break;
case 0x03: //MTY
l=(yc_fm_para0(yc_fm0_counter*6+1)-1)*18+yc_fm_para0x(yc_fm0_counter*3+1);
data=(yc_1lx(l)>>4)&0x0fff;
yc_2l_0x(yc_fm0_counter)=data;
yc_fm0_counter++;
break;
case 0x04: //转发
/*if((yc_fm_para0(yc_fm0_counter*6+1)&0x3f)==0x3c)
{
l=yc_fm_para0x(yc_fm0_counter*3+1);
data=ioyc_1lx(l)&0x0fff;
yc_2l_0x(yc_fm0_counter)=data;
yc_fm0_counter++;
}
else
{*/
l=(yc_fm_para0(yc_fm0_counter*6+1)-1)*18+yc_fm_para0x(yc_fm0_counter*3+1);
data=yc_1lx(l)&0x0fff;
yc_2l_0x(yc_fm0_counter)=data;
yc_fm0_counter++;
//}
break;
case 0x05: //周波
yc_fm0_counter++;
break;
case 0x06: //总加
yc_fm0_counter++;
break;
}
}
}
//----------------------------------------------------------
/*void cdt_ddcl0(void)
{
IO_WORD l,datal,datah;
IO_BYTE sort;
l=com0_para(16);
l=(l<<8)+com0_para(15);
if((dd_fm0_counter>=l)||(dd_fm_para0(dd_fm0_counter*2)==0xff))
{
dd_fm0_counter=0;
}
sort=dd_fm_para0(dd_fm0_counter*2);
sort=(sort>>6)&0x03;
switch (sort)//判模块类型
{
case 0x00: //new
if((dd_fm_para0(dd_fm0_counter*2)&0x3f)==0x3c)
{
l=dd_fm_para0(dd_fm0_counter*2+1);
datal=iodd_1lx(l*2);
datah=iodd_1lx(l*2+1)&0x20ff;
dd_2l_0x(dd_fm0_counter*2)=datal;
dd_2l_0x(dd_fm0_counter*2+1)=datah;
dd_fm0_counter++;
}
else
{
l=((dd_fm_para0(dd_fm0_counter*2)&0x3f)-1)*4+dd_fm_para0(dd_fm0_counter*2+1);//偏移量
datal=dd_1lx(l*2); //取数
datah=dd_1lx(l*2+1)&0x20ff;
dd_2l_0x(dd_fm0_counter*2)=datal;
dd_2l_0x(dd_fm0_counter*2+1)=datah;
dd_fm0_counter++;
}
break;
case 0x01: //MCK
break;
case 0x02: //转发
if((dd_fm_para0(dd_fm0_counter*2)&0x3f)==0x3c)
{
l=dd_fm_para0(dd_fm0_counter*2+1);
datal=iodd_1lx(l*2);
datah=iodd_1lx(l*2+1)&0x20ff;
dd_2l_0x(dd_fm0_counter*2)=datal;
dd_2l_0x(dd_fm0_counter*2+1)=datah;
dd_fm0_counter++;
}
else
{
l=((dd_fm_para0(dd_fm0_counter*2)&0x3f)-1)*4+dd_fm_para0(dd_fm0_counter*2+1);//偏移量
datal=dd_1lx(l*2); //取数
datah=dd_1lx(l*2+1)&0x20ff;
dd_2l_0x(dd_fm0_counter*2)=datal;
dd_2l_0x(dd_fm0_counter*2+1)=datah;
dd_fm0_counter++;
}
break;
case 0x03: //备用
break;
}
}
*/
//----------------------------------------------------------
void cdt_move0(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_fm0_counter*32)>=i)
{
yx_fm0_counter=0;
}
for(bb=0;bb<2;bb++)
{
WDTC_WTE=0;
l=0x00;
for (k=0;k<16;k++)
{
WDTC_WTE=0;
ll=(yx_fm0_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_0x(yx_fm0_counter*2+bb)=l;
}
}
void cdt_yxcl0(void)
{
unsigned long d;
cdt_move0();
if(power_count!=0)
{
if (yx_fm0_counter!=0)
{
yx_2l_0x(yx_fm0_counter*2)=yx_3l_0x(yx_fm0_counter*2);
yx_2l_0x(yx_fm0_counter*2+1)=yx_3l_0x(yx_fm0_counter*2+1);
yx_fm0_counter++;
}
else
{
power_count--;
yx_2l_0x(yx_fm0_counter*2)=yx_3l_0x(yx_fm0_counter*2);
yx_2l_0x(yx_fm0_counter*2+1)=yx_3l_0x(yx_fm0_counter*2+1);
yx_fm0_counter++;
}
}
else
{
d=yx_3l_0x(yx_fm0_counter*2+1)^yx_2l_0x(yx_fm0_counter*2+1);
d=(d<<16)|(yx_3l_0x(yx_fm0_counter*2)^yx_2l_0x(yx_fm0_counter*2));
if(d!=0)
{
cdt_cos_datcl0(yx_fm0_counter);
cdt_soe_datcl0(yx_fm0_counter,d);
}
yx_fm0_counter+=1;
}
}
void cdt_rec0(void) //////////////COM0 接收中断
{
IO_BYTE i,j;
com_int_tmout[0]=0; //add 03-2-8
com0_rl(cdt_rc10)=com_port0_dat; //接收
cdt_rc10++;
cdt_rc0++;
if (cdt_rc10>63) cdt_rc10=cdt_rc0=0;
/* i=0x01;
rrb0(i);
i&=0x10;
if (i!=0)
{
i=0x00;j=0x30;
wrb0(i,j);
}*/
i=0x00;j=0x38;
wrb0(i,j);
cdt_time_mark0=0;
}
void yksele0(IO_BYTE l)
{
IO_BYTE k;
k=bchr0(l+8);
if((com0_rl1(l+8)==0xe0) && (com0_rl1(l+13)==k))
{
cyksm1();
cyk_sel_num=com0_rl1(l+10);
cyk_sel_num=(cyk_sel_num<<8)+com0_rl1(l+11);
cdt_ykmark0=0x10;
yktime1=18000;
yktime=0x00;
//yk_time1=1;
}
}
void ykexcu0(IO_BYTE l)
{
if((com0_rl1(l+8)==0xe2) && com0_rl1(l+13)==bchr0(l+8))
{
cyk_exe_num=com0_rl1(l+10);
cyk_exe_num=(cyk_exe_num<<8)+com0_rl1(l+11);
cdt_ykmark0=0x10;
yk_time=0x0;
//yk_time1=1;
}
}
void ykcanc0(IO_BYTE l)
{
if((com0_rl1(l+8)==0xe3) && com0_rl1(l+13)==bchr0(l+8))
{
cyk_chx_num=com0_rl1(l+10);
cyk_chx_num=(cyk_chx_num<<8)+com0_rl1(l+11);
cdt_ykmark0=0x10;
//yk_time1=1;
}
}
/***********对时************/
void upda_time0(IO_BYTE l)
{
if((com0_rl1(l+8)==0xee) && com0_rl1(l+13)==bchr0(l+8)&& (com0_rl1(l+14)==0xef) && com0_rl1(l+19)==bchr0(l+14))
{
sys_msecond=(com0_rl1(l+10)<<8)+(com0_rl1(l+9)&0x00ff)+500;
sys_second=com0_rl1(l+11);
second=com0_rl1(l+11);
sys_minute=com0_rl1(l+12);
minute=com0_rl1(l+12);
sys_hour=com0_rl1(l+15);
sys_day=com0_rl1(l+16);
sys_month=com0_rl1(l+17);
sys_year=com0_rl1(l+18);
}
}
/**********接收处理**********/
void cdt_rec_cl0(void)
{
IO_BYTE i,l,k;
l=cdt_rc0;
for (i=0;i<l;i++) com0_rl1(i)=com0_rl(i);
cdt_rc0=cdt_rc10=0;
for (i=0;i<l;i++)
{
if ((com0_rl1(i)==com0_para(4))&&(com0_rl1(i+1)==com0_para(5))&&(com0_rl1(i+2)==0x71)/*&&(com0_rl1(i+6)==com0_para(8))*/)
{
k=bchr0(i+2);
if(com0_rl1(i+7)==k)
{
cdt_type0=com0_rl1(i+3);
switch(cdt_type0)
{
case 0x61: yksele0(i); //遥控选择
break;
case 0xc2: ykexcu0(i); //遥控执行
break;
case 0xb3: ykcanc0(i); //遥控撤消
break;
case 0xf4: yksele0(i); //遥调选择
break;
case 0x85: ykexcu0(i); //遥调执行
break;
case 0x26: ykcanc0(i); //遥调撤消
break;
case 0x7a: upda_time0(i);//对时
break;
}
}
return;
}
}
}
void cdt_cos_datcl0(IO_WORD m)
{
cdt_cos_data0(cos_in_pointer0+0)=0xf0+m;
cdt_cos_data0(cos_in_pointer0+1)=yx_3l_0(m*4);
cdt_cos_data0(cos_in_pointer0+2)=yx_3l_0(m*4+1);
cdt_cos_data0(cos_in_pointer0+3)=yx_3l_0(m*4+2);
cdt_cos_data0(cos_in_pointer0+4)=yx_3l_0(m*4+3);
//
soe_txmark0_d7=1;
//
cos_in_pointer0+=6;
if (cos_in_pointer0>=600) cos_in_pointer0=0;
yx_2l_0(m*4)=yx_3l_0(m*4);
yx_2l_0(m*4+1)=yx_3l_0(m*4+1);
yx_2l_0(m*4+2)=yx_3l_0(m*4+2);
yx_2l_0(m*4+3)=yx_3l_0(m*4+3);
}
void cdt_soe_datcl0(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_data0(soe_in_pointer0+0)=0x80;
cdt_soe_data0(soe_in_pointer0+1)=sys_msecond&0x00ff;
cdt_soe_data0(soe_in_pointer0+2)=(sys_msecond>>8)&0x00ff;
cdt_soe_data0(soe_in_pointer0+3)=sys_second;
cdt_soe_data0(soe_in_pointer0+4)=sys_minute;
cdt_soe_data0(soe_in_pointer0+6)=0x81;
cdt_soe_data0(soe_in_pointer0+7)=sys_hour;
cdt_soe_data0(soe_in_pointer0+8)=sys_day;
cdt_soe_data0(soe_in_pointer0+9)=(m*32+s)&0x00ff;
l=yx_3l_0x(m*2+1);
l=(l<<16)|yx_3l_0x(m*2);
if((l>>s)&0x01)
cdt_soe_data0(soe_in_pointer0+10)=((m*32+s)>>8)|0x80;
else {cdt_soe_data0(soe_in_pointer0+10)=(m*32+s)>>8; }
soe_in_pointer0+=12;
if (soe_in_pointer0>=1200) soe_in_pointer0=0;
}
d>>=0x01;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -