📄 cdt1.c
字号:
#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 + -