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

📄 cdt1.c

📁 关于与计算机超级终端通讯的小程序.(RS232)
💻 C
📖 第 1 页 / 共 3 页
字号:
//--------------------CDT规约处理-------------------------------
void cdt_cl(void)
{
    if(cdt_rc!=0)
    {
        if(cdt_time_mark>10)
        {
            cdt_rec_cl();
        }
    }
    if (cdt_tmark_a0==0)
    {
        switch (cdt_zcj)
        {
            case 0x00:
                switch (cdt_zxj)
                {
                    case 0x00:
                        sjch(); //soe
                        break;
                    case 0x01:
                        sjdd();//电度
                        break;
                    default :
                        if (cdt_bz_a0==1)     {sjsoe();} 
                        else {sjzz12();}
                }
                break;
            default :   sjbw();
        }
        cdt_tmark_a0=1;
    }
    if ((run_mark_a1==1)&&(run_mark_a0==0))
    {
      if(com_int_tmout[1]>3)
      {
        //PDR5_P51=0;//03-1-12
    //__wait_nop();
    //__wait_nop();
    //PDR5_P51=1;
	com_int_tmout[1]=0;
	init_com1();
	ICR02=6;
      }
    }
}
/*********大循环完成*********/
void    sjch (void)
{
  if(soe_in_pointer!=soe_out_pointer)  cdt_soejs=3;
  cdt_f_cl();
  if(cdt_yc_num>8) cdt_yc_num=8;
  cdt_zxj=zcou[cdt_yc_num];
  cdt_zmark=zbzz[cdt_yc_num];
  cdt_zxcount=0;
  sjzz12();
}
/*********电度*********/
void    sjdd (void)
{    
    IO_WORD a;
    if(cdt_bz_a1==1)    ////定时电度标志
    {      
      a=com1_para(16);
      a=(a<<8)+com1_para(15);
      cdt_dd_num=a;      
      if(a>64) a=64;      
      cdt_zlmark=0x46;
      cdt_zxcount++;
      cdt_zcj=a;
      cdt_gong=0xa0;
      cdt_sjta=(__far IO_BYTE*) (&dd_2l_1(0));
      com1_tl(cdt_in_counter,0)=com1_para(4);
      com1_tl(cdt_in_counter,1)=com1_para(5);
      com1_tl(cdt_in_counter,2)=com1_para(4);
      com1_tl(cdt_in_counter,3)=com1_para(5);
      com1_tl(cdt_in_counter,4)=com1_para(4);
      com1_tl(cdt_in_counter,5)=com1_para(5);
      com1_tl(cdt_in_counter,6)=ddzz[0];
      com1_tl(cdt_in_counter,7)=ddzz[1];
      com1_tl(cdt_in_counter,8)=cdt_zcj;
      com1_tl(cdt_in_counter,9)=com1_para(8);//ddzz[3];
      com1_tl(cdt_in_counter,10)=ddzz[4];
      com1_tl(cdt_in_counter,11)=bch(6);      
      cdt_tc[cdt_in_counter]=12;
      cdt_in_counter^=0x01;
      cdt_zxj--;
      cdt_bz_a1=0;//////清电度标志
      cdt_dd_time=0;              
    }    
    else
    {
    	sjzz12();
    }   
}
/**********组变位*********/
void sjyxbw(void)
{
    com1_tl(cdt_in_counter,0)=cdt_cos_data(cos_out_pointer+0);
    com1_tl(cdt_in_counter,1)=cdt_cos_data(cos_out_pointer+1);
    com1_tl(cdt_in_counter,2)=cdt_cos_data(cos_out_pointer+2);
    com1_tl(cdt_in_counter,3)=cdt_cos_data(cos_out_pointer+3);
    com1_tl(cdt_in_counter,4)=cdt_cos_data(cos_out_pointer+4);
    com1_tl(cdt_in_counter,5)=bch(0);
    com1_tl(cdt_in_counter,6)=cdt_cos_data(cos_out_pointer+0);
    com1_tl(cdt_in_counter,7)=cdt_cos_data(cos_out_pointer+1);
    com1_tl(cdt_in_counter,8)=cdt_cos_data(cos_out_pointer+2);
    com1_tl(cdt_in_counter,9)=cdt_cos_data(cos_out_pointer+3);
    com1_tl(cdt_in_counter,10)=cdt_cos_data(cos_out_pointer+4);
    com1_tl(cdt_in_counter,11)=bch(6);
    com1_tl(cdt_in_counter,12)=cdt_cos_data(cos_out_pointer+0);
    com1_tl(cdt_in_counter,13)=cdt_cos_data(cos_out_pointer+1);
    com1_tl(cdt_in_counter,14)=cdt_cos_data(cos_out_pointer+2);
    com1_tl(cdt_in_counter,15)=cdt_cos_data(cos_out_pointer+3);
    com1_tl(cdt_in_counter,16)=cdt_cos_data(cos_out_pointer+4);
    com1_tl(cdt_in_counter,17)=bch(12);
    cos_out_pointer+=6;
    if (cos_out_pointer>=600) cos_out_pointer=0;
    cdt_gong+=3;
    cdt_zcj-=3;
    cdt_tc[cdt_in_counter]=18;
    cdt_in_counter^=0x01;
    cdt_sjta+=12;
}
void ykfj_cl(void)
{
    if (cdt_ykmark&01)
    {
        if (cdt_zlmark==0x44) {sjzz6();return;}
        if (cdt_zcj<=2) {sjzz6();return;}
        com1_tl(cdt_in_counter,0)=0xe1;
        com1_tl(cdt_in_counter,1)=yk_xz;
        com1_tl(cdt_in_counter,2)=yk_dx;
        com1_tl(cdt_in_counter,3)=yk_xz;
        com1_tl(cdt_in_counter,4)=yk_dx;
        com1_tl(cdt_in_counter,5)=bch(0);
        com1_tl(cdt_in_counter,6)=0xe1;
        com1_tl(cdt_in_counter,7)=yk_xz;
        com1_tl(cdt_in_counter,8)=yk_dx;
        com1_tl(cdt_in_counter,9)=yk_xz;
        com1_tl(cdt_in_counter,10)=yk_dx;
        com1_tl(cdt_in_counter,11)=bch(6);
        com1_tl(cdt_in_counter,12)=0xe1;
        com1_tl(cdt_in_counter,13)=yk_xz;
        com1_tl(cdt_in_counter,14)=yk_dx;
        com1_tl(cdt_in_counter,15)=yk_xz;
        com1_tl(cdt_in_counter,16)=yk_dx;
        com1_tl(cdt_in_counter,17)=bch(12);
        cdt_gong+=3;
        cdt_zcj-=3;
        cdt_tc[cdt_in_counter]=18;
        cdt_in_counter^=0x01;
        cdt_ykmark=0x00;
        cdt_sjta+=12;
        return;
    }
    if (cdt_ykmark&02)
    {
        if (cdt_zlmark==0x44) {sjzz6();return;}
        if (cdt_zcj<=2) {sjzz6();return;}
        com1_tl(cdt_in_counter,0)=0xe1;
        com1_tl(cdt_in_counter,1)=0x00;
        com1_tl(cdt_in_counter,2)=0x00;
        com1_tl(cdt_in_counter,3)=yk_xz;
        com1_tl(cdt_in_counter,4)=yk_dx;
        com1_tl(cdt_in_counter,5)=bch(0);
        com1_tl(cdt_in_counter,6)=0xe1;
        com1_tl(cdt_in_counter,7)=0x00;
        com1_tl(cdt_in_counter,8)=0x00;
        com1_tl(cdt_in_counter,9)=yk_xz;
        com1_tl(cdt_in_counter,10)=yk_dx;
        com1_tl(cdt_in_counter,11)=bch(6);
        com1_tl(cdt_in_counter,12)=0xe1;
        com1_tl(cdt_in_counter,13)=0x00;
        com1_tl(cdt_in_counter,14)=0x00;
        com1_tl(cdt_in_counter,15)=yk_xz;
        com1_tl(cdt_in_counter,16)=yk_dx;
        com1_tl(cdt_in_counter,17)=bch(12);
        cdt_gong+=3;
        cdt_zcj-=3;
        cdt_tc[cdt_in_counter]=18;
        cdt_in_counter^=0x01;
        cdt_sjta+=12;
        cdt_ykmark=0x00;
        return;
    }
    cdt_ykmark=0x00;
    sjzz6();
}
void    sjbw (void)
{
    if (cdt_zlmark==0x46) {sjzz6();}
    else
    {
        if (cos_out_pointer==cos_in_pointer)
        {
          if(cdt_ykmark&0x80)
          {
            ykfj_cl();
            return;
          }
          sjzz6();
        }
        else
        {
          if(cdt_zlmark==0x44)
          {
            cos_out_pointer=cos_in_pointer;
            sjzz6();
          }
          else
          {
            if(cdt_zcj<3)
            {
              sjzz6();
            }
            else
            {
              sjyxbw();
            }
          }
        }
    }
}
/***  上行组定值  ***/
void  makedz (void)
{      
      cdt_zcj=(dzh_len+6+3)/4;
      dzh_2l_1(0)=dzh_2l_1(7);//0xa0;         /* 备用 */  
      dzh_2l_1(2)=dzh_len-1;      /* 帧长 */
      dzh_2l_1(3)=dz_id;	/* 模块地址 */
      dzh_2l_1(5)=0x00;         /* 帧计数 */
      if(cdt_dzh_a3==1)        
      {
		  dzh_2l_1(1)=0x27;  /*命令码:传定值回送 */
	      switch(dzh_len-1)
		  {  
      	    case 0x35:       
      	    dzh_2l_1(4)=0x00; /*装置类别:线路 */
      	    break;
      	    case 0x29:       
      	    dzh_2l_1(4)=0x01;         /* 电容 */
      	    break;
      	    case 0x23:       
         	dzh_2l_1(4)=0x02;         /* 差动 */
      	    break;
      	    case 0x39:       
      	    dzh_2l_1(4)=0x03;         /* 后备 */
            break;
		  }  
	  }          
      else if(cdt_dzh_a4==1)  
      {
		  dzh_2l_1(1)=0x28;           /* 写定值回送 */ 
          dzh_2l_1(4)=dzh_type;
	  }
      else if(cdt_dzh_a5==1)  
      {
		  dzh_2l_1(1)=0x29;           /* 读定值回送 */      
          switch(dzh_len-1)
		  {  
      	    case 0x35:       
        	dzh_2l_1(4)=0x00; /*装置类别:线路 */
      	    break;
      	    case 0x29:       
      	    dzh_2l_1(4)=0x01;         /* 电容 */
      	    break;
      	    case 0x23:       
      	    dzh_2l_1(4)=0x02;         /* 差动 */
      	    break;
      	    case 0x39:       
      	    dzh_2l_1(4)=0x03;         /* 后备 */
      	    break;
		  }  
	  }
      cdt_gong=0x00;
      cdt_sjta=(__far IO_BYTE*) (&dzh_2l_1(0));
      com1_tl(cdt_in_counter,0)=com1_para(4);
      com1_tl(cdt_in_counter,1)=com1_para(5);
      com1_tl(cdt_in_counter,2)=com1_para(4);
      com1_tl(cdt_in_counter,3)=com1_para(5);
      com1_tl(cdt_in_counter,4)=com1_para(4);
      com1_tl(cdt_in_counter,5)=com1_para(5);
      com1_tl(cdt_in_counter,6)=dzhz[0];
      com1_tl(cdt_in_counter,7)=dzhz[1];
      com1_tl(cdt_in_counter,8)=cdt_zcj;
      com1_tl(cdt_in_counter,9)=com1_para(8);//dzhz[3];
      com1_tl(cdt_in_counter,10)=dzhz[4];
      com1_tl(cdt_in_counter,11)=bch(6);      
      cdt_tc[cdt_in_counter]=12;
      cdt_in_counter^=0x01;      
      cdt_dzh=0;//////清定值标志  
      
}
/*********soe***********/
void    sjsoe (void)
{
    cdt_zlmark=0x45;
    com1_tl(cdt_in_counter,0)=com1_para(4);
    com1_tl(cdt_in_counter,1)=com1_para(5);
    com1_tl(cdt_in_counter,2)=com1_para(4);
    com1_tl(cdt_in_counter,3)=com1_para(5);
    com1_tl(cdt_in_counter,4)=com1_para(4);
    com1_tl(cdt_in_counter,5)=com1_para(5);
    com1_tl(cdt_in_counter,6)=soez[0];
    com1_tl(cdt_in_counter,7)=soez[1];
    com1_tl(cdt_in_counter,8)=soez[2];
    com1_tl(cdt_in_counter,9)=com1_para(8);//soez[3];
    com1_tl(cdt_in_counter,10)=soez[4];
    com1_tl(cdt_in_counter,11)=bch(6);

    com1_tl(cdt_in_counter,12)=cdt_soe_data(soe_out_pointer+0);
    com1_tl(cdt_in_counter,13)=cdt_soe_data(soe_out_pointer+1);
    com1_tl(cdt_in_counter,14)=cdt_soe_data(soe_out_pointer+2);
    com1_tl(cdt_in_counter,15)=cdt_soe_data(soe_out_pointer+3);
    com1_tl(cdt_in_counter,16)=cdt_soe_data(soe_out_pointer+4);
    com1_tl(cdt_in_counter,17)=bch(12);
    com1_tl(cdt_in_counter,18)=cdt_soe_data(soe_out_pointer+6);
    com1_tl(cdt_in_counter,19)=cdt_soe_data(soe_out_pointer+7);
    com1_tl(cdt_in_counter,20)=cdt_soe_data(soe_out_pointer+8);
    com1_tl(cdt_in_counter,21)=cdt_soe_data(soe_out_pointer+9);
    com1_tl(cdt_in_counter,22)=cdt_soe_data(soe_out_pointer+10);
    com1_tl(cdt_in_counter,23)=bch(18);
    cdt_tc[cdt_in_counter]=24;
    cdt_in_counter^=0x01;
    cdt_bz_a0=0;
    cdt_soejs--;
    if (cdt_soejs==0)
    {
        cdt_soejs=0;
        soe_out_pointer+=12;
        if (soe_out_pointer>=1200) soe_out_pointer=0;
    }
}
/************组报头**********/
void    sjzz12 (void)
{
  if(cdt_dzh_a7==1)
  { makedz(); }
  else
  {
    cdt_f_cl();
    cdt_zlmark=*(cdt_zxta[cdt_yc_num]+cdt_zxcount);
    cdt_zxcount++;
    if ((cdt_zlmark==cdt_zmark)&&(cdt_soejs!=0)) cdt_bz_a0=0x01;
    cdt_zcj=cdt_f_led[cdt_zlmark-0x41];
    cdt_gong=gongg[cdt_zlmark-0x41];
    cdt_sjta=(__far IO_BYTE*)com_sjdz[cdt_zlmark-0x41];

    com1_tl(cdt_in_counter,0)=com1_para(4);
    com1_tl(cdt_in_counter,1)=com1_para(5);
    com1_tl(cdt_in_counter,2)=com1_para(4);
    com1_tl(cdt_in_counter,3)=com1_para(5);
    com1_tl(cdt_in_counter,4)=com1_para(4);
    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)=com1_para(8);//*(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;
    /////////////////^.^电度计算add to 03-02-12
    
}
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_dzhcl(IO_BYTE l)
{
  IO_BYTE  bh_gong,y,len;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -