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

📄 cdt.c

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