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

📄 ddj.c

📁 电动机保护测量程序,用的是DSP2407,
💻 C
📖 第 1 页 / 共 5 页
字号:
               }
             }
            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 + -