📄 cdt2.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_soejs2,cdt_zxcount2;
IO_BYTE cdt_gong2,cdt_zxj2,cdt_zcj2,cdt_in_counter2,cdt_zmark2,cdt_zlmark2;
IO_BYTE cdt_tc2[3],cdt_tc12,btemp2=0,cdt_type2,cdt_time_mark2,cdt_dd_time2,cdt_rc2,cdt_rc12,cdt_out_counter2;
IO_BYTE zbzc2[6],cdt_f_led2[5];
IO_BYTE cdt_yc_num2,cdt_yx_num2,cdt_dd_num2;
extern IO_WORD msecond,second,minute;
IO_WORD yc_fm2_counter,dd_fm2_counter,yx_fm2_counter;
IO_WORD cos_in_pointer2,cos_out_pointer2,soe_in_pointer2,soe_out_pointer2;
__far IO_BYTE *cdt_sjta2;
//-----------------
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_sjdz2[]={(__far IO_BYTE*)&yc_2l_2x(0),(__far IO_BYTE*)&yc_2l_2x(0)+64,(__far IO_BYTE*)&yc_2l_2x(0)+128,&yx_2l_2(0)};
__far IO_LWORD com_sjdz2[]={(__far IO_LWORD)&yc_2l_2x(0),(__far IO_LWORD)&yc_2l_2x(0)+64,(__far IO_LWORD)&yc_2l_2x(0)+128,(__far IO_LWORD)&yx_2l_2(0)};
/////////////////////////////////////////////////////
void sjch2(void);
void sjdd2(void);
void sjbw2(void);
void sjsoe2(void);
void sjzz122(void);
void sjzz62(void);
void cdt_f_cl2(void);
void cdt_cl_num2(void);
void init_cdt2(void);
void init_com2 (void);
void cdt_send2(void);
void cdt_start_send2(void);
//void cdt_cltime(void);
void cdt_cl2(void);
void cdt_rec2(void);
void sjyxbw2(void);
void ykfj_cl2(void);
void cdt_yccl2(void);
void cdt_ddcl2(void);
void cdt_yxcl2(void);
void cdt_rec_cl2(void);
void cdt_move2(void);
void yksele2(IO_BYTE l);
void ykexcu2(IO_BYTE l);
void ykcanc2(IO_BYTE l);
void upda_time2(IO_BYTE l);
void cdt_soe_datcl2(IO_WORD m,unsigned long int d);
void cdt_cos_datcl2(IO_WORD m);
void esi_b2 (void);
void src_b2 (void);
void wrb2 (IO_BYTE i,IO_BYTE j);
IO_BYTE rrb2 (IO_BYTE i);
IO_BYTE bch2(IO_BYTE o);
IO_BYTE bchr2(IO_BYTE o);
/********function**********/
void init_com2 (void)
{
IO_BYTE i,j,k;
IO_BYTE aa;
i=0;
scc_tabb(2,i)=aa=scc_cdt_tab[i];
while (aa!=0xff)
{
i++;
scc_tabb(2,i)=aa=scc_cdt_tab[i];
}
scc_tabb(2,1)=(scc_tabb(2,1)&0xf0)|com_stop[com0_para(2)]|com_check[com0_para(3)];
scc_tabb(2,25)=scc_tabb(2,25)|com_bits[com0_para(1)];
scc_tabb(2,27)=scc_tabb(2,27)|(com_bits[com0_para(1)]>>1);
scc_tabb(2,33)=scc_tabb(2,33)|(com_bits[com0_para(1)]>>1);
scc_tabb(2,35)=scc_tabb(2,35)|com_bits[com0_para(1)];
scc_tabb(2,17)=com_baund[com0_para(6)] & 0xff;
scc_tabb(2,19)=com_baund[com0_para(6)]>>8;
wrb2(0x09,0x80);
i=0;k=aa=scc_tabb(2,i);
j=scc_tabb(2,i+1);
while (aa!=0xff)
{
i+=2;
wrb2(k,j);
k=aa=scc_tabb(2,i);
j=scc_tabb(2,i+1);
}
init_cdt2();
}
IO_BYTE bch2(IO_BYTE o)
{
IO_BYTE i,k;
k=btemp2=0;
for (i=0;i<5;i++)
{
k=btemp2^com2_tl(cdt_in_counter2,i+o);
btemp2=CRC_TAB[k];
}
return btemp2 ^ 0xff;
}
IO_BYTE bchr2(IO_BYTE o)
{
IO_BYTE i,k;
k=btemp2=0;
for (i=0;i<5;i++)
{
k=btemp2^com2_rl1(i+o);
btemp2=CRC_TAB[k];
}
return btemp2 ^ 0xff;
}
void init_cdt2(void)
{
cdt_cl_num2();
cdt_f_cl2();
if (cdt_yc_num2>8) cdt_yc_num2=8;
cdt_tmark2=3;
cdt_in_counter2=cdt_out_counter2=0;
cdt_zlmark2=0x44;
cdt_zmark2=zbzz[cdt_yc_num2];
cdt_zxj2=zcou[cdt_yc_num2];
cdt_zcj2=cdt_f_led2[3];
cos_in_pointer2=cos_out_pointer2=0;
soe_in_pointer2=soe_out_pointer2=0;
cdt_gong2=0xf0;
cdt_sjta2=(__far IO_BYTE*)com_sjdz2[cdt_zlmark2-0x41]; // ^0^ add 03--2--07
com2_tl(0,0)=com0_para(4);
com2_tl(0,1)=com0_para(5);
com2_tl(0,2)=com0_para(4);
com2_tl(0,3)=com0_para(5);
com2_tl(0,4)=com0_para(4);
com2_tl(0,5)=com0_para(5);
com2_tl(0,6)=yxz[0];
com2_tl(0,7)=yxz[1];
com2_tl(0,8)=cdt_zcj2;
com2_tl(0,9)=com0_para(8);//yxz[3];
com2_tl(0,10)=yxz[4];
com2_tl(0,11)=bch2(6);
cdt_in_counter2^=0x01;
cdt_bz2=0x00;
cdt_soejs2=0x00;
cdt_tc2[0]=11;
cdt_tc2[1]=0;
cdt_tc12=1;
cdt_rc2=cdt_rc12=0;
cdt_zxcount2=0;
yc_fm2_counter=0;
dd_fm2_counter=0;
cdt_type2=0x00;
cdt_time_mark2=0;
cdt_dd_time2=0;////////电度时间标志清零
msecond=0,second=0,minute=0;
com_port2_dat=com2_tl(0,0);
}
void wrb2 (IO_BYTE i,IO_BYTE j)
{
if (i!=0)
{
com_port2_cmd=i;
__wait_nop();
__wait_nop();
}
com_port2_cmd=j;
}
IO_BYTE rrb2 (IO_BYTE i)
{
if (i!=0)
{
com_port2_cmd=i;
__wait_nop();
__wait_nop();
}
i=com_port2_cmd;
return(i);
}
/********82530 com0 int***********/
void cdt_send2(void)
{
IO_BYTE i,j;
com_int_tmout[2]=0; //add 03-2-8
if (cdt_tc2[cdt_out_counter2]==0)
{
cdt_out_counter2^=0x01;
cdt_tc12=0x00;
cdt_tmark2_a1=1;
cdt_tmark2_a1=1;
i=0x00;j=0x28;
wrb2(i,j);
}
else
{
com_port2_dat=com2_tl(cdt_out_counter2,cdt_tc12);
cdt_tc12++;
cdt_tc2[cdt_out_counter2]--;
}
i=0x00;
j=0x38;
wrb2(i,j);
}
void src_b2 (void)
{
IO_BYTE i,j;
i=0x00;j=0x01;
wrb2(i,j);
i=0x00;j=0x30;
wrb2(i,j);
i=0x00;
j=0x38;
wrb2(i,j);
}
void esi_b2 (void)
{
IO_BYTE i,j;
i=0x00;
j=0x10;
wrb2(i,j);
i=0x00;
j=0x38;
wrb2(i,j);
}
void cdt_start_send2(void)
{
if ((cdt_tmark2_a0==1)&&(cdt_tmark2_a1==1))
{
cdt_tc12=0x00;
cdt_tmark2_a0=cdt_tmark2_a1=0x00;
cdt_out_counter2=cdt_in_counter2^0x01;
com_port2_dat=com2_tl(cdt_out_counter2,cdt_tc12);
cdt_tc12++;
cdt_tc2[cdt_out_counter2]--;
}
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/**********中断定时器*************/
/*void cdt_cltime(void)
{
cdt_start_send2();
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_cl2(void)
{
if(cdt_rc2!=0)
{
if(cdt_time_mark2>10)
{
cdt_rec_cl2();
}
}
if (cdt_tmark2_a0==0)
{
switch (cdt_zcj2)
{
case 0x00:
switch (cdt_zxj2)
{
case 0x00:
sjch2(); //soe
break;
case 0x01:
sjdd2();//电度
break;
default :
if (cdt_bz2_a0==1) {sjsoe2();} else {sjzz122();}
}
break;
default : sjbw2();
}
cdt_tmark2_a0=1;
}
if ((run_mark_a1==1)&&(run_mark_a0==0))
{
if(com_int_tmout[2]>3)
{
//PDR5_P51=0;//03-1-12
// __wait_nop();
//__wait_nop();
//PDR5_P51=1;
com_int_tmout[2]=0;
init_com2();
ICR04=6;
}
}
}
/*********大循环完成*********/
void sjch2 (void)
{
if(soe_in_pointer2!=soe_out_pointer2) cdt_soejs2=3;
cdt_f_cl2();
if(cdt_yc_num2>8) cdt_yc_num2=8;
cdt_zxj2=zcou[cdt_yc_num2];
cdt_zmark2=zbzz[cdt_yc_num2];
cdt_zxcount2=0;
sjzz122();
}
/*********电度*********/
void sjdd2 (void)
{
IO_WORD a;
if(cdt_bz2_a1==1) ////定时电度标志
{
a=com0_para(16);
a=(a<<8)+com0_para(15);
cdt_dd_num2=a;
if(a>64) a=64;
cdt_zlmark2=0x46;
cdt_zxcount2++;
cdt_zcj2=a;
cdt_gong2=0xa0;
cdt_sjta2=(__far IO_BYTE*) (&dd_2l_2(0));
com2_tl(cdt_in_counter2,0)=com0_para(4);
com2_tl(cdt_in_counter2,1)=com0_para(5);
com2_tl(cdt_in_counter2,2)=com0_para(4);
com2_tl(cdt_in_counter2,3)=com0_para(5);
com2_tl(cdt_in_counter2,4)=com0_para(4);
com2_tl(cdt_in_counter2,5)=com0_para(5);
com2_tl(cdt_in_counter2,6)=ddzz[0];
com2_tl(cdt_in_counter2,7)=ddzz[1];
com2_tl(cdt_in_counter2,8)=cdt_zcj2;
com2_tl(cdt_in_counter2,9)=com0_para(8);//ddzz[3];
com2_tl(cdt_in_counter2,10)=ddzz[4];
com2_tl(cdt_in_counter2,11)=bch2(6);
cdt_tc2[cdt_in_counter2]=12;
cdt_in_counter2^=0x01;
cdt_zxj2--;
cdt_bz2_a1=0;//////清电度标志
cdt_dd_time2=0;
}
else
{
sjzz122();
}
}
/**********组变位*********/
void sjyxbw2(void)
{
com2_tl(cdt_in_counter2,0)=cdt_cos_data2(cos_out_pointer2+0);
com2_tl(cdt_in_counter2,1)=cdt_cos_data2(cos_out_pointer2+1);
com2_tl(cdt_in_counter2,2)=cdt_cos_data2(cos_out_pointer2+2);
com2_tl(cdt_in_counter2,3)=cdt_cos_data2(cos_out_pointer2+3);
com2_tl(cdt_in_counter2,4)=cdt_cos_data2(cos_out_pointer2+4);
com2_tl(cdt_in_counter2,5)=bch2(0);
com2_tl(cdt_in_counter2,6)=cdt_cos_data2(cos_out_pointer2+0);
com2_tl(cdt_in_counter2,7)=cdt_cos_data2(cos_out_pointer2+1);
com2_tl(cdt_in_counter2,8)=cdt_cos_data2(cos_out_pointer2+2);
com2_tl(cdt_in_counter2,9)=cdt_cos_data2(cos_out_pointer2+3);
com2_tl(cdt_in_counter2,10)=cdt_cos_data2(cos_out_pointer2+4);
com2_tl(cdt_in_counter2,11)=bch2(6);
com2_tl(cdt_in_counter2,12)=cdt_cos_data2(cos_out_pointer2+0);
com2_tl(cdt_in_counter2,13)=cdt_cos_data2(cos_out_pointer2+1);
com2_tl(cdt_in_counter2,14)=cdt_cos_data2(cos_out_pointer2+2);
com2_tl(cdt_in_counter2,15)=cdt_cos_data2(cos_out_pointer2+3);
com2_tl(cdt_in_counter2,16)=cdt_cos_data2(cos_out_pointer2+4);
com2_tl(cdt_in_counter2,17)=bch2(12);
cos_out_pointer2+=6;
if (cos_out_pointer2>=600) cos_out_pointer2=0;
cdt_gong2+=3;
cdt_zcj2-=3;
cdt_tc2[cdt_in_counter2]=18;
cdt_in_counter2^=0x01;
cdt_sjta2+=12;
}
void ykfj_cl2(void)
{
if (cdt_ykmark2&01)
{
if (cdt_zlmark2==0x44) {sjzz62();return;}
if (cdt_zcj2<=2) {sjzz62();return;}
com2_tl(cdt_in_counter2,0)=0xe1;
com2_tl(cdt_in_counter2,1)=yk_xz;
com2_tl(cdt_in_counter2,2)=yk_dx;
com2_tl(cdt_in_counter2,3)=yk_xz;
com2_tl(cdt_in_counter2,4)=yk_dx;
com2_tl(cdt_in_counter2,5)=bch2(0);
com2_tl(cdt_in_counter2,6)=0xe1;
com2_tl(cdt_in_counter2,7)=yk_xz;
com2_tl(cdt_in_counter2,8)=yk_dx;
com2_tl(cdt_in_counter2,9)=yk_xz;
com2_tl(cdt_in_counter2,10)=yk_dx;
com2_tl(cdt_in_counter2,11)=bch2(6);
com2_tl(cdt_in_counter2,12)=0xe1;
com2_tl(cdt_in_counter2,13)=yk_xz;
com2_tl(cdt_in_counter2,14)=yk_dx;
com2_tl(cdt_in_counter2,15)=yk_xz;
com2_tl(cdt_in_counter2,16)=yk_dx;
com2_tl(cdt_in_counter2,17)=bch2(12);
cdt_gong2+=3;
cdt_zcj2-=3;
cdt_tc2[cdt_in_counter2]=18;
cdt_in_counter2^=0x01;
cdt_ykmark2=0x00;
cdt_sjta2+=12;
return;
}
if (cdt_ykmark2&02)
{
if (cdt_zlmark2==0x44) {sjzz62();return;}
if (cdt_zcj2<=2) {sjzz62();return;}
com2_tl(cdt_in_counter2,0)=0xe1;
com2_tl(cdt_in_counter2,1)=0x00;
com2_tl(cdt_in_counter2,2)=0x00;
com2_tl(cdt_in_counter2,3)=yk_xz;
com2_tl(cdt_in_counter2,4)=yk_dx;
com2_tl(cdt_in_counter2,5)=bch2(0);
com2_tl(cdt_in_counter2,6)=0xe1;
com2_tl(cdt_in_counter2,7)=0x00;
com2_tl(cdt_in_counter2,8)=0x00;
com2_tl(cdt_in_counter2,9)=yk_xz;
com2_tl(cdt_in_counter2,10)=yk_dx;
com2_tl(cdt_in_counter2,11)=bch2(6);
com2_tl(cdt_in_counter2,12)=0xe1;
com2_tl(cdt_in_counter2,13)=0x00;
com2_tl(cdt_in_counter2,14)=0x00;
com2_tl(cdt_in_counter2,15)=yk_xz;
com2_tl(cdt_in_counter2,16)=yk_dx;
com2_tl(cdt_in_counter2,17)=bch2(12);
cdt_gong2+=3;
cdt_zcj2-=3;
cdt_tc2[cdt_in_counter2]=18;
cdt_in_counter2^=0x01;
cdt_sjta2+=12;
cdt_ykmark2=0x00;
return;
}
cdt_ykmark2=0x00;
sjzz62();
}
void sjbw2 (void)
{
if (cdt_zlmark2==0x46) {sjzz62();}
else
{
if (cos_out_pointer2==cos_in_pointer2)
{
if(cdt_ykmark2&0x80)
{
ykfj_cl2();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -