📄 process.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 + -