⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdt0.c

📁 关于电力CDT规约的程序.超值啊!对于学习CDT的有帮助.
💻 C
📖 第 1 页 / 共 3 页
字号:
    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 + -