📄 ddj.c
字号:
}
}
else
{
flag_485=_COMPLETE;
dataIndex=0;
}
}
break;
}
}
if((SCIRXST&0x0080)==0x0080)
{
SCICTL1 = 0x13;
SCICCR = 0x67;
SCICTL2 = 0x03;
SCIPRI = 0x60;
SCICTL1 = 0x33;
}
IMR = 0x003e;
asm(" CLRC INTM");
}
void JDQ_doudong(unsigned int qudou_x,unsigned int qudou_y)
{
if (JDQqudou_timer<qudou_x)
{
JDQqudou_flag=0xaaaa;
}
else
{
JDQqudou_flag=0x5555;
JDQqudou_timer=0;
JDQ_HeFen_flag=qudou_y;
FuncTab[2].status=0xaaaa;
}
}
void main()
{
int n,i;
unsigned int DZ_temp=0;
unsigned int DZ_temp1=0;
int *p_temp1,*p_temp2;
unsigned int LouJi_flag=0;
int rtest1;
for (i=0;i<48;i++)
{
if (i<24)
{
cao[i]=caobak[i];
}
else
{
cao[i]=caobak[i-24];
}
}
WSGR=0x0000;
DSPInit();
CSDian_flag=0;
SCIInit();
softwareinit();
asm(" CLRC INTM"); /*所有非屏蔽中断开放*/
CPUreset_flag=0x5555;
//CPUreset_flag=0xaaaa;
resetcu_flag=0x5555;
//WDCR=0x2f; //开放看门狗// ////////////////////////////////////////
WDCR=0xE8; //关闭看门狗 ////////////////////////////////////////
WDKEY=0x55;
WDKEY=0xaa;
//WaiWDT;
PCF8583Init_time();
init_X5643();
delay(36000);
delay(36000);
delay(36000);
WaiWDT;
acc=0;
//X5643_write(0x800,0x33);
//delay(36000);
//delay(36000);
//delay(36000);
delaythree(); /*延时三个周波*/
GetTimeFromPCF8583();
WaiWDT;
//init_8583();
KaiJiPing();
CZP_line=0;
CS_line=0;
DZP_line=0;
current_screen=0;
dingzhi_display_flag=0;
kouling_display_flag=0;
dingzhi_set_flag=0;
kouling_set_flag=0;
loop1:
ReadBHDingZhip(); /*读保护定值并校验*/
WaiWDT;
loop:
WaiWDT;
X5643_write(0x800,0x44);
delay(36000);
rtest1=X5643_read(0x800);
if(current_screen==0)//yxyg
{
ShouPing();
}//yxyg
test1=test1;
//CaoZuoPing1();
status=PEDATDIR&0xff;
if(status!=0xff)
{
if((status&0x08)==0) /*左键动作?(0:按下)*/
{
test1=test1;
delay(1000);
enter_key();
//CaoZuoPing1();
//down_key();
}
if((status&0x40)==0) /*左键动作?(0:按下)*/
{
/* enter_key();*/
delay(1000);
up_key();
}
if((status&0x20)==0) /*左键动作?(0:按下)*/
{
/* enter_key();*/
delay(1000);
reset_key();
}
if((status&0x01)==0)
{
test1=test1;
//KouLingPing();
//test1=test1;
//DingZhiPingKL();
test1=test1;
DingZhiPingFF();
test1=test1;
DingZhiPingPHD();
test1=test1;
DingZhiPingTY();
test1=test1;
DingZhiPingZQD();
test1=test1;
DingZhiPingI();
test1=test1;
DingZhiPingII();
test1=test1;
DingZhiPingIII();
test1=test1;
DingZhiPingDLI();
test1=test1;
DingZhiPingDLII();
test1=test1;
DingZhiPingDY();
test1=test1;
DingZhiPingPHD();
test1=test1;
DingZhiPingZQD();
test1=test1;
//CanShuPingI();
//test1=test1;
CanShuPingII();
test1=test1;
CanShuPingIII();
test1=test1;
}
}
for(n=0;n<SUM_EVENT;n++)
{
if((senddata_over==0xaaaa) || (FuncTab[n].scireq==0x5555))
{
if(FuncTab[n].status==0xaaaa)
{
FuncPtr= FuncTab[n].func;
break;
}
}
}
WaiWDT;
(*FuncPtr)();
WaiWDT;
//就地合分操作
//if (YaoXin[14]==0)//就地
// {
// if (YaoXin[8]==0)//开关1分闸
// {
// JDQ_doudong(5,101);
// }
// else if (YaoXin[9]==0)//开关1合闸
// {
// JDQ_doudong(5,100);
// }
// else if (YaoXin[10]==0)//开关2分闸
// {
// JDQ_doudong(5,201);
// }
// else if (YaoXin[11]==0)//开关2合闸
// {
// JDQ_doudong(5,200);
// }
// else if (YaoXin[12]==0)//开关3分闸
// {
// JDQ_doudong(5,301);
// }
// else if (YaoXin[13]==0)//开关3合闸
// {
// JDQ_doudong(5,300);
// }
// }
//定值修改成功后,在发送成功帧后修改定值。
DZ_temp1=((YaoTiaoDZValid_flag==1)&&(senddata_over==0xaaaa)&&(dzchenggong_flag==0xaaaa));
DZ_temp=(DZ_temp||((DingZhiValid_flag1==1)&&(DZTAOHAO==1))&&(senddata_over==0xaaaa));
DZ_temp=(DZ_temp||((DingZhiValid_flag2==1)&&(DZTAOHAO==2))&&(senddata_over==0xaaaa));
DZ_temp=(DZ_temp||((DingZhiValid_flag3==1)&&(DZTAOHAO==3))&&(senddata_over==0xaaaa));
DZ_temp=(DZ_temp||((DingZhiValid_flag4==1)&&(DZTAOHAO==4))&&(senddata_over==0xaaaa));
DZ_temp=(DZ_temp||((DingZhiValid_flag5==1)&&(DZTAOHAO==5))&&(senddata_over==0xaaaa));
WaiWDT;
if ((DingZhiError_flag==1)||((DZ_temp==1)&&(dzchenggong_flag==0xaaaa))||(DZ_temp1==1))
{
if (YaoTiaoDZValid_flag==1) YaoTiaoDZValid_flag=0;
if (DingZhiValid_flag1==1) DingZhiValid_flag1=0;
if (DingZhiValid_flag2==1) DingZhiValid_flag2=0;
if (DingZhiValid_flag3==1) DingZhiValid_flag3=0;
if (DingZhiValid_flag4==1) DingZhiValid_flag4=0;
if (DingZhiValid_flag5==1) DingZhiValid_flag5=0;
DingZhiError_flag=0;
dzchenggong_flag=0x5555;
DZ_temp1=0;
DZ_temp=0;
WaiWDT;
goto loop1;
}
GetTimeFromPCF8583();
WaiWDT;
goto loop;
}
/******************************************
DSP初始化
******************************************/
void DSPInit(void)
{
unsigned int uTemp;
asm(" clrc SXM"); // 抑制符号位扩展
asm(" clrc OVM"); // 累加器中结果正常溢出
asm(" clrc CNF"); // B0被配置为数据存储空间
asm(" setc INTM"); // 禁止所有中断
/*内部看门狗关闭*/
uTemp = SCSR2 & 0xFF9C;
uTemp |= 0xFFC2;
SCSR2 = uTemp; //1111,1111,110X,XX10
WDCR=0xE8;
WDKEY=0x55;
WDKEY=0xAA;
/*系统配置*/
//IMR=0x003f; /*使能系统中断(INT1,2,3,4,5,6)*/
IMR=0x0016;
IFR=0xFFFF; /*清所有可屏蔽中断*/
SCSR1=0x00FE; /*CPU时钟=4*fin,使能ADC/SPI/SPI/CAN/EVA/EVB时钟*/
/*IO口配置*/
MCRA=0x0003; /*新板子板号5933改线对应的I/O设置,配置CAP2为特殊功能方式*/
MCRB=0xFE00;
MCRC=0x0000;
PADATDIR=0xfB00;
PBDATDIR=0x07FF;
PCDATDIR=0x40ff;
PEDATDIR=0x00ff; //液晶数据线
PDDATDIR=0x0101;
PFDATDIR=0xFB00; //iopf2,iopf1为输出, 且输出为零
WaiWDT;
/*8583中断初始化*/
XINT1CR=0x0011; /*高优先级,下降沿触发,使能中断*/ //CAO-3-11
//XINT1CR=0x0001; /*高优先级,下降沿触发,使能中断*/
/*ADC初始化*/
ADCTRL1=0x2F90;
ADCTRL2=0x8000;
ADCTRL2=ADCTRL2|0x0400;
MAXCONV=0x000a;
CHSELSEQ1=0x3210;
CHSELSEQ2=0x7654;
CHSELSEQ3=0xba98;
CHSELSEQ4=0xfedc;
ADCTRL2=ADCTRL2 | 0x4000; /*启动adc*/
ADCTRL2=ADCTRL2 | 0x2000;
/*定时器3采样中断(每周波24点采样=0.83333ms)*/
EVBIFRA = 0xFFFF;
EVBIFRB = 0xFFFF;
T1PR =0x780;
T2PR = 0x1200;
T1CNT = 0;
T2CNT = 0x480;
T2CON = 0x148c;
T1CON = 0x144c;
EVAIMRA = 0x0080;
EVAIMRB = 0x0001;
GPTCONB=GPTCONB|0x0100;/* 设置由周期中断标志来启动模数转换*/
/*频率 捕获6 */
//EVAIMRC = 0x0002; /*使能cap2中断*/
//CAP2FIFO = 0; /*CAP2顶层栈*/
//CAP2FBOT = 0; /*CAP2底层栈*/
//CAPCONA = 0x2240; /*CAP2捕获容许,上升沿,或9004*/
//CAPCONA = 0x2210; /*CAP2捕获容许,上升沿,或9004*/
//GPTCONA = 0x0000;
//T1PR = 0xffff; /*定时器1设置*/
//T1CNT = 0;
//T1CON = 0x144c; /*连续增计数,预分频1/16*/
//EVAIFRC = 0xffff;
}
void softwareinit()
{
int i;
int *temp_pt;
temp_pt=&CSNA;
for (i=0;i<24;i++)
{
*temp_pt=csa[i];
temp_pt++;
}
temp_pt=&SSNA;
for (i=0;i<24;i++)
{
*temp_pt=snb[i];
temp_pt++;
}
temp_pt=&AR_DIZHI;
*temp_pt=0x0980;
temp_pt++;
temp_pt++;
*temp_pt=0x09a0;
temp_pt++;
temp_pt++;
*temp_pt=0x07e7;
temp_pt++;
temp_pt++;
*temp_pt=0x07e8;
temp_pt++;
temp_pt++;
*temp_pt=0x10;
temp_pt++;
temp_pt++;
*temp_pt=0xe740;
temp_pt++;
temp_pt++;
*temp_pt=0x09c0;
temp_pt++;
temp_pt++;
*temp_pt=0x1111;
//asm(" nop ");
asm(" LDP #26 "); //;(DP=26:0D00-0D7f)
asm(" SPLK #0,7ch ");
asm(" SPLK #0D00H,60h ");
asm(" SPLK #0D02H,62h "); //;sent iar iai adress
asm(" SPLK #0,5ch "); //;sent sample record
asm(" SPLK #0,5eh "); //;sent bhsample record
asm(" SPLK #25,74h "); //;0d74=25 Samplecount
asm(" SPLK #192,78h "); //;0d78=192 BHcount
asm(" SPLK #0,7Ah "); //;0d78=120 BHcount1
asm(" SPLK #0,64h "); //;0d64=0 BHSAMPLE1
//asm(" LACL #25 ");
//asm(" LAR AR7,#74H ");
//asm(" SACL *,0 "); //;0d74=25 Samplecount
//asm(" LACL #192 ");
//asm(" LAR AR7,#78H ");
// asm(" SACL *,0 "); //;0d78=192 BHcount
// asm(" LACL #5 ");
// asm(" LAR AR7,#7AH ");
// asm(" SACL *,0 "); //;0d78=120 BHcount1
// asm(" LACL #0 ");
// asm(" LAR AR7,#64H ");
//asm(" SACL *,0 "); //;0d64=0 BHSAMPLE1
//temp_pt=&ADDRAM_SHOUDIZHI;
temp_pt=&CAO_SHOUDIZHI;
for (i=0;i<24;i++)
{
*temp_pt=caobak[i];
temp_pt++;
}
*temp_pt=30000;
//遥测的变量初值
YCNum=0;
for(i=0;i<78;i++)
{
cImVal[i]=0;
}
for (i=0;i<31;i++)
{
cImVala[i]=0;
cImValp[i]=0;
cImValb[i]=0xff;
}
////////////////////////////////////////////////
//开入量的变量初值
for (i=0;i<16;i++)
{
YaoXin[i]=1;
YaoXinp[i]=1;
}
////////////////////////////////////////////////
//通讯的变量初值
send_length=1;
dataIndex=0;
senddata_length=0;
flag_485=_COMPLETE;
for(i=0;i<255;i++)
{
receive_data[i]=0;
receive_datap[i]=0;
senddata[i]=0;
}
////////////////////////////////////////////////
//SOE的变量初值
soe_no=0;
for(i=0;i<16;i++)
{
soe_xuhao[i]=0;
soe_value[i]=0;
soe_millisecond[i]=0;
soe_minute[i]=0;
soe_hour[i]=0;
soe_day[i]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -