#define ALLOCATE_EXTERN #include uint8_t Channel1_Error_Flag = 0; uint8_t Channel2_Error_Flag = 0; void main() { Sys.Init(); while (1) { UART1.Protocol_Analy(); //协议解析 if (Public.Channel1_StatusFlag == FALSE) //判断通道1是否关闭 { PWM.PWM1_HeatingSetting(0); //关闭加热通道1 Timer0.Error1_Timer = 0; //硬件错误检测计时清除 开始计时 } else { if ((ADC.Display_Temp1_Value == 0) && (Timer0.Error1_Timer >= 2)) //如果加热打开两秒后 温度还是零 认为温度传感器1故障 { Channel1_Error_Flag = System_Fault; //通道1温度传感器故障 // PWM.Heating_Flag1 = System_Fault; } else if (ADC.Display_Temp1_Value == 500) { Channel1_Error_Flag = System_Fault; //通道1温度传感器故障 } else { Channel1_Error_Flag = FALSE; } } if (Public.Channel2_StatusFlag == FALSE) //判断通道2是否关闭 { PWM.PWM2_HeatingSetting(0); //关闭加热通道2 Timer0.Error2_Timer = 0; //硬件错误检测计时清除 开始计时 } else { if ((Timer0.Error2_Timer >= 2) && (ADC.Display_Temp2_Value == 0)) //如果加热打开两秒后 温度还是零 认为温度传感器2故障 { Channel2_Error_Flag = System_Fault; //通道2温度传感器故障 // PWM.Heating_Flag2 = System_Fault; } else if (ADC.Display_Temp2_Value == 500) { Channel2_Error_Flag = System_Fault; //通道2温度传感器故障 } else { Channel2_Error_Flag = FALSE; } } if ((Public.Channel1_StatusFlag == FALSE) && (Public.Channel2_StatusFlag == FALSE)) //判断两个加热是否都关闭 { FAN_PIN = LOW; //关闭风机 } else { FAN_PIN = HIGH; //打开风机 } ADC.Get_ADCData(); //读取AD值转化成温度值 if (Timer0.TM1650_Flag == 0) { TM1650_Display(&IIC_1, Public.Setting_Temp1, 1); //显示通道1 } else { TM1650_Display(&IIC_1, Public.Setting_Temp2, 2); //显示通道2 } WDTC |= 0x10; //喂看门狗 // } } }