📄 cdt0.c
字号:
#include "mb90540.h"
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];
IO_BYTE cdt_soejs0,cdt_zxcount0;
IO_BYTE cdt_gong0,cdt_zxj0,cdt_zcj0,cdt_in_counter0,cdt_zmark0,cdt_zlmark0;
IO_BYTE cdt_tc0[3],cdt_tc10,btemp0=0,cdt_type0,cdt_time_mark0,cdt_dd_time0,cdt_rc0,cdt_rc10,cdt_out_counter0;
IO_BYTE zbzc0[6],cdt_f_led0[5];
IO_BYTE cdt_yc_num0,cdt_yx_num0,cdt_dd_num0;
extern IO_WORD msecond,second,minute;
IO_WORD yc_fm0_counter,dd_fm0_counter,yx_fm0_counter;
IO_WORD cos_in_pointer0,cos_out_pointer0,soe_in_pointer0,soe_out_pointer0;
__far IO_BYTE *cdt_sjta0;
//-----------------
extern IO_BYTE CRC_TAB[];
extern IO_BYTE CRC_TAB1[];
extern IO_BYTE scc_cdt_tab[44];
extern IO_BYTE yca[];
extern IO_BYTE ycb[];
extern IO_BYTE ycc[];
extern IO_BYTE yxz[];
extern IO_BYTE ddzz[];
extern IO_BYTE soez[];
extern IO_BYTE *tbz[];
extern IO_BYTE zcou[];
extern IO_BYTE az[];
extern IO_BYTE abz[];
extern IO_BYTE abcz[];
extern IO_BYTE *cdt_zxta[];
extern IO_BYTE zbzz[];
extern IO_BYTE gongg[];
//__far IO_BYTE *com_sjdz0[]={(__far IO_BYTE*)&yc_2l_0x(0),(__far IO_BYTE*)&yc_2l_0x(0)+64,(__far IO_BYTE*)&yc_2l_0x(0)+128,&yx_2l_0(0)};
__far IO_LWORD com_sjdz0[]={(__far IO_LWORD)&yc_2l_0x(0),(__far IO_LWORD)&yc_2l_0x(0)+64,(__far IO_LWORD)&yc_2l_0x(0)+128,(__far IO_LWORD)&yx_2l_0(0)};
/////////////////////////////////////////////////////
void sjch0(void);
void sjdd0(void);
void sjbw0(void);
void sjsoe0(void);
void sjzz120(void);
void sjzz60(void);
void cdt_f_cl0(void);
void cdt_cl_num0(void);
void init_cdt0(void);
void init_com0 (void);
void cdt_send0(void);
void cdt_start_send0(void);
//void cdt_cltime(void);
void cdt_cl0(void);
void cdt_rec0(void);
void sjyxbw0(void);
void ykfj_cl0(void);
void cdt_yccl0(void);
void cdt_ddcl0(void);
void cdt_yxcl0(void);
void cdt_rec_cl0(void);
void cdt_move0(void);
void yksele0(IO_BYTE l);
void ykexcu0(IO_BYTE l);
void ykcanc0(IO_BYTE l);
void upda_time0(IO_BYTE l);
void cdt_soe_datcl0(IO_WORD m,unsigned long int d);
void cdt_cos_datcl0(IO_WORD m);
void esi_b0 (void);
void src_b0 (void);
void wrb0 (IO_BYTE i,IO_BYTE j);
IO_BYTE rrb0 (IO_BYTE i);
IO_BYTE bch0(IO_BYTE o);
IO_BYTE bchr0(IO_BYTE o);
/********function**********/
void init_com0 (void)
{
IO_BYTE i,j,k;
IO_BYTE aa;
i=0;
scc_tabb(0,i)=aa=scc_cdt_tab[i];
while (aa!=0xff)
{
i++;
//if(i==11) scc_tabb(0,i)=aa=0x89;
//else
scc_tabb(0,i)=aa=scc_cdt_tab[i];
}
scc_tabb(0,1)=(scc_tabb(0,1)&0xf0)|com_stop[com0_para(2)]|com_check[com0_para(3)];
scc_tabb(0,25)=scc_tabb(0,25)|com_bits[com0_para(1)];
scc_tabb(0,27)=scc_tabb(0,27)|(com_bits[com0_para(1)]>>1);
scc_tabb(0,33)=scc_tabb(0,33)|(com_bits[com0_para(1)]>>1);
scc_tabb(0,35)=scc_tabb(0,35)|com_bits[com0_para(1)];
scc_tabb(0,17)=com_baund[com0_para(6)] & 0xff;
scc_tabb(0,19)=com_baund[com0_para(6)]>>8;
wrb0(0x09,0x80);
i=0;k=aa=scc_tabb(0,i);
j=scc_tabb(0,i+1);
while (aa!=0xff)
{
i+=2;
wrb0(k,j);
k=aa=scc_tabb(0,i);
j=scc_tabb(0,i+1);
}
init_cdt0();
}
IO_BYTE bch0(IO_BYTE o)
{
IO_BYTE i,k;
k=btemp0=0;
for (i=0;i<5;i++)
{
k=btemp0^com0_tl(cdt_in_counter0,i+o);
btemp0=CRC_TAB[k];
}
return btemp0 ^ 0xff;
}
IO_BYTE bchr0(IO_BYTE o)
{
IO_BYTE i,k;
k=btemp0=0;
for (i=0;i<5;i++)
{
k=btemp0^com0_rl1(i+o);
btemp0=CRC_TAB[k];
}
return btemp0 ^ 0xff;
}
void init_cdt0(void)
{
cdt_cl_num0();
cdt_f_cl0();
if (cdt_yc_num0>8) cdt_yc_num0=8;
cdt_tmark0=3;
cdt_in_counter0=cdt_out_counter0=0;
cdt_zlmark0=0x44;
cdt_zmark0=zbzz[cdt_yc_num0];
cdt_zxj0=zcou[cdt_yc_num0];
cdt_zcj0=cdt_f_led0[3];
cos_in_pointer0=cos_out_pointer0=0;
soe_in_pointer0=soe_out_pointer0=0;
cdt_gong0=0xf0;
cdt_sjta0=(__far IO_BYTE*)com_sjdz0[cdt_zlmark0-0x41]; // ^0^ add 03--2--07
com0_tl(0,0)=com0_para(4);
com0_tl(0,1)=com0_para(5);
com0_tl(0,2)=com0_para(4);
com0_tl(0,3)=com0_para(5);
com0_tl(0,4)=com0_para(4);
com0_tl(0,5)=com0_para(5);
com0_tl(0,6)=yxz[0];
com0_tl(0,7)=yxz[1];
com0_tl(0,8)=cdt_zcj0;
com0_tl(0,9)=com0_para(8);//yxz[3];
com0_tl(0,10)=yxz[4];
com0_tl(0,11)=bch0(6);
cdt_in_counter0^=0x01;
cdt_bz0=0x00;
cdt_soejs0=0x00;
cdt_tc0[0]=11;
cdt_tc0[1]=0;
cdt_tc10=1;
cdt_rc0=cdt_rc10=0;
cdt_zxcount0=0;
yc_fm0_counter=0;
dd_fm0_counter=0;
cdt_type0=0x00;
cdt_time_mark0=0;
cdt_dd_time0=0;////////电度时间标志清零
msecond=0,second=0,minute=0;
com_port0_dat=com0_tl(0,0);
}
void wrb0 (IO_BYTE i,IO_BYTE j)
{
if (i!=0)
{
com_port0_cmd=i;
__wait_nop();
__wait_nop();
}
com_port0_cmd=j;
}
IO_BYTE rrb0 (IO_BYTE i)
{
if (i!=0)
{
com_port0_cmd=i;
__wait_nop();
__wait_nop();
}
i=com_port0_cmd;
return(i);
}
/********82530 com0 int***********/
void cdt_send0(void)
{
IO_BYTE i,j;
com_int_tmout[0]=0; //add 03-2-8
if (cdt_tc0[cdt_out_counter0]==0)
{
cdt_out_counter0^=0x01;
cdt_tc10=0x00;
cdt_tmark0_a1=1;
cdt_tmark0_a1=1;
i=0x00;j=0x28;
wrb0(i,j);
}
else
{
com_port0_dat=com0_tl(cdt_out_counter0,cdt_tc10);
cdt_tc10++;
cdt_tc0[cdt_out_counter0]--;
}
i=0x00;
j=0x38;
wrb0(i,j);
}
void src_b0 (void)
{
IO_BYTE i,j;
i=0x00;j=0x01;
wrb0(i,j);
i=0x00;j=0x30;
wrb0(i,j);
i=0x00;
j=0x38;
wrb0(i,j);
}
void esi_b0 (void)
{
IO_BYTE i,j;
i=0x00;
j=0x10;
wrb0(i,j);
i=0x00;
j=0x38;
wrb0(i,j);
}
void cdt_start_send0(void)
{
if ((cdt_tmark0_a0==1)&&(cdt_tmark0_a1==1))
{
cdt_tc10=0x00;
cdt_tmark0_a0=cdt_tmark0_a1=0x00;
cdt_out_counter0=cdt_in_counter0^0x01;
com_port0_dat=com0_tl(cdt_out_counter0,cdt_tc10);
cdt_tc10++;
cdt_tc0[cdt_out_counter0]--;
}
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/**********中断定时器*************/
/*void cdt_cltime(void)
{
cdt_start_send0();
msecond+=5;
cdt_time_mark++;
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
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(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 ^.^
}
if(minute>59)
{
minute=0;
sys_hour+=1;sys_minute=0;
}
if(sys_hour>=24){sys_day+=1;sys_hour=0;}
}*/
//--------------------CDT规约处理-------------------------------
void cdt_cl0(void)
{
if(cdt_rc0!=0)
{
if(cdt_time_mark0>10)
{
cdt_rec_cl0();
}
}
if (cdt_tmark0_a0==0)
{
switch (cdt_zcj0)
{
case 0x00:
switch (cdt_zxj0)
{
case 0x00:
sjch0(); //soe
break;
case 0x01:
sjdd0();//电度
break;
default :
if (cdt_bz0_a0==1) {sjsoe0();} else {sjzz120();}
}
break;
default : sjbw0();
}
cdt_tmark0_a0=1;
}
if ((run_mark_a1==1)&&(run_mark_a0==0))
{
if(com_int_tmout[0]>3)
{
// PDR5_P51=0;//03-1-12
//__wait_nop();
//__wait_nop();
//PDR5_P51=1;
com_int_tmout[0]=0;
init_com0();
ICR02=6;
}
}
}
/*********大循环完成*********/
void sjch0 (void)
{
if(soe_in_pointer0!=soe_out_pointer0) cdt_soejs0=3;
cdt_f_cl0();
if(cdt_yc_num0>8) cdt_yc_num0=8;
cdt_zxj0=zcou[cdt_yc_num0];
cdt_zmark0=zbzz[cdt_yc_num0];
cdt_zxcount0=0;
sjzz120();
}
/*********电度*********/
void sjdd0 (void)
{
IO_WORD a;
if(cdt_bz0_a1==1) ////定时电度标志
{
a=com0_para(16);
a=(a<<8)+com0_para(15);
cdt_dd_num0=a;
if(a>64) a=64;
cdt_zlmark0=0x46;
cdt_zxcount0++;
cdt_zcj0=a;
cdt_gong0=0xa0;
cdt_sjta0=(__far IO_BYTE*) (&dd_2l_0(0));
com0_tl(cdt_in_counter0,0)=com0_para(4);
com0_tl(cdt_in_counter0,1)=com0_para(5);
com0_tl(cdt_in_counter0,2)=com0_para(4);
com0_tl(cdt_in_counter0,3)=com0_para(5);
com0_tl(cdt_in_counter0,4)=com0_para(4);
com0_tl(cdt_in_counter0,5)=com0_para(5);
com0_tl(cdt_in_counter0,6)=ddzz[0];
com0_tl(cdt_in_counter0,7)=ddzz[1];
com0_tl(cdt_in_counter0,8)=cdt_zcj0;
com0_tl(cdt_in_counter0,9)=com0_para(8);//ddzz[3];
com0_tl(cdt_in_counter0,10)=ddzz[4];
com0_tl(cdt_in_counter0,11)=bch0(6);
cdt_tc0[cdt_in_counter0]=12;
cdt_in_counter0^=0x01;
cdt_zxj0--;
cdt_bz0_a1=0;//////清电度标志
cdt_dd_time0=0;
}
else
{
sjzz120();
}
}
/**********组变位*********/
void sjyxbw0(void)
{
com0_tl(cdt_in_counter0,0)=cdt_cos_data0(cos_out_pointer0+0);
com0_tl(cdt_in_counter0,1)=cdt_cos_data0(cos_out_pointer0+1);
com0_tl(cdt_in_counter0,2)=cdt_cos_data0(cos_out_pointer0+2);
com0_tl(cdt_in_counter0,3)=cdt_cos_data0(cos_out_pointer0+3);
com0_tl(cdt_in_counter0,4)=cdt_cos_data0(cos_out_pointer0+4);
com0_tl(cdt_in_counter0,5)=bch0(0);
com0_tl(cdt_in_counter0,6)=cdt_cos_data0(cos_out_pointer0+0);
com0_tl(cdt_in_counter0,7)=cdt_cos_data0(cos_out_pointer0+1);
com0_tl(cdt_in_counter0,8)=cdt_cos_data0(cos_out_pointer0+2);
com0_tl(cdt_in_counter0,9)=cdt_cos_data0(cos_out_pointer0+3);
com0_tl(cdt_in_counter0,10)=cdt_cos_data0(cos_out_pointer0+4);
com0_tl(cdt_in_counter0,11)=bch0(6);
com0_tl(cdt_in_counter0,12)=cdt_cos_data0(cos_out_pointer0+0);
com0_tl(cdt_in_counter0,13)=cdt_cos_data0(cos_out_pointer0+1);
com0_tl(cdt_in_counter0,14)=cdt_cos_data0(cos_out_pointer0+2);
com0_tl(cdt_in_counter0,15)=cdt_cos_data0(cos_out_pointer0+3);
com0_tl(cdt_in_counter0,16)=cdt_cos_data0(cos_out_pointer0+4);
com0_tl(cdt_in_counter0,17)=bch0(12);
cos_out_pointer0+=6;
if (cos_out_pointer0>=600) cos_out_pointer0=0;
cdt_gong0+=3;
cdt_zcj0-=3;
cdt_tc0[cdt_in_counter0]=18;
cdt_in_counter0^=0x01;
cdt_sjta0+=12;
}
void ykfj_cl0(void)
{
if (cdt_ykmark0&01)
{
if (cdt_zlmark0==0x44) {sjzz60();return;}
if (cdt_zcj0<=2) {sjzz60();return;}
com0_tl(cdt_in_counter0,0)=0xe1;
com0_tl(cdt_in_counter0,1)=yk_xz;
com0_tl(cdt_in_counter0,2)=yk_dx;
com0_tl(cdt_in_counter0,3)=yk_xz;
com0_tl(cdt_in_counter0,4)=yk_dx;
com0_tl(cdt_in_counter0,5)=bch0(0);
com0_tl(cdt_in_counter0,6)=0xe1;
com0_tl(cdt_in_counter0,7)=yk_xz;
com0_tl(cdt_in_counter0,8)=yk_dx;
com0_tl(cdt_in_counter0,9)=yk_xz;
com0_tl(cdt_in_counter0,10)=yk_dx;
com0_tl(cdt_in_counter0,11)=bch0(6);
com0_tl(cdt_in_counter0,12)=0xe1;
com0_tl(cdt_in_counter0,13)=yk_xz;
com0_tl(cdt_in_counter0,14)=yk_dx;
com0_tl(cdt_in_counter0,15)=yk_xz;
com0_tl(cdt_in_counter0,16)=yk_dx;
com0_tl(cdt_in_counter0,17)=bch0(12);
cdt_gong0+=3;
cdt_zcj0-=3;
cdt_tc0[cdt_in_counter0]=18;
cdt_in_counter0^=0x01;
cdt_ykmark0=0x00;
cdt_sjta0+=12;
return;
}
if (cdt_ykmark0&02)
{
if (cdt_zlmark0==0x44) {sjzz60();return;}
if (cdt_zcj0<=2) {sjzz60();return;}
com0_tl(cdt_in_counter0,0)=0xe1;
com0_tl(cdt_in_counter0,1)=0x00;
com0_tl(cdt_in_counter0,2)=0x00;
com0_tl(cdt_in_counter0,3)=yk_xz;
com0_tl(cdt_in_counter0,4)=yk_dx;
com0_tl(cdt_in_counter0,5)=bch0(0);
com0_tl(cdt_in_counter0,6)=0xe1;
com0_tl(cdt_in_counter0,7)=0x00;
com0_tl(cdt_in_counter0,8)=0x00;
com0_tl(cdt_in_counter0,9)=yk_xz;
com0_tl(cdt_in_counter0,10)=yk_dx;
com0_tl(cdt_in_counter0,11)=bch0(6);
com0_tl(cdt_in_counter0,12)=0xe1;
com0_tl(cdt_in_counter0,13)=0x00;
com0_tl(cdt_in_counter0,14)=0x00;
com0_tl(cdt_in_counter0,15)=yk_xz;
com0_tl(cdt_in_counter0,16)=yk_dx;
com0_tl(cdt_in_counter0,17)=bch0(12);
cdt_gong0+=3;
cdt_zcj0-=3;
cdt_tc0[cdt_in_counter0]=18;
cdt_in_counter0^=0x01;
cdt_sjta0+=12;
cdt_ykmark0=0x00;
return;
}
cdt_ykmark0=0x00;
sjzz60();
}
void sjbw0 (void)
{
if (cdt_zlmark0==0x46) {sjzz60();}
else
{
if (cos_out_pointer0==cos_in_pointer0)
{
if(cdt_ykmark0&0x80)
{
ykfj_cl0();
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -