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

📄 cdt1.c

📁 关于与计算机超级终端通讯的小程序.(RS232)
💻 C
📖 第 1 页 / 共 3 页
字号:

#include "mb90540.h"

///////////////////////////
IO_BYTE com_check[]={0x00,0x01,0x03};
IO_BYTE com_stop[]={0x04,0x0c};
IO_BYTE com_bits[]={0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0xc0};
IO_WORD com_baund[]={0x0,0x0,0x0,0x19f,0xce,0x66,0x32,0x18,0x0b,0x0};
/*extern IO_BYTE  com_check[];
extern IO_BYTE  com_stop[];
extern IO_BYTE  com_bits[];
extern IO_WORD  com_baund[];*/
extern unsigned char com_int_tmout[4];//	add 03-2-8
extern unsigned char init_flag[4];
extern IO_BYTE cdt_time_mark0,cdt_time_mark2,cdt_dd_time0,cdt_dd_time2;
extern IO_BYTE dz_id;
//IO_BYTE  dz_type;
IO_BYTE btemp=0;
IO_BYTE dzh_len,dzh_type;  /*定值长度*/
IO_BYTE cdt_gong,cdt_zxj,cdt_zcj,cdt_in_counter,cdt_out_counter,cdt_zmark,cdt_zlmark;
IO_BYTE cdt_tc[3],cdt_tc1,cdt_soejs,cdt_zxcount,cdt_type,bridge;
IO_BYTE cdt_f_led[5];
IO_BYTE zbzc[6],cdt_yc_num,cdt_yx_num,cdt_dd_num,cdt_time_mark,cdt_rc,cdt_rc1,cdt_dd_time;
IO_WORD msecond,second,minute;
IO_WORD yc_fm1_counter,dd_fm1_counter,yx_fm1_counter;
IO_WORD cos_in_pointer,cos_out_pointer,soe_in_pointer,soe_out_pointer,dzh_in_pointer;
__far IO_BYTE *cdt_sjta;
//-----------------
IO_BYTE CRC_TAB[]={0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,     //老表
                   0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D,
                   0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,     //10
                   0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D,
                   0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,     //20
                   0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD,
                   0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,     //30
                   0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD,
                   0xC7,0xC0,0xC9,0xCE,0xDB,0xDC,0xD5,0xD2,     //40
                   0xFF,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA,
                   0xB7,0xB0,0xB9,0xBE,0xAB,0xAC,0xA5,0xA2,     //50
                   0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A,
                   0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,     //60
                   0x1F,0x18,0x11,0x16,0x03,0x04,0x0D,0x0A,
                   0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,     //70
                   0x6F,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A,
                   0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,     //80
                   0xB1,0xB6,0xBF,0xB8,0xAD,0xAA,0xA3,0xA4,
                   0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,     //90
                   0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4,
                   0x69,0x6E,0x67,0x60,0x75,0x72,0x7B,0x7C,     //a0
                   0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44,
                   0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x0C,     //b0
                   0x21,0x26,0x2F,0x28,0x3D,0x3A,0x33,0x34,
                   0x4E,0x49,0x40,0x47,0x52,0x55,0x5C,0x5B,     //c0
                   0x76,0x71,0x78,0x7F,0x6A,0x6D,0x64,0x63,
                   0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,     //d0
                   0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,0x13,
                   0xAE,0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,     //e0
                   0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83,
                   0xDE,0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,     //f0
                   0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0xF3};

IO_BYTE CRC_TAB1[]={0x00,0xe0,0x70,0x90,0x38,0xd8,0x48,0xa8,   //新表
                    0x1c,0xfc,0x6c,0x8c,0x24,0xc4,0x54,0xb4,
                    0x0e,0xee,0x7e,0x9e,0x36,0xd6,0x46,0xa6,
                    0x12,0xf2,0x62,0x82,0x2a,0xca,0x5a,0xba,
                    0x07,0xe7,0x77,0x97,0x3f,0xdf,0x4f,0xaf,
                    0x1b,0xfb,0x6b,0x8b,0x23,0xc3,0x53,0xb3,
                    0x09,0xe9,0x79,0x99,0x31,0xd1,0x41,0xa1,
                    0x15,0xf5,0x65,0x85,0x2d,0xcd,0x5d,0xbd,
                    0xe3,0x03,0x93,0x73,0xdb,0x3b,0xab,0x4b,
                    0xff,0x1f,0x8f,0x6f,0xc7,0x27,0xb7,0x57,
                    0xed,0x0d,0x9d,0x7d,0xd5,0x35,0xa5,0x45,
                    0xf1,0x11,0x81,0x61,0xc9,0x29,0xb9,0x59,
                    0xe4,0x04,0x94,0x74,0xdc,0x3c,0xac,0x4c,
                    0xf8,0x18,0x88,0x68,0xc0,0x20,0xb0,0x50,
                    0xea,0x0a,0x9a,0x7a,0xd2,0x32,0xa2,0x42,
                    0xf6,0x16,0x86,0x66,0xce,0x2e,0xbe,0x5e,
                    0x91,0x71,0xe1,0x01,0xa9,0x49,0xd9,0x39,
                    0x8d,0x6d,0xfd,0x1d,0xb5,0x55,0xc5,0x25,
                    0x9f,0x7f,0xef,0x0f,0xa7,0x47,0xd7,0x37,
                    0x83,0x63,0xf3,0x13,0xbb,0x5b,0xcb,0x2b,
                    0x96,0x76,0xe6,0x06,0xae,0x4e,0xde,0x3e,
                    0x8a,0x6a,0xfa,0x1a,0xb2,0x52,0xc2,0x22,
                    0x98,0x78,0xe8,0x08,0xa0,0x40,0xd0,0x30,
                    0x84,0x64,0xf4,0x14,0xbc,0x5c,0xcc,0x2c,
                    0x72,0x92,0x02,0xe2,0x4a,0xaa,0x3a,0xda,
                    0x6e,0x8e,0x1e,0xfe,0x56,0xb6,0x26,0xc6,
                    0x7c,0x9c,0x0c,0xec,0x44,0xa4,0x34,0xd4,
                    0x60,0x80,0x10,0xf0,0x58,0xb8,0x28,0xc8,
                    0x75,0x95,0x05,0xe5,0x4d,0xad,0x3d,0xdd,
                    0x69,0x89,0x19,0xf9,0x51,0xb1,0x21,0xc1,
                    0x7b,0x9b,0x0b,0xeb,0x43,0xa3,0x33,0xd3,
                    0x67,0x87,0x17,0xf7,0x5f,0xbf,0x2f,0xcf};

IO_BYTE         scc_cdt_tab[44]={//0x09,0x40,
                0x04,0x44,     //Asyc mode,Even,1 bit stop
                0x01,0x13,     //Int all chars,Tx & EXT int en
                0x02,0x00,     //;No vector
                0x06,0x00,     //;
                0x07,0x00,     //;
                0x09,0x09,     //;CH_A & CH_B:No reset,MIE
                10,0x80,    //;CRC preset 1,NRZ,flag on idle
                            //            ;& Underrun,8 bit sysc
                11,0x56,    //;RxC=TxC=BGR Pint(TTL)
                             //           ;TRxC Pint(Output)=BRG
                12,0x3e,    // ;LSB baud rate=300bps
                13,0x02,    //;MSB baud rate,PCLK=5.5296Mhz
                14,0x03,    //;BRG source PCLK,BRG enabled
                15,0x80,    //;LATCH ABORT transtions
                3,0xc0,     //;Rx 8 bits/char
                5,0x60,    //;Tx 8 bits/char
                0,0x10,    //;Reset EXT int
                0,0x30,     //;Reset error
                5,0xea,     //;Enable transmitter
                3,0xc1,     //;Enable receiver                
             0xff,0xff };
IO_BYTE yca[]={0x71,0x61,0x10,0x01,0x00};
IO_BYTE ycb[]={0x71,0xc2,0x10,0x01,0x00};
IO_BYTE ycc[]={0x71,0xb3,0x20,0x01,0x00};
IO_BYTE yxz[]={0x71,0xf4,0x08,0x01,0x00};
IO_BYTE ddzz[]={0x71,0x85,0x20,0x01,0x00};
IO_BYTE soez[]={0x71,0x26,0x02,0x01,0x00};
IO_BYTE dzhz[]={0x71,0x3d,0x02,0x01,0x00};
IO_BYTE *tbz[]={&yca[0],&ycb[0],&ycc[0],&yxz[0]};
IO_BYTE zcou[]={11,11,21,31,31,31,31,31,31};
IO_BYTE az[]={"AAAAAAAAAAD"};
IO_BYTE abz[]={"ABABABABABABABABABABD"};
IO_BYTE abcz[]={"ABCABCABCABCABCABCABCABCABCABCD"};
IO_BYTE *cdt_zxta[]={&az[0],&az[0],&abz[0],&abcz[0],&abcz[0],&abcz[0],&abcz[0],&abcz[0],&abcz[0]};
IO_BYTE zbzz[]={"AABCCCCCC"};
IO_BYTE gongg[]={0x00,0x10,0x20,0xf0};
//__far IO_BYTE *com_sjdz[]={(__far IO_BYTE*)&yc_2l_1x(0),(__far IO_BYTE*)&yc_2l_1x(0)+64,(__far IO_BYTE*)&yc_2l_1x(0)+128,&yx_2l_1(0)};
__far IO_LWORD com_sjdz[]={(__far IO_LWORD)&yc_2l_1x(0),(__far IO_LWORD)&yc_2l_1x(0)+64,(__far IO_LWORD)&yc_2l_1x(0)+128,(__far IO_LWORD)&yx_2l_1(0)};

/////////////////////////////////////////////////////
void    sjch(void);
void    sjdd(void);
void    sjbw(void);
void    sjsoe(void);
void    sjzz12(void);
void    sjzz6(void);
void    cdt_f_cl(void);
void    cdt_cl_num(void);
void    init_cdt(void);
void    init_com1 (void);
void    cdt_send(void);
void    cdt_start_send(void);
void    cdt_cltime(void);
void    cdt_cl(void);
void    cdt_rec(void);
void    makedz (void);         /* 上行定值组帧发送 */
void    cdt_dzhcl(IO_BYTE l);  /* 下行定值接收处理 */
void    sjyxbw(void);
void    ykfj_cl(void);
void    cdt_yccl(void);
void    cdt_ddcl(void);                         
void    cdt_yxcl(void);
void    cdt_rec_cl(void);
void    cdt_move(void);
void    yksele(IO_BYTE l);
void    ykexcu(IO_BYTE l);
void    ykcanc(IO_BYTE l);
void    upda_time(IO_BYTE l);
void    cdt_soe_datcl(IO_WORD m,unsigned long int  d);
void    cdt_cos_datcl(IO_WORD m);
void    esi_b (void);
void    src_b (void);
void    wrb (IO_BYTE i,IO_BYTE j);
IO_BYTE rrb (IO_BYTE i);
IO_BYTE bch(IO_BYTE o);
IO_BYTE bchr(IO_BYTE o);
/********function**********/

void init_com1 (void)
{
	IO_BYTE i,j,k;
    IO_BYTE aa;

    i=0;
    scc_tabb(1,i)=aa=scc_cdt_tab[i];
    while (aa!=0xff)
    {
        i++;
        
        scc_tabb(1,i)=aa=scc_cdt_tab[i];
    }
    scc_tabb(1,1)=(scc_tabb(1,1)&0xf0)|com_stop[com1_para(2)]|com_check[com1_para(3)];
    scc_tabb(1,25)=scc_tabb(1,25)|com_bits[com1_para(1)];
    scc_tabb(1,27)=scc_tabb(1,27)|(com_bits[com1_para(1)]>>1);
    scc_tabb(1,33)=scc_tabb(1,33)|(com_bits[com1_para(1)]>>1);
    scc_tabb(1,35)=scc_tabb(1,35)|com_bits[com1_para(1)];
	scc_tabb(1,17)=com_baund[com1_para(6)] & 0xff;
	scc_tabb(1,19)=com_baund[com1_para(6)]>>8;
	wrb(0x09,0x40);
    i=0;k=aa=scc_tabb(1,i);
        j=scc_tabb(1,i+1);
    while (aa!=0xff)
    {
        i+=2;
        wrb(k,j);
        k=aa=scc_tabb(1,i);
        j=scc_tabb(1,i+1);
    }
    init_cdt();
}

IO_BYTE bch(IO_BYTE o)
{
  IO_BYTE	i,k;
  k=btemp=0;
  for (i=0;i<5;i++)
  {
    k=btemp^com1_tl(cdt_in_counter,i+o);
    btemp=CRC_TAB[k];
  }
  return btemp ^ 0xff;
}
IO_BYTE bchr(IO_BYTE o)
{
  IO_BYTE	i,k;
  k=btemp=0;
  for (i=0;i<5;i++)
  {
    k=btemp^com1_rl1(i+o);
    btemp=CRC_TAB[k];
  }
  return btemp ^ 0xff;
}
void init_cdt(void)
{
    cdt_cl_num();
    cdt_f_cl();
    if (cdt_yc_num>8) cdt_yc_num=8;
    cdt_tmark=3;
    bridge=0; dzh_len=0;dzh_type=0;
    cdt_in_counter=cdt_out_counter=0;
    cdt_zlmark=0x44;
    cdt_zmark=zbzz[cdt_yc_num];
    cdt_zxj=zcou[cdt_yc_num];
    cdt_zcj=cdt_f_led[3];
    cos_in_pointer=cos_out_pointer=0;
    soe_in_pointer=soe_out_pointer=0;
    dzh_in_pointer=0;
    cdt_gong=0xf0;
	cdt_sjta=(__far IO_BYTE*)com_sjdz[cdt_zlmark-0x41];		//  ^0^ add 03--2--07
    com1_tl(0,0)=com1_para(4);
    com1_tl(0,1)=com1_para(5);
    com1_tl(0,2)=com1_para(4);
    com1_tl(0,3)=com1_para(5);
    com1_tl(0,4)=com1_para(4);
    com1_tl(0,5)=com1_para(5);
    com1_tl(0,6)=yxz[0];
    com1_tl(0,7)=yxz[1];
    com1_tl(0,8)=cdt_zcj;
    com1_tl(0,9)=com1_para(8);//yxz[3];
    com1_tl(0,10)=yxz[4];
    com1_tl(0,11)=bch(6);
    cdt_in_counter^=0x01;
    cdt_bz=0x00;
    cdt_dzh=0x00;//////清定值标志
    cdt_soejs=0x00;
    cdt_tc[0]=11;
    cdt_tc[1]=0;
    cdt_tc1=1;
    cdt_rc=cdt_rc1=0;
    cdt_zxcount=0;
    yc_fm1_counter=0;
    dd_fm1_counter=0;
    yx_fm1_counter=0;
    cdt_type=0x00;
    cdt_time_mark=0;
    cdt_dd_time=0;////////电度时间标志清零
    msecond=0,second=0,minute=0;
    com_port1_dat=com1_tl(0,0);
}

void wrb (IO_BYTE i,IO_BYTE j)
{
    if (i!=0)
    {
        com_port1_cmd=i;
        __wait_nop();
        __wait_nop();
    }
    com_port1_cmd=j;
}

IO_BYTE rrb (IO_BYTE i)
{
    if (i!=0)
    {
        com_port1_cmd=i;
        __wait_nop();
        __wait_nop();
    }
    i=com_port1_cmd;
    return(i);
}
/********82530 com1 int***********/
void cdt_send(void)
{
    IO_BYTE i,j;
	com_int_tmout[1]=0;	//add 03-2-8	
    if (cdt_tc[cdt_out_counter]==0)
    {
        cdt_out_counter^=0x01;
        cdt_tc1=0x00;
        cdt_tmark_a1=1;
        cdt_tmark_a1=1;
        i=0x00;j=0x28;
        wrb(i,j);
    }
    else
    {
        com_port1_dat=com1_tl(cdt_out_counter,cdt_tc1);
        cdt_tc1++;
        cdt_tc[cdt_out_counter]--;
    }
    i=0x00;
    j=0x38;
    wrb(i,j);
}
void src_b (void)
{
    IO_BYTE i,j;

    i=0x00;j=0x01;
    wrb(i,j);
    i=0x00;j=0x30;
    wrb(i,j);
    i=0x00;
    j=0x38;
    wrb(i,j);

}

void esi_b (void)
{
    IO_BYTE i,j;

    i=0x00;
    j=0x10;
    wrb(i,j);
    i=0x00;
    j=0x38;
    wrb(i,j);
}

void cdt_start_send(void)
{
    if ((cdt_tmark_a0==1)&&(cdt_tmark_a1==1))
    {
        cdt_tc1=0x00;
        cdt_tmark_a0=cdt_tmark_a1=0x00;
        cdt_out_counter=cdt_in_counter^0x01;
        com_port1_dat=com1_tl(cdt_out_counter,cdt_tc1);
        cdt_tc1++;
        cdt_tc[cdt_out_counter]--;
    }
}
/**********中断定时器*************/
void cdt_cltime(void)
{
    cdt_start_send();
    cdt_start_send0();
    cdt_start_send2();
    msecond+=5;
    cdt_time_mark++;
    cdt_time_mark0++;  ////////^0^ ^0^add 03-2-14
    cdt_time_mark2++;
    if(msecond>=1000)
    {
 //       delay_time1++;
 //       if(r_mark==1) delay_time1=0;
        if (run_mark_a0==1) run_time1++;
        second+=1;
        msecond=0;
        sys_second=sys_second+1;
/////////////			add 03-2-8
    com_int_tmout[0]++;
    com_int_tmout[1]++;
    com_int_tmout[2]++;	
		/*if(com_int_tmout[0]<20)
		{
			com_int_tmout[0]++;
		}
		else
		{
			com_int_tmout[0]=0;
			init_flag[0]=1;
		}
		/////
		if(com_int_tmout[1]<20)
		{
			com_int_tmout[1]++;
		}
		else
		{
			com_int_tmout[1]=0;
			init_flag[1]=1;
		}
		if(com_int_tmout[2]<20)
		{
			com_int_tmout[2]++;
		}
		else
		{
			com_int_tmout[2]=0;
			init_flag[2]=1;
		}*/
    }
    if(second>59)
    {
        minute+=1;
        second=0;        
        sys_minute+=1;sys_second=0;
        cdt_dd_time++;         
        if(cdt_dd_time==5)   cdt_bz_a1=1;//////立串口1电度标志为1 ^.^  
        ////////////////////// ^0^ ^0^add 03-2-14
        cdt_dd_time0++;
        if(cdt_dd_time0==5)   cdt_bz0_a1=1;//////立串口0电度标志为1 ^.^
        cdt_dd_time2++;
        if(cdt_dd_time2==5)   cdt_bz2_a1=1;//////立串口2电度标志为1 ^.^    
    }
    if(minute>59)
    {
        minute=0;
        sys_hour+=1;sys_minute=0;
    }
    if(sys_hour>=24){sys_day+=1;sys_hour=0;}
}

⌨️ 快捷键说明

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