1836 lines
58 KiB
C
Raw Normal View History

2025-07-04 11:26:12 +08:00
#include "STC8.H"
#include <intrins.h>
/*************** <20><EFBFBD><EAB6A8> **************/
#define FOSC 11059200UL //MCU<43><55><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>Ϊ11.0592MHz
#define BRT (65536 - FOSC / 115200 / 4) //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD>Ϊ115200
#define IAP_ADDRESS 0x0000
#define LED_ON P00 = 0
#define LED_OFF P00 = 1
#define WT_30M 0x80
#define WT_24M 0x81
#define WT_20M 0x82
#define WT_12M 0x83
#define WT_6M 0x84
#define WT_3M 0x85
#define WT_2M 0x86
#define WT_1M 0x87
#define ISP_STANDBY() ISP_CMD = 0 /* ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3A8>ֹ<EFBFBD><D6B9>*/
#define ISP_READ() ISP_CMD = 1 /* ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define ISP_WRITE() ISP_CMD = 2 /* ISPд<50><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define ISP_ERASE() ISP_CMD = 3 /* ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
//sfr ISP_TRIG = 0xC6;
#define ISP_TRIG() ISP_TRIG = 0x5A, ISP_TRIG = 0xA5 /* ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
// 7 6 5 4 3 2 1 0 Reset Value
//sfr ISP_CONTR = 0xC7; ISPEN SWBS SWRST CFAIL - WT2 WT1 WT0 0000,x000 //ISP Control Register
#define ISP_EN (1<<7)
#define ISP_SWBS (1<<6)
#define ISP_SWRST (1<<5)
#define ISP_CMD_FAIL (1<<4)
#define ISP_WAIT_1MHZ 7
#define ISP_WAIT_2MHZ 6
#define ISP_WAIT_3MHZ 5
#define ISP_WAIT_6MHZ 4
#define ISP_WAIT_12MHZ 3
#define ISP_WAIT_20MHZ 2
#define ISP_WAIT_24MHZ 1
#define ISP_WAIT_30MHZ 0
#if (FOSC >= 24000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_30MHZ
#elif (FOSC >= 20000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_24MHZ
#elif (FOSC >= 12000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_20MHZ
#elif (FOSC >= 6000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_12MHZ
#elif (FOSC >= 3000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_6MHZ
#elif (FOSC >= 2000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_3MHZ
#elif (FOSC >= 1000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_2MHZ
#else
#define ISP_WAIT_FREQUENCY ISP_WAIT_1MHZ
#endif
/***************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**************/
void PWM_Init();
void PWM_TO_DAC(unsigned int PowerVol,unsigned int OutVol);
void Timer0_Init();
void UART1_Init();
void ADC_Init();
void UartSendData(void);
void DataParsing(void);
void AutoAction(void);
void Read_ADC();
void Delay10ms();
void DisableEEPROM(void);
void EEPROM_read_n(unsigned int EE_address,unsigned char *DataAddress,unsigned int number);
void EEPROM_SectorErase(unsigned int EE_address);
void EEPROM_write_n(unsigned int EE_address,unsigned char *DataAddress,unsigned int number);
void Parameter_Save(void);
unsigned int Get_ADC12bitResult(unsigned char channel); //channel = 0~14
unsigned int ADC_Average(unsigned int *buff,unsigned int num,unsigned int threshold);
/***************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**************/
bit busy = 0;
bit SendEN = 0;
bit SendInit = 0;
bit Rx_Busy = 0;
bit PWM_ON = 0;
bit Uart1Ready_R = 0;
bit AcqInitFlag = 0;
bit AD_Refresh = 0;
bit Save_Flag = 0;
bit PWM_ON_EN = 0;
unsigned char xdata Rxbuff[20];
unsigned char xdata aRxBufferTemp = 0;
unsigned char xdata RX_5A_OK=0,RX_A5_OK=0;
unsigned char xdata Rx_count_UART1= 0; //UART1<54><31><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
unsigned char xdata Rx_Cnt = 0;
unsigned char xdata SendBuffer[50];
unsigned char xdata TableRead[50];
unsigned char xdata TableWrite[50];
unsigned int xdata ADC_EXT_Value = 0;
unsigned int xdata ADC0_Value = 0;
unsigned int xdata ADC1_Value = 0;
unsigned int xdata ADC2_Value = 0;
unsigned int xdata TwinkleCnt = 0;
unsigned int xdata Cnt = 0,Times = 0,AcqInitCnt = 0;
unsigned int xdata UartCnt = 0;
unsigned int xdata SentCnt = 0;
unsigned int xdata ADC_Cnt = 0;
unsigned int xdata Time_Cnt = 0,Time_Sec = 0,Time_Min = 0,Save_Cnt = 0;
unsigned int xdata ADC_EXT_Temp[120];
unsigned int xdata ADC0_Temp[120];
unsigned int xdata ADC1_Temp[120];
unsigned int xdata ADC2_Temp[120];
unsigned int xdata RunTime = 0; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
unsigned int xdata InVoltage = 12000; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
unsigned int xdata OutVoltage = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
unsigned int xdata EXT_Value = 0; //<2F>ⲿ<EFBFBD><E2B2BF>ѹ
unsigned int xdata SetVoltage = 0; //<2F><><EFBFBD>õ<EFBFBD>ѹ
unsigned int xdata SetCorroV = 0; //<2F><>ʴ<EFBFBD><CAB4>ѹ
unsigned int xdata AcqVolatage= 0; //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹ
unsigned int xdata OutCurrent = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ŵ<EFBFBD>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>)
unsigned int xdata OutSet = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int xdata DisSet = 0; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
unsigned int xdata OutTemp;
unsigned int xdata CalibrationVoltage = 0; //<2F><EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
unsigned int xdata InitAcqVolatage = 0; //<2F><>ʼ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ѹ
unsigned int xdata InitAcqCurrent = 0; //<2F><>ʼ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
unsigned int xdata AcqVolatage1 = 0; //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹ1
unsigned int xdata Limitvoltage = 0; //<2F><><EFBFBD>޵<EFBFBD>ѹ
unsigned int xdata Temp01 = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int xdata Temp02 = 0;
unsigned int xdata AcqError = 0; //ʵʱ<CAB5>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
unsigned int xdata InitError = 0; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
unsigned char xdata Shut_Hour = 0;
unsigned char xdata Shut_Min = 0;
unsigned char xdata Shut_Sec = 0;
unsigned int xdata Shut_MS = 0;
int OffsetVoltage = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
float xdata IA; //ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float xdata CurrentError = 0;
float xdata AdjVoltage = 0; //<2F><><EFBFBD>ڵ<EFBFBD>ѹ
float xdata CompensationValue = 0; //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
float xdata OutGain = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **************/
void main()
{
Timer0_Init();
PWM_Init();
UART1_Init();
ADC_Init();
ES = 1;
EA = 1;
UartCnt = 0;
SendEN = 0;
ADC_Cnt = 0;
Times = 0;
Delay10ms();
Delay10ms();
Delay10ms();
Delay10ms();
EEPROM_read_n(IAP_ADDRESS,TableRead,18); //<2F><>EEPROM<4F><4D>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
RunTime = TableRead[0] *256UL + TableRead[1] ; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
SetVoltage = TableRead[2] *256UL + TableRead[3] ; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><><EFBFBD>õ<EFBFBD>ѹ
SetCorroV = TableRead[4] *256UL + TableRead[5] ; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><>ʴ<EFBFBD><CAB4>ѹ
OutSet = TableRead[6] *256UL + TableRead[7] ; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DisSet = TableRead[8] *256UL + TableRead[9]; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
CurrentError = (float)(TableRead[10] *256UL + TableRead[11])/100 ; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AdjVoltage = (float)(TableRead[12] *256UL + TableRead[13]) ; // <20><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><><EFBFBD>ڵ<EFBFBD>ѹ
AcqError = (float)(TableRead[14] *256UL + TableRead[15])/10 ; // <20><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
Limitvoltage = TableRead[16]*256UL + TableRead[17]; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD>--<2D><><EFBFBD>޵<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>FFFF<46><46><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(RunTime==0xFFFF)
{
RunTime = 0;
}
if(SetVoltage==0xFFFF)
{
SetVoltage = 2000;
}
if(SetCorroV==0xFFFF)
{
SetCorroV = 920;
}
if(Limitvoltage==0xFFFF)
{
Limitvoltage = 1600;
}
if(AdjVoltage==0xFFFF)
{
AdjVoltage = 3;
}
if(CurrentError==(0xFFFF)/100.0)
{
CurrentError = 1000;
}
if(AcqError==(0xFFFF)/10.0)
{
AcqError = 100;
}
if(OutSet==0xFFFF)
{
OutSet = 10000;
}
if(DisSet==0xFFFF)
{
DisSet = 16146;
}
OutGain = (float)OutSet/10000;
CalibrationVoltage = SetVoltage;
PWM_TO_DAC(5000,(unsigned int)(CalibrationVoltage *OutGain)+(unsigned int)IA);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹΪ<D1B9><CEAA>5000MV<4D><56><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹΪ<D1B9><CEAA>CalibrationVoltage<67><65><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹΪ<D1B9><CEAA>SetOutVoltage/3
AcqInitCnt = 0;
while (1)
{
DataParsing(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
UartSendData(); //<2F><><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Read_ADC(); //AD<41>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
Parameter_Save();
if(AcqInitFlag==0) //<2F>ϵ<EFBFBD><CFB5>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>ѹ
{
if(AcqInitCnt>1000) //<2F>ϵ<EFBFBD>3<EFBFBD><33><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD>ʼ<EFBFBD><CABC>ѹ<EFBFBD><D1B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
{
InitAcqVolatage = AcqVolatage; //<2F><>ȡ<EFBFBD><C8A1>ʼ<EFBFBD><CABC>ѹ
InitAcqCurrent = (unsigned int)IA; //<2F><>ȡ<EFBFBD><C8A1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
AcqInitFlag = 1;
AcqInitCnt = 0;
}
}
if(EXT_Value<1000) //<2F>ⲿ<EFBFBD><E2B2BF>ѹС<D1B9><D0A1>1000mV
{
// LED_OFF;
LED_ON; // <20><><EFBFBD><EFBFBD>ר<EFBFBD><D7A8>
if(AD_Refresh)
{
PWM_TO_DAC(5000,0);//PWM<57><4D><EFBFBD><EFBFBD>0V<30><56><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD>0V<30><56>
AD_Refresh = 0;
}
}
if(EXT_Value>1800)//<2F>ⲿ<EFBFBD><E2B2BF>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>2000mV
{
AutoAction(); //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
}
}
}
void AutoAction(void)
{
if(!PWM_ON_EN)//PWM<57><4D><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
if(AcqVolatage>=Limitvoltage)//<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>1500mV,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>0.5mA<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(AD_Refresh)
LED_ON;
// LED_OFF;
{
PWM_ON_EN = 1;
Shut_Hour = 0;
Shut_Min = 0;
Shut_Sec = 0;
Shut_MS = 0;
// PWM_ON = 1;
PWM_TO_DAC(5000,0);
AD_Refresh = 0;
}
}
else
{
{
//<2F><><EFBFBD>߼<EFBFBD>
// if((AcqVolatage<500)||(AcqVolatage>SetCorroV+IA*100)) //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹС<D1B9><D0A1>100MV<4D><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ѹ
if(AcqVolatage<400)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
PWM_TO_DAC(5000,(unsigned int)(SetVoltage*OutGain+(unsigned int)IA));
AD_Refresh = 0;
}
else
{
if(AD_Refresh)
{
if(AcqVolatage<400)
{
AcqVolatage1 = 400;
}
else if((AcqVolatage>=400)&&(AcqVolatage<=2000))
{
AcqVolatage1 = AcqVolatage;
}
else
{
AcqVolatage1 =2000;
}
//<2F><><EFBFBD>ݸ<EFBFBD>ʴ<EFBFBD><CAB4>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
if(AcqVolatage1>SetCorroV) //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ʴ<EFBFBD><CAB4>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Temp01 = AcqVolatage1-SetCorroV;
if((Temp01>=0)&&(Temp01<10))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/5);
}
else if((Temp01>=10)&&(Temp01<30))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/10);
}
else if((Temp01>=30)&&(Temp01<50))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/15);
}
else if((Temp01>=50)&&(Temp01<70))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/20);
}
else if((Temp01>=70)&&(Temp01<90))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/25);
}
else if((Temp01>=90)&&(Temp01<110))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/30);
}
else if((Temp01>=110)&&(Temp01<130))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/35);
}
else if((Temp01>=130)&&(Temp01<150))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/40);
}
else if((Temp01>=150)&&(Temp01<170))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/45);
}
else if((Temp01>=170)&&(Temp01<190))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/50);
}
else if((Temp01>=190)&&(Temp01<210))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/55);
}
else if((Temp01>=210)&&(Temp01<230))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/60);
}
else if((Temp01>=230)&&(Temp01<250))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/65);
}
else if((Temp01>=250)&&(Temp01<270))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/70);
}
else if((Temp01>=270)&&(Temp01<290))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/75);
}
else if((Temp01>=290)&&(Temp01<310))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/80);
}
else if((Temp01>=310)&&(Temp01<330))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/85);
}
else if((Temp01>=330)&&(Temp01<350))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/90);
}
else if((Temp01>=350)&&(Temp01<370))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/95);
}
else if((Temp01>=370)&&(Temp01<390))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/100);
}
else if((Temp01>=390)&&(Temp01<410))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/105);
}
else if((Temp01>=410)&&(Temp01<430))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/110);
}
else if((Temp01>=430)&&(Temp01<450))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/115);
}
else if((Temp01>=450)&&(Temp01<470))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/120);
}
else if((Temp01>=470)&&(Temp01<490))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/125);
}
else if((Temp01>=490)&&(Temp01<510))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/130);
}
else if((Temp01>=510)&&(Temp01<530))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/135);
}
else if((Temp01>=530)&&(Temp01<550))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/140);
}
else if((Temp01>=550)&&(Temp01<570))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/145);
}
else if((Temp01>=570)&&(Temp01<590))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/150);
}
else if((Temp01>=590)&&(Temp01<610))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/155);
}
else if((Temp01>=610)&&(Temp01<630))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/160);
}
else if((Temp01>=630)&&(Temp01<650))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/165);
}
else if((Temp01>=650)&&(Temp01<670))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/170);
}
else if((Temp01>=670)&&(Temp01<690))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/175);
}
else if((Temp01>=690)&&(Temp01<710))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/180);
}
else if((Temp01>=710)&&(Temp01<730))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/185);
}
else if((Temp01>=730)&&(Temp01<750))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/190);
}
else if((Temp01>=750)&&(Temp01<770))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/195);
}
else if((Temp01>=770)&&(Temp01<790))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/200);
}
else if((Temp01>=790)&&(Temp01<810))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/205);
}
else if((Temp01>=810)&&(Temp01<830))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/210);
}
else if((Temp01>=830)&&(Temp01<850))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/215);
}
else if((Temp01>=850)&&(Temp01<870))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/220);
}
else if((Temp01>=870)&&(Temp01<890))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/225);
}
else if((Temp01>=890)&&(Temp01<910))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/230);
}
else if((Temp01>=910)&&(Temp01<930))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/235);
}
else if((Temp01>=930)&&(Temp01<950))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/240);
}
else if((Temp01>=950)&&(Temp01<970))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/245);
}
else if((Temp01>=970)&&(Temp01<990))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/250);
}
else if((Temp01>=990)&&(Temp01<1010))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/255);
}
else if((Temp01>=1010)&&(Temp01<1030))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/260);
}
else if((Temp01>=1030)&&(Temp01<1050))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/265);
}
else if((Temp01>=1050)&&(Temp01<1070))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/270);
}
else if((Temp01>=1070)&&(Temp01<1090))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/275);
}
else if((Temp01>=1090)&&(Temp01<1110))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/280);
}
else if((Temp01>=1110)&&(Temp01<1130))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/285);
}
else if((Temp01>=1130)&&(Temp01<1150))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/290);
}
else if((Temp01>=1150)&&(Temp01<1170))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/295);
}
else if((Temp01>=1170)&&(Temp01<1190))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/300);
}
else if((Temp01>=1190)&&(Temp01<1210))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/305);
}
else if((Temp01>=1210)&&(Temp01<1230))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/310);
}
else if((Temp01>=1230)&&(Temp01<1250))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/315);
}
else if((Temp01>=1250)&&(Temp01<1270))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/320);
}
else if((Temp01>=1270)&&(Temp01<1290))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/325);
}
else if((Temp01>=1290)&&(Temp01<1310))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/330);
}
else if((Temp01>=1310)&&(Temp01<1330))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/335);
}
else if((Temp01>=1330)&&(Temp01<1350))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/340);
}
else if((Temp01>=1350)&&(Temp01<1370))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/345);
}
else if((Temp01>=1370)&&(Temp01<1390))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/350);
}
else if((Temp01>=1390)&&(Temp01<1410))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/355);
}
else if((Temp01>=1410)&&(Temp01<1430))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/360);
}
else if((Temp01>=1430)&&(Temp01<1450))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/365);
}
else if((Temp01>=1450)&&(Temp01<1470))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/370);
}
else if((Temp01>=1470)&&(Temp01<1490))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/375);
}
else if((Temp01>=1490)&&(Temp01<1510))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/380);
}
else if((Temp01>=1510)&&(Temp01<1530))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/385);
}
else if((Temp01>=1530)&&(Temp01<1550))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/390);
}
else if((Temp01>=1550)&&(Temp01<1570))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/395);
}
else if((Temp01>=1570)&&(Temp01<1590))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/400);
}
else if((Temp01>=1590)&&(Temp01<1610))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/405);
}
else if((Temp01>=1610)&&(Temp01<1630))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/410);
}
else if((Temp01>=1630)&&(Temp01<1650))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/415);
}
else if((Temp01>=1650)&&(Temp01<1670))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/420);
}
else if((Temp01>=1670)&&(Temp01<1690))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/425);
}
else if((Temp01>=1690)&&(Temp01<1710))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/430);
}
else if((Temp01>=1710)&&(Temp01<1730))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/435);
}
else if((Temp01>=1730)&&(Temp01<1750))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/440);
}
else if((Temp01>=1750)&&(Temp01<1770))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/445);
}
else if((Temp01>=1770)&&(Temp01<1790))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/450);
}
else if((Temp01>=1790)&&(Temp01<1810))
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/455);
}
else
{
CalibrationVoltage = CalibrationVoltage - (unsigned int)(Temp01*AdjVoltage/460);
}
}
if(AcqVolatage1<SetCorroV) //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹС<D1B9><D0A1><EFBFBD><EFBFBD>ĸ<EFBFBD>ʴ<EFBFBD><CAB4>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Temp02 = SetCorroV-AcqVolatage1;
if((Temp02>=0)&&(Temp02<10))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/5);
}
else if((Temp02>=10)&&(Temp02<30))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/10);
}
else if((Temp02>=30)&&(Temp02<50))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/15);
}
else if((Temp02>=50)&&(Temp02<70))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/20);
}
else if((Temp02>=70)&&(Temp02<90))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/25);
}
else if((Temp02>=90)&&(Temp02<110))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/30);
}
else if((Temp02>=110)&&(Temp02<130))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/35);
}
else if((Temp02>=130)&&(Temp02<150))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/40);
}
else if((Temp02>=150)&&(Temp02<170))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/45);
}
else if((Temp02>=170)&&(Temp02<190))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/50);
}
else if((Temp02>=190)&&(Temp02<210))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/55);
}
else if((Temp02>=210)&&(Temp02<230))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/60);
}
else if((Temp02>=230)&&(Temp02<250))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/65);
}
else if((Temp02>=250)&&(Temp02<270))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/70);
}
else if((Temp02>=270)&&(Temp02<290))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/75);
}
else if((Temp02>=290)&&(Temp02<310))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/80);
}
else if((Temp02>=310)&&(Temp02<330))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/85);
}
else if((Temp02>=330)&&(Temp02<350))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/90);
}
else if((Temp02>=350)&&(Temp02<370))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/95);
}
else if((Temp02>=370)&&(Temp02<390))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/100);
}
else if((Temp02>=390)&&(Temp02<410))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/105);
}
else if((Temp02>=410)&&(Temp02<430))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/110);
}
else if((Temp02>=430)&&(Temp02<450))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/115);
}
else if((Temp02>=450)&&(Temp02<470))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/120);
}
else if((Temp02>=470)&&(Temp02<490))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/125);
}
else if((Temp02>=490)&&(Temp02<510))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/130);
}
else if((Temp02>=510)&&(Temp02<530))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/135);
}
else if((Temp02>=530)&&(Temp02<550))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/140);
}
else if((Temp02>=550)&&(Temp02<570))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/145);
}
else if((Temp02>=570)&&(Temp02<590))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/150);
}
else if((Temp02>=590)&&(Temp02<610))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/155);
}
else if((Temp02>=610)&&(Temp02<630))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/160);
}
else if((Temp02>=630)&&(Temp02<650))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/165);
}
else if((Temp02>=650)&&(Temp02<670))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/170);
}
else if((Temp02>=670)&&(Temp02<690))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/175);
}
else if((Temp02>=690)&&(Temp02<710))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/180);
}
else if((Temp02>=710)&&(Temp02<730))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/185);
}
else if((Temp02>=730)&&(Temp02<750))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/190);
}
else if((Temp02>=750)&&(Temp02<770))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/195);
}
else if((Temp02>=770)&&(Temp02<790))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/200);
}
else if((Temp02>=790)&&(Temp02<810))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/205);
}
else if((Temp02>=810)&&(Temp02<830))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/210);
}
else if((Temp02>=830)&&(Temp02<850))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/215);
}
else if((Temp02>=850)&&(Temp02<870))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/220);
}
else if((Temp02>=870)&&(Temp02<890))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/225);
}
else if((Temp02>=890)&&(Temp02<910))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/230);
}
else if((Temp02>=910)&&(Temp02<930))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/235);
}
else if((Temp02>=930)&&(Temp02<950))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/240);
}
else if((Temp02>=950)&&(Temp02<970))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/245);
}
else if((Temp02>=970)&&(Temp02<990))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/250);
}
else if((Temp02>=990)&&(Temp02<1010))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/255);
}
else if((Temp02>=1010)&&(Temp02<1030))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/260);
}
else if((Temp02>=1030)&&(Temp02<1050))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/265);
}
else if((Temp02>=1050)&&(Temp02<1070))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/270);
}
else if((Temp02>=1070)&&(Temp02<1090))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/275);
}
else if((Temp02>=1090)&&(Temp02<1110))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/280);
}
else if((Temp02>=1110)&&(Temp02<1130))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/285);
}
else if((Temp02>=1130)&&(Temp02<1150))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/290);
}
else if((Temp02>=1150)&&(Temp02<1170))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/295);
}
else if((Temp02>=1170)&&(Temp02<1190))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/300);
}
else if((Temp02>=1190)&&(Temp02<1210))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/305);
}
else if((Temp02>=1210)&&(Temp02<1230))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/310);
}
else if((Temp02>=1230)&&(Temp02<1250))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/315);
}
else if((Temp02>=1250)&&(Temp02<1270))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/320);
}
else if((Temp02>=1270)&&(Temp02<1290))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/325);
}
else if((Temp02>=1290)&&(Temp02<1310))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/330);
}
else if((Temp02>=1310)&&(Temp02<1330))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/335);
}
else if((Temp02>=1330)&&(Temp02<1350))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/340);
}
else if((Temp02>=1350)&&(Temp02<1370))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/345);
}
else if((Temp02>=1370)&&(Temp02<1390))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/350);
}
else if((Temp02>=1390)&&(Temp02<1410))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/355);
}
else if((Temp02>=1410)&&(Temp02<1430))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/360);
}
else if((Temp02>=1430)&&(Temp02<1450))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/365);
}
else if((Temp02>=1450)&&(Temp02<1470))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/370);
}
else if((Temp02>=1470)&&(Temp02<1490))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/375);
}
else if((Temp02>=1490)&&(Temp02<1510))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/380);
}
else if((Temp02>=1510)&&(Temp02<1530))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/385);
}
else if((Temp02>=1530)&&(Temp02<1550))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/390);
}
else if((Temp02>=1550)&&(Temp02<1570))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/395);
}
else if((Temp02>=1570)&&(Temp02<1590))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/400);
}
else if((Temp02>=1590)&&(Temp02<1610))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/405);
}
else if((Temp02>=1610)&&(Temp02<1630))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/410);
}
else if((Temp02>=1630)&&(Temp02<1650))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/415);
}
else if((Temp02>=1650)&&(Temp02<1670))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/420);
}
else if((Temp02>=1670)&&(Temp02<1690))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/425);
}
else if((Temp02>=1690)&&(Temp02<1710))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/430);
}
else if((Temp02>=1710)&&(Temp02<1730))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/435);
}
else if((Temp02>=1730)&&(Temp02<1750))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/440);
}
else if((Temp02>=1750)&&(Temp02<1770))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/445);
}
else if((Temp02>=1770)&&(Temp02<1790))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/450);
}
else if((Temp02>=1790)&&(Temp02<1810))
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/455);
}
else
{
CalibrationVoltage = CalibrationVoltage + (unsigned int)(Temp02*AdjVoltage/460);
}
}
OffsetVoltage = SetVoltage - CalibrationVoltage;//<2F><><EFBFBD><EFBFBD><E3B2B9><EFBFBD><EFBFBD>ѹֵ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
PWM_TO_DAC(5000,(unsigned int)(CalibrationVoltage *OutGain+(unsigned int)IA));
}
AD_Refresh = 0;
}
}
//ָʾ<D6B8><CABE>
// if((AcqVolatage>500)&&(IA>0.05))//<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>100MV
// {
// LED_OFF;
// }
// else
// {
// LED_ON;
// }
if(AcqVolatage>500) // <20><><EFBFBD><EFBFBD>ר<EFBFBD><D7A8>
{
LED_ON;
}
else
{
LED_OFF;
}
}
OutCurrent = (unsigned int)(IA*100); //<2F>Ŵ<EFBFBD>10<31><30><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ã<EFBFBD>
}
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 144;
j = 157;
do
{
while (--j);
} while (--i);
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: DisableEEPROM(void)
// <20><><EFBFBD><EFBFBD>: <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ISP/IAP.
// <20><><EFBFBD><EFBFBD>: non.
// <20><><EFBFBD><EFBFBD>: non.
// <20>汾: V1.0
//========================================================================
*/
void DisableEEPROM(void)
{
ISP_CONTR = 0; //<2F>ر<EFBFBD>ISP<53><50><EFBFBD><EFBFBD>
ISP_CMD = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
ISP_TRIG = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
ISP_ADDRH = 0x80; //<2F><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ISP<53><50><EFBFBD><EFBFBD>
ISP_ADDRL = 0x00;
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void EEPROM_read_n(unsigned int EE_address,unsigned char *DataAddress,unsigned int number)
// <20><><EFBFBD><EFBFBD>: <20><>ָ<EFBFBD><D6B8>EEPROM<4F>׵<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>n<EFBFBD><6E><EFBFBD>ֽڷ<D6BD>ָ<EFBFBD><D6B8><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>.
// <20><><EFBFBD><EFBFBD>: EE_address: <20><><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD>׵<EFBFBD>ַ.
// DataAddress: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷŻ<DDB7><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ.
// number: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>.
// <20><><EFBFBD><EFBFBD>: non.
// <20>汾: V1.0
//========================================================================
*/
void EEPROM_read_n(unsigned int EE_address,unsigned char *DataAddress,unsigned int number)
{
// EA = 0; //<2F><>ֹ<EFBFBD>ж<EFBFBD>
ISP_CONTR = (ISP_EN + ISP_WAIT_FREQUENCY); //<2F><><EFBFBD>õȴ<C3B5>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ISP/ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ξ͹<CEBE>
ISP_READ(); //<2F><><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EEB2BB><EFBFBD>ı<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
do
{
ISP_ADDRH = EE_address / 256; //<2F>͵<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD><D6B7>Ҫ<EFBFBD>ı<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ַ<EFBFBD><D6B7>
ISP_ADDRL = EE_address % 256; //<2F>͵<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֽ<EFBFBD>
ISP_TRIG(); //<2F><><EFBFBD><EFBFBD>5AH<41><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A5H<35><48>ISP/ISP<53><50><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ζ<EFBFBD><CEB6><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>A5H<35><48><EFBFBD><EFBFBD>ISP/ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//CPU<50>ȴ<EFBFBD>ISP<53><50><EFBFBD>ɺ󣬲Ż<F3A3ACB2><C5BB><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>
_nop_();
*DataAddress = ISP_DATA; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EE_address++;
DataAddress++;
}while(--number);
DisableEEPROM();
// EA = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
}
/******************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *****************/
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void EEPROM_SectorErase(unsigned int EE_address)
// <20><><EFBFBD><EFBFBD>: <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD>: EE_address: Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM<4F>ĵ<EFBFBD>ַ.
// <20><><EFBFBD><EFBFBD>: non.
// <20>汾: V1.0
//========================================================================
*/
void EEPROM_SectorErase(unsigned int EE_address)
{
// EA = 0; //<2F><>ֹ<EFBFBD>ж<EFBFBD>
//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ֽڲ<D6BD><DAB2><EFBFBD><EFBFBD><EFBFBD>512<31>ֽ<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڵ<D6BD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
ISP_ADDRH = EE_address / 256; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD><D6B7>Ҫ<EFBFBD>ı<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ַ<EFBFBD><D6B7>
ISP_ADDRL = EE_address % 256; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֽ<EFBFBD>
ISP_CONTR = (ISP_EN + ISP_WAIT_FREQUENCY); //<2F><><EFBFBD>õȴ<C3B5>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ISP/ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ξ͹<CEBE>
ISP_ERASE(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EEB2BB><EFBFBD>ı<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ISP_TRIG();
_nop_();
DisableEEPROM();
// EA = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void EEPROM_write_n(unsigned int EE_address,unsigned char *DataAddress,unsigned int number)
// <20><><EFBFBD><EFBFBD>: <20>ѻ<EFBFBD><D1BB><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4>ָ<EFBFBD><D6B8><EFBFBD>׵<EFBFBD>ַ<EFBFBD><D6B7>EEPROM.
// <20><><EFBFBD><EFBFBD>: EE_address: д<><D0B4>EEPROM<4F><4D><EFBFBD>׵<EFBFBD>ַ.
// DataAddress: д<><D0B4>Դ<EFBFBD><D4B4><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ.
// number: д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>.
// <20><><EFBFBD><EFBFBD>: non.
// <20>汾: V1.0
//========================================================================
*/
void EEPROM_write_n(unsigned int EE_address,unsigned char *DataAddress,unsigned int number)
{
// EA = 0; //<2F><>ֹ<EFBFBD>ж<EFBFBD>
ISP_CONTR = (ISP_EN + ISP_WAIT_FREQUENCY); //<2F><><EFBFBD>õȴ<C3B5>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ISP/ISP<53><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ξ͹<CEBE>
ISP_WRITE(); //<2F><><EFBFBD>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EEB2BB><EFBFBD>ı<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
do
{
ISP_ADDRH = EE_address / 256; //<2F>͵<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD><D6B7>Ҫ<EFBFBD>ı<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ַ<EFBFBD><D6B7>
ISP_ADDRL = EE_address % 256; //<2F>͵<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֽ<EFBFBD>
ISP_DATA = *DataAddress; //<2F><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ISP_DATA<54><41>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>ݸı<DDB8>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ISP_TRIG();
_nop_();
EE_address++;
DataAddress++;
}while(--number);
DisableEEPROM();
// EA = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: ADC_Init()
// <20><><EFBFBD><EFBFBD>: ADC_Init<69><74>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void ADC_Init()
{
P1M0 = 0x00; //<2F><><EFBFBD><EFBFBD>P1.4<EFBFBD><EFBFBD>P1.5<EFBFBD><EFBFBD>P1.6<EFBFBD><EFBFBD>P1.7ΪADC<EFBFBD><EFBFBD>
P1M1 = 0xF0;
ADCCFG |= 0x2F; //<2F><><EFBFBD><EFBFBD>ADCʱ<43><CAB1>Ϊϵͳʱ<CDB3><CAB1>/2/16/Speed,<2C><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD>
ADC_CONTR = 0x80; //ʹ<><CAB9>ADCģ<43><C4A3>
ADC_CONTR |= 0x40; //<2F><><EFBFBD><EFBFBD>ADת<44><D7AA>
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: unsigned int Get_ADC12bitResult(unsigned char channel)
// <20><><EFBFBD><EFBFBD>: <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ADC<44><43><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD>: channel: ѡ<><D1A1>Ҫת<D2AA><D7AA><EFBFBD><EFBFBD>ADC.
// <20><><EFBFBD><EFBFBD>: 12λADC<44><43><EFBFBD><EFBFBD>.
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
unsigned int Get_ADC12bitResult(unsigned char channel) //channel = 0~14
{
ADC_RES = 0;
ADC_RESL = 0;
ADC_CONTR = (ADC_CONTR & 0xe0) | 0x40 | channel; //start the ADC
_nop_();
_nop_();
while((ADC_CONTR & 0x20) == 0); //wait for ADC finish
ADC_CONTR &= ~0x20; //<2F><><EFBFBD><EFBFBD>ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
return (((unsigned int)ADC_RES << 8) | ADC_RESL);
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: unsigned int ADC_Average(__IO unsigned int *buff,unsigned int num,unsigned int threshold)
// <20><><EFBFBD><EFBFBD>: ͨ<><CDA8>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7A8>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>ֵ.
// <20><><EFBFBD><EFBFBD>: *buff<66><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬num<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>threshold<6C><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>: 12λADC<44><43><EFBFBD><EFBFBD>.
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
unsigned int ADC_Average(unsigned int *buff,unsigned int num,unsigned int threshold)
{
//<2F>ɼ<EFBFBD>120<32><30><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned long sigma = 0;
unsigned int i = 0,j = 0;
unsigned int temp = 0;
unsigned long ADR[15];
for(j=0;j<num;j+=8)
{
temp=0;
for(i=0;i<8;i++)
{
temp+=buff[j+i];
}
ADR[j/8]=temp/2;
}
for(i=0;i<15;i++)
{
for(j=0;j<15-1;j++)
{
if(ADR[j]<ADR[j+1])
{
temp = ADR[j];
ADR[j] = ADR[j+1];
ADR[j+1]= temp;
}
}
}
for(i=threshold;i<(15-threshold);i++)
{
sigma = sigma + ADR[i];
}
temp = sigma/(15-threshold*2);
return(temp);
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void Read_ADC()
// <20><><EFBFBD><EFBFBD>: <20><>ʱ<EFBFBD><CAB1>ȡADC<44><43>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>ȡƽ<C8A1><C6BD>ֵ.
// <20><><EFBFBD><EFBFBD>: <20><>.
// <20><><EFBFBD><EFBFBD>: 12λADC<44><43><EFBFBD><EFBFBD>.
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void Read_ADC()
{
if(ADC_Cnt>=2)//2ms<6D>ɼ<EFBFBD>һ<EFBFBD><D2BB>AD
{
ADC_Cnt = 0;
ADC_EXT_Temp[Times] = Get_ADC12bitResult(4);//P1.4
ADC0_Temp[Times] = Get_ADC12bitResult(5);//P1.5
ADC1_Temp[Times] = Get_ADC12bitResult(6);//P1.6
ADC2_Temp[Times] = Get_ADC12bitResult(7);//P1.7
Times ++;
if(Times>=120)
{
Times = 0;
//<2F><>ȡÿ<C8A1><C3BF>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ADֵ
ADC_EXT_Value = ADC_Average(ADC_EXT_Temp,120,5);
ADC0_Value = ADC_Average(ADC0_Temp,120,5);
ADC1_Value = ADC_Average(ADC1_Temp,120,5);
ADC2_Value = ADC_Average(ADC2_Temp,120,5);
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>ѹ
EXT_Value = ADC_EXT_Value*2498UL/16384; //<2F><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>ѹ
OutVoltage = ADC0_Value*4.03*2498UL/DisSet; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ѹ)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
AcqVolatage = ADC1_Value*2498UL/DisSet*1.0-AcqError; //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹ
IA = ((float)ADC2_Value*2498UL/DisSet/10.08)/2.0-CurrentError; //ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
AD_Refresh = 1;
}
}
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: UART1_Init()
// <20><><EFBFBD><EFBFBD>: UART1_Init<69><74>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void UART1_Init()
{
SCON|= 0x50;
T2L = BRT;
T2H = BRT >> 8;
AUXR|= 0x15;
busy = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
P_SW1 = 0x00; //RXD/P3.0, TXD/P3.1
// P_SW1 = 0x40; //RXD_2/P3.6, TXD_2/P3.7
// P_SW1 = 0x80; //RXD_3/P1.6, TXD_3/P1.7
// P_SW1 = 0xc0; //RXD_4/P4.3, TXD_4/P4.4
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void UartIsr() interrupt 4 using 1
// <20><><EFBFBD><EFBFBD>: UART1<54>жϺ<D0B6><CFBA><EFBFBD>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void UartIsr() interrupt 4 using 1
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
// Rx_Busy = 1;
aRxBufferTemp = SBUF;
// //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͣ<EFBFBD>ֹͣ<CDA3>ַ<EFBFBD>
// SendEN = 0;
// UartCnt= 0;
if(RX_5A_OK)
{
if(RX_A5_OK)
{
Rxbuff[Rx_count_UART1] = aRxBufferTemp;
Rx_count_UART1 ++;
if(Rx_count_UART1 == Rxbuff[0] + 1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
RX_5A_OK = 0;
RX_A5_OK = 0;
Rx_count_UART1 = 0;
Uart1Ready_R = 1;
// Rx_Busy = 0;
}
}
else
{
if(aRxBufferTemp == 0xA5)
{
RX_A5_OK = 1;
Rx_count_UART1 = 0;
}
else
{
Rx_Busy = 0;
}
}
}
else
{
if(aRxBufferTemp == 0x5A)
{
RX_5A_OK = 1;
}
else
{
Rx_Busy = 0;
}
}
}
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void DataParsing()
// <20><><EFBFBD><EFBFBD>: UART1<54><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void DataParsing(void)
{
if(Uart1Ready_R==1) //<2F><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((Rxbuff[0]==0x06)&&(Rxbuff[1]==0x83)&&(Rxbuff[2]==0x00)&&(Rxbuff[3]==0x20)
&&(Rxbuff[4]==0x01)&&(Rxbuff[5]==0x00)&&(Rxbuff[6]==0x00))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
RunTime = 0; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
Save_Cnt = 0;
SetVoltage = 2000; //<2F><><EFBFBD>õ<EFBFBD>ѹ
SetCorroV = 650; //<2F><>ʴ<EFBFBD><CAB4>ѹ
// SetCorroV = 920; //<2F><>ʴ<EFBFBD><CAB4>ѹ //<2F><><EFBFBD><EFBFBD>
AdjVoltage = 3.0; //<2F><><EFBFBD>ڵ<EFBFBD>ѹ
CurrentError = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AcqError = 0; //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
OutSet = 10000;
DisSet = 16146; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
OutGain = 1.0000; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Limitvoltage = 1600; //<2F><><EFBFBD>޵<EFBFBD>ѹ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((Rxbuff[0]==0x06)&&(Rxbuff[1]==0x83)&&(Rxbuff[2]==0x00))
{
if((Rxbuff[3]==0x04)&&(Rxbuff[4]==0x01))
{
SetVoltage = Rxbuff[5]*256 + Rxbuff[6]; //<2F><><EFBFBD>õ<EFBFBD>ѹ
CalibrationVoltage = SetVoltage;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
if((Rxbuff[3]==0x05)&&(Rxbuff[4]==0x01))
{
SetCorroV = Rxbuff[5]*256 + Rxbuff[6]; //<2F><>ʴ<EFBFBD><CAB4>ѹ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
if((Rxbuff[3]==0x0E)&&(Rxbuff[4]==0x01))
{
OutSet = Rxbuff[5]*256 + Rxbuff[6]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OutGain = (float)OutSet/10000;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
if((Rxbuff[3]==0x0F)&&(Rxbuff[4]==0x01))
{
DisSet = Rxbuff[5]*256 + Rxbuff[6]; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
if((Rxbuff[3]==0x10)&&(Rxbuff[4]==0x01))
{
CurrentError = (float)(Rxbuff[5]*256 + Rxbuff[6])/100; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
if((Rxbuff[3]==0x11)&&(Rxbuff[4]==0x01))
{
AdjVoltage = (float)(Rxbuff[5]*256 + Rxbuff[6]); //<2F><><EFBFBD>ڵ<EFBFBD>ѹ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
if((Rxbuff[3]==0x0D)&&(Rxbuff[4]==0x01))
{
AcqError = (float)(Rxbuff[5]*256 + Rxbuff[6])/10; //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
if((Rxbuff[3]==0x12)&&(Rxbuff[4]==0x01))
{
Limitvoltage= Rxbuff[5]*256 + Rxbuff[6]; //<2F><><EFBFBD><EFBFBD>--<2D><><EFBFBD>޵<EFBFBD>ѹ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3><>ӵ<EFBFBD><D3B5>ú<EFBFBD><C3BA><EFBFBD>)
Save_Flag = 1;
Parameter_Save();
}
}
}
Uart1Ready_R = 0;
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void UartSendData()
// <20><><EFBFBD><EFBFBD>: UART1<54><31>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void UartSendData(void)
{
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(SendEN)
{
if(!busy)
{
busy = 1;
if(!SendInit)
{
SendBuffer[0] = 0x5A;
SendBuffer[1] = 0xA5;
SendBuffer[2] = 0X2F; //<2F><><EFBFBD><EFBFBD>
SendBuffer[3] = 0X82; //<2F><><EFBFBD><EFBFBD>
SendBuffer[4] = 0X00; //<2F>׵<EFBFBD>ַH
SendBuffer[5] = 0X00; //<2F>׵<EFBFBD>ַL
//<2F><>һҳ<D2BB><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
SendBuffer[6] = RunTime>>8; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>H
SendBuffer[7] = RunTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>L
SendBuffer[8] = InVoltage>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹH
SendBuffer[9] = InVoltage; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹL
SendBuffer[10] = OutVoltage>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹH
SendBuffer[11] = OutVoltage; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹL
SendBuffer[12] = OffsetVoltage>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹH
SendBuffer[13] = OffsetVoltage; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹL
SendBuffer[14] = SetVoltage>>8; //<2F><><EFBFBD>õ<EFBFBD>ѹH
SendBuffer[15] = SetVoltage; //<2F><><EFBFBD>õ<EFBFBD>ѹL
SendBuffer[16] = SetCorroV>>8; //<2F><>ʴ<EFBFBD><CAB4>ѹH
SendBuffer[17] = SetCorroV; //<2F><>ʴ<EFBFBD><CAB4>ѹL
SendBuffer[18] = AcqVolatage>>8; //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹH
SendBuffer[19] = AcqVolatage; //<2F>ɼ<EFBFBD><C9BC><EFBFBD>ѹL
SendBuffer[20] = EXT_Value>>8; //COM<4F><4D>ѹH
SendBuffer[21] = EXT_Value; //COM<4F><4D>ѹL
//<2F>ڶ<EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
SendBuffer[22] = ADC0_Value>>8; //ADC0<43><30>ѹH
SendBuffer[23] = ADC0_Value; //ADC0<43><30>ѹL
SendBuffer[24] = ADC1_Value>>8; //ADC1<43><31>ѹH
SendBuffer[25] = ADC1_Value; //ADC1<43><31>ѹL
SendBuffer[26] = ADC2_Value>>8; //ADC2<43><32>ѹH
SendBuffer[27] = ADC2_Value; //ADC2<43><32>ѹL
SendBuffer[28] = AcqVolatage1>>8; //ʵʱ<CAB5>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>H
SendBuffer[29] = AcqVolatage1; //ʵʱ<CAB5>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>L
SendBuffer[30] = SetCorroV >>8; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>H
SendBuffer[31] = SetCorroV; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>L
SendBuffer[32] = AcqError>>8; //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>H(<28>Ŵ<EFBFBD>10<31><30><EFBFBD><EFBFBD>ʾ)
SendBuffer[33] = AcqError; //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>L(<28>Ŵ<EFBFBD>10<31><30><EFBFBD><EFBFBD>ʾ)
SendBuffer[34] = OutSet>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H
SendBuffer[35] = OutSet; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L
SendBuffer[36] = DisSet>>8; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>H
SendBuffer[37] = DisSet; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>L
SendBuffer[38] = (unsigned int)(CurrentError*100)>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H
SendBuffer[39] = (unsigned int)(CurrentError*100); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L
SendBuffer[40] = (unsigned int)AdjVoltage>>8; //<2F><><EFBFBD>ڵ<EFBFBD>ѹH
SendBuffer[41] = (unsigned int)AdjVoltage; //<2F><><EFBFBD>ڵ<EFBFBD>ѹL
SendBuffer[42] = Limitvoltage>>8; //<2F><><EFBFBD><EFBFBD>-<2D><><EFBFBD>޵<EFBFBD>ѹ
SendBuffer[43] = Limitvoltage; //<2F><><EFBFBD><EFBFBD>-<2D><><EFBFBD>޵<EFBFBD>ѹ
SendBuffer[44] = Shut_Min >>8; //<2F><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
SendBuffer[45] = Shut_Min ; //<2F><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
SendBuffer[46] = OutCurrent>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H
SendBuffer[47] = OutCurrent; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L
SendInit = 1;
SentCnt = 0;
}
SBUF = SendBuffer[SentCnt++];
if(SentCnt>47)
{
SendEN = 0;
}
}
}
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: Timer0_Init()
// <20><><EFBFBD><EFBFBD>: Timer0<72><30>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void Timer0_Init()
{
TMOD|= 0x00; //ģʽ0
TL0 = 65536-FOSC/12/1000;
TH0 = (65536-FOSC/12/1000)>>8;
TR0 = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ET0 = 1; //ʹ<>ܶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD>
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void TM0_Isr() interrupt 1 using 1
// <20><><EFBFBD><EFBFBD>: Timer0<72>жϺ<D0B6><CFBA><EFBFBD>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void TM0_Isr() interrupt 1 using 1
{
ADC_Cnt ++;
Cnt ++;
AcqInitCnt ++;
/*** <20><><EFBFBD><EFBFBD>2019-11-14 ***/
if(PWM_ON_EN)
{
Shut_MS ++;
if(Shut_MS>=1000)
{
Shut_MS = 0;
Shut_Sec ++;
if(Shut_Sec>=60)
{
Shut_Sec = 0;
Shut_Min ++;
}
}
}
if(Shut_Min>=180)//<2F><><EFBFBD><EFBFBD>3Сʱ<D0A1><CAB1><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
{
PWM_ON_EN = 0;
Shut_Hour = 0;
Shut_Min = 0;
Shut_Sec = 0;
Shut_MS = 0;
}
if(++UartCnt>=200)
{
UartCnt = 0;
SendEN = 1;
SendInit= 0;
}
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ
if(++Time_Cnt>=1000) //1000ms
{
Time_Cnt = 0;
Time_Sec ++; //1s<31>Զ<EFBFBD><D4B6><EFBFBD>1
if(Time_Sec>=60) //60s
{
Time_Sec = 0;
Time_Min ++; //1min<69>Զ<EFBFBD><D4B6><EFBFBD>1
if(Time_Min>=60) //60s
{
Time_Min = 0;
RunTime ++;
Save_Cnt ++;
if((Save_Cnt>0)&&((Save_Cnt%5)==0))
{
Save_Flag = 1; //<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>1<EFBFBD><31>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
Save_Cnt = 0;
}
}
}
}
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: PWM_Init()
// <20><><EFBFBD><EFBFBD>: PWM<57><4D>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void PWM_Init()
{
P_SW2 = 0x80;
PWMCKS = 0x00; //PWMʱ<4D><CAB1>Ϊϵͳʱ<CDB3><CAB1>
PWMC = 8192; //<2F><><EFBFBD><EFBFBD>PWM<57><4D><EFBFBD><EFBFBD>Ϊ8192<39><32>PWMʱ<4D><CAB1>
PWM5T1 = 0; //<2F>ڼ<EFBFBD><DABC><EFBFBD>ֵΪ0<CEAA>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
PWM5T2 = 8192; //<2F>ڼ<EFBFBD><DABC><EFBFBD>ֵΪ8192<39>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
PWM5CR = 0x80; //ʹ<><CAB9>PWM5<4D><35><EFBFBD><EFBFBD>
P_SW2 = 0x00;
PWMCR = 0x80; //<2F><><EFBFBD><EFBFBD>PWMģ<4D><C4A3>
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: void PWM_TO_DAC(unsigned int PowerVol,unsigned int OutVol)
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ѹ<EFBFBD><D1B9>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ѹ<EFBFBD><D1B9>
// <20><><EFBFBD><EFBFBD>: PowerVol:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>OutVol<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2017-12-9
// <20><>ע:
//========================================================================
*/
void PWM_TO_DAC(unsigned int PowerVol,unsigned int OutVol)
{
unsigned int PWM_Vlaue;
if(OutVol>5500)
{
OutVol = 5500;
}
PWM_Vlaue = OutVol*8192UL/PowerVol/3;//<2F><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>Ϊ1:3
P_SW2 = 0x80;
PWM5T1 = 0; //<2F>ڼ<EFBFBD><DABC><EFBFBD>ֵΪ0<CEAA>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
PWM5T2 = 8192-PWM_Vlaue; //<2F>ڼ<EFBFBD><DABC><EFBFBD>ֵΪ8192<39>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
P_SW2 = 0x00;
}
/*========================================================================
// <20><><EFBFBD><EFBFBD>: Parameter_Save()
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20><><EFBFBD><EFBFBD>: <20><>
// <20>汾: VER1.0
// <20><><EFBFBD><EFBFBD>: 2019-2-22
// <20><>ע:
//========================================================================
*/
void Parameter_Save(void)
{
if(Save_Flag)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B1A3>
EEPROM_SectorErase(IAP_ADDRESS);
TableWrite[0] = RunTime>>8; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>H
TableWrite[1] = RunTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>L
TableWrite[2] = SetVoltage>>8; //<2F><><EFBFBD>õ<EFBFBD>ѹH
TableWrite[3] = SetVoltage; //<2F><><EFBFBD>õ<EFBFBD>ѹL
TableWrite[4] = SetCorroV>>8; //<2F><>ʴ<EFBFBD><CAB4>ѹH
TableWrite[5] = SetCorroV; //<2F><>ʴ<EFBFBD><CAB4>ѹL
TableWrite[6] = OutSet>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H
TableWrite[7] = OutSet; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L
TableWrite[8] = DisSet>>8; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>H
TableWrite[9] = DisSet; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>L
TableWrite[10] = (unsigned int)(CurrentError*100)>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H
TableWrite[11] = (unsigned int)(CurrentError*100); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L
TableWrite[12] = (unsigned int)AdjVoltage>>8; //<2F><><EFBFBD>ڵ<EFBFBD>ѹH
TableWrite[13] = (unsigned int)AdjVoltage; //<2F><><EFBFBD>ڵ<EFBFBD>ѹL
TableWrite[14] = (unsigned int)AcqError>>8; //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>H
TableWrite[15] = (unsigned int)AcqError; //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>L
TableWrite[16] = Limitvoltage>>8; //<2F><><EFBFBD><EFBFBD>-<2D><><EFBFBD>޵<EFBFBD>ѹ
TableWrite[17] = Limitvoltage; //<2F><><EFBFBD><EFBFBD>-<2D><><EFBFBD>޵<EFBFBD>ѹ
EEPROM_write_n(IAP_ADDRESS,TableWrite,18);
Save_Flag = 0;
}
}