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

📄 process.c

📁 AirConditioner project
💻 C
字号:
/*  Include  */
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908GZ60.h> /* include peripheral declarations */
#include "COMMON.h"
#include "PROCESS.h"

/* Global Variables */
extern UINT8 target_prosition[4];
extern struct ad_temperature_convert convert_InCar[41];           //0~40oC
extern struct ad_temperature_convert convert_OutCar[71];          //-10~60oC
extern UINT8 ad_data[4];
extern volatile VFD_G4_LOW g4_lo;
extern volatile VFD_G4_HI g4_hi;
extern UINT8 power;	                        //COMPRESSOR POWER
extern UINT8 settingtemp;
extern UINT8 fanladder;
extern UINT8 fandirection;

/******************************************************************************
 * Function:        Process_Data()
 *
 * Description:     
 *                  
 *
 * Returns:         none
 *
 * Notes:           
 *
 ******************************************************************************/
void Process_Data(void)
 {
   SINT8 temp_incar;                          //0~40oC
   SINT8 temp_outcar;                         //6~50oC 
   UINT8 i,j;
   SINT8 data1,data2;
   UINT8 sunlight;
   UINT8 water;
   UINT8 outcar;
   
   __RESET_WATCHDOG();                         // kicks the dog 
   
   /////   TEMPERATURE_INCAR CONVERT
   if(ad_data[0]>240){
      temp_incar=40;
   } else{
      for(i=0;i<40;i++){
         if(ad_data[0]>=convert_InCar[i].ad && ad_data[0]<convert_InCar[i+1].ad){
             temp_incar=convert_InCar[i].temperature;break;
         }
      }
   }
   
   /////   TEMPERATURE_OUTCAR CONVERT
   for(j=0;j<70;j++){
     if(ad_data[1]>=convert_OutCar[j].ad && ad_data[1]<convert_OutCar[j+1].ad){
       temp_outcar=convert_OutCar[j].temperature;break;
     }
   }
  
   /////////////////////////////////////////////   PROCESS DATA BEGIN
   
   data1=temp_incar-settingtemp;                
   data2=temp_outcar-settingtemp; 
   
   /////   SunLight to 3 zone
   if(ad_data[3]<80)                           
     {
      sunlight=HIGH;
     }
     else if(ad_data[3]>180)
       {
        sunlight=LOW;
       }
     else {sunlight=MIDDEL;} 
  
  /////   TEMP_Water to 3 zone
   if(ad_data[2]<80)                           
     {
      water=HIGH;
     }  
     else if(ad_data[2]>180)
       {
        water=LOW;
       }
     else {water=MIDDEL;}  
  
  /////		TEMP_OutCar-settingtemp to 4 zone
   if(data2>=10)                        
     {
      outcar=HIGH;
     }   
      else if(data2>=5 && data2<10)
       {
        outcar=MIDDEL;
       }
      else if(data2>=0 && data2<5)
       {
        outcar=LOW;
       } 
      else if(data2<0)
       {
        outcar=NONE;
       }
   
 //////////////////////////////////////////////  MOTOR TARGET PROSITION  
 
 /////  COOL MODE
 if(g4_hi.Bits.COOL == 1)               
   {
    if(data1 < 0){
      target_prosition[0]=S1;
      }
    else if(data1 >= 10)
      {
       target_prosition[0] = S10;
      }
      else if(data1>=5 && data1<10)
          {
           switch(data1)
            {                                       
              case    9 : target_prosition[0]=S9; break;
              case    8 : target_prosition[0]=S8; break;
              case    7 : target_prosition[0]=S7; break;
              case    6 : target_prosition[0]=S6; break;
              case    5 : target_prosition[0]=S5; break;
              default : break;
            }
            //   SUNLIGHT  
           switch(sunlight)
            {
              case  HIGH   : target_prosition[0]+=25; break;
              case  MIDDEL : target_prosition[0]+=15; break;
              case  LOW    : target_prosition[0]+=0;  break;
              default : break;
            }  				 
            //	 OUTCAR_TEMPERATURE
           switch(outcar)
            {
              case  HIGH   : target_prosition[0]+=20; break;
              case  MIDDEL : target_prosition[0]+=10; break;
              case  LOW    : target_prosition[0]+=0;  break;
              case  NONE   : target_prosition[0]+=0;  break;
              default : break;
            }  			
            //	 WATER_TEMPERATURE
           switch(water)
            {
              case  HIGH   : target_prosition[0]+=20;break;
              case  MIDDEL : target_prosition[0]+=0; break;
              case  LOW    : target_prosition[0]-=20;break;
              default : break;
            }  
          }
      else if(data1 < 5 && data1 >= 0)
          {
           switch(data1)
            {                                       
              case    4 : target_prosition[0]=S4; break;
              case    3 : target_prosition[0]=S3; break;
              case    2 : target_prosition[0]=S3; break;
              case    1 : target_prosition[0]=S3; break;
              case    0 : target_prosition[0]=S3; break;
              default : break;
            }
           // 	 SUNLIGHT
           switch(sunlight)
            {
              case  HIGH   : target_prosition[0]+=10; break;
              case  MIDDEL : target_prosition[0]+=5; break;
              case  LOW    : target_prosition[0]+=0;  break;
              default : break;
            }    	 		
           //    OUTCAR_TEMPERATURE
           switch(outcar)
            {
              case  HIGH   : target_prosition[0]+=10; break;
              case  MIDDEL : target_prosition[0]+=5;  break;
              case  LOW    : target_prosition[0]+=0;  break;                      break;
              case  NONE   : target_prosition[0]+=0;  break;
              default : break;
            }  			
           //    WATER_TEMPERATURE
           switch(water)
            {
              case  HIGH   : target_prosition[0]+=10;break;
              case  MIDDEL : target_prosition[0]+=0; break;
              case  LOW    : target_prosition[0]-=10;break;
              default : break;
            }  
          }
          
    if(data1<0 || data2<0){	                 //Compressor control 
        power=OFF;
      }else{
        power=ON;
      }
          
   }
/////   HEAT MODE   
 else if(g4_hi.Bits.COOL == 0)
   {
     power=OFF;                                           //already write in TBM
     
    if(data1 > 0){
       target_prosition[0] = S9;
      }
      else if(data1 <= -10) {
          target_prosition[0] = S1;
          }
      else if(data1<=-5 && data1>-10)
          {
            switch(data1)
            {                                       
              case    -9 : target_prosition[0]=S2; break;
              case    -8 : target_prosition[0]=S3; break;
              case    -7 : target_prosition[0]=S4; break;
              case    -6 : target_prosition[0]=S5; break;
              case    -5 : target_prosition[0]=S6; break;
              default : break;
            }
            //   SUNLIGHT  
           /*switch(sunlight)
            {
              case  HIGH   : target_prosition[0]+=35; break;
              case  MIDDEL : target_prosition[0]+=15; break;
              case  LOW    : target_prosition[0]+=0;  break;
              default : break;
            } */ 				 
            //	 OUTCAR_TEMPERATURE
           /*switch(outcar)
            {
              case  HIGH   : target_prosition[0]+=35; break;
              case  MIDDEL : target_prosition[0]+=15; break;
              case  LOW    : target_prosition[0]+=0;  break;
              case  NONE   : power=OFF;               break;
              default : break;
            } */ 			
            //	 WATER_TEMPERATURE
           switch(water)
            {
              case  HIGH   : target_prosition[0]+=20;break;
              case  MIDDEL : target_prosition[0]+=0; break;
              case  LOW    : target_prosition[0]-=20;break;
              default : break;
            }   
          }
      else if(data1 >= -5 && data1 <= 0)
          {
           switch(data1)
            {                                       
              case    -4 : target_prosition[0]=S7; break;
              case    -3 : target_prosition[0]=S8; break;
              case    -2 : target_prosition[0]=S8; break;
              case    -1 : target_prosition[0]=S8; break;
              case     0 : target_prosition[0]=S8; break;
              default : break;
            }
           // 	 SUNLIGHT
           /*switch(sunlight)
            {
              case  HIGH   : target_prosition[0]+=35; break;
              case  MIDDEL : target_prosition[0]+=15; break;
              case  LOW    : target_prosition[0]+=0;  break;
              default : break;
            } */   	 		
           //    OUTCAR_TEMPERATURE
           /*switch(outcar)
            {
              case  HIGH   : target_prosition[0]+=35; break;
              case  MIDDEL : target_prosition[0]+=15; break;
              case  LOW    : target_prosition[0]+=0;  break;                      break;
              case  NONE   : power=OFF;               break;
              default : break;
            } */ 			
           //    WATER_TEMPERATURE
           switch(water)
            {
              case  HIGH   : target_prosition[0]+=20;break;
              case  MIDDEL : target_prosition[0]+=0; break;
              case  LOW    : target_prosition[0]-=20;break;
              default : break;
            }  
          }
   
   }
   /////  LIMIT PROSITION
if(target_prosition[0]>S10)
   {
    target_prosition[0]=S10;
   }
    else if(target_prosition[0]<S1)
     {
      target_prosition[0]=S1;
     } 
 
///////////////////////////////////////////////   PROCESS MIX_MOTOR FINISH 

if(g4_lo.MergedBits.AUTO == 1){  //AUTO MODE
   if(g4_hi.Bits.COOL == 1){
      if(data1>=0 && data1<10){
        switch(data1)
            {                                       
              case    0 : target_prosition[1]=S3; break;
              case    1 : target_prosition[1]=S3; break;
              case    2 : target_prosition[1]=S3; break;
              case    3 : target_prosition[1]=S4; break;
              case    4 : target_prosition[1]=S5; break;
              case    5 : target_prosition[1]=S6; break;
              case    6 : target_prosition[1]=S7; break;
              case    7 : target_prosition[1]=S8; break;
              case    8 : target_prosition[1]=S9; break;
              case    9 : target_prosition[1]=S10;break;
              default : break;
            }
      }else if(data1>=10){
        target_prosition[1] = S10;
      }else if(data1<0){
        target_prosition[1] = S2;
      }
   }
}
else if(g4_lo.MergedBits.AUTO==0){			//USER MODE
                                        
if(g4_hi.Bits.f4 == 1)
  {
   target_prosition[1] = S1;         //OutCycle
  }
  else if(g4_hi.Bits.f4 == 0)
    {
     target_prosition[1] = S10;       //InCycle
    }			 

}
///////////////////////////////////////////////  PROCESS CYCLE_MOTOR FINISH 

  switch(fandirection)
    {                                       
      case    1 : target_prosition[2]=S4; break;         //HEAD+LEG
      case    2 : target_prosition[2]=S7; break;         //HEAD
      case    3 : target_prosition[2]=S1; break;         //LEG
      case    4 : target_prosition[2]=S10;break;         //FROST+LEG
      default : break;
     } 	 
    
 
///////////////////////////////////////////////  PROCESS MODE_MOTOR FINISH   

//////////  FAN  ///////////

 /*if(g4_lo.MergedBits.AUTO==1){          //AUTO MODE
  if(g4_hi.Bits.COOL == 1){
    if(data1>=10){
      fanladder=7;
    }else if(data1>=5 && data1<10){
      fanladder=5;
    }else if(data1>=0 && data1<5){
      switch(data1){
        case  0 : fanladder=2; break;
        case  1 : fanladder=2; break;
        case  2 : fanladder=3; break;
        case  3 : fanladder=3; break;
        case  4 : fanladder=4; break;
      }
    }else if(data1<0){
      fanladder = 1;
    }
   }
 }else if(g4_lo.MergedBits.AUTO==1); */

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -