📄 adsub.c
字号:
#define SUBRAM
#include "pragma.h"
#include "define.h"
#include "ram.c"
const unsigned char ad_tab[]=
{
8, 9, 9, 9,10,10,10,11,11,12, /*80d-89d*/
12,12,13,13,13,14,14,14,15,15, /*90d-99d*/
15,16,16,16,17,17,17,18,18,18, /*100d-109d*/
19,19,19,20,20,20,21,21,22,22, /*110d-119d*/
22,23,23,23,24,24,24,25,25,25, /*120d-129d*/
26,26,26,27,27,28,28,28,29,29, /*130d-139d*/
29,30,30,30,31,31,32,32,32,33, /*140d-149d*/
33,33,34,34,35,35,35,36,36,37, /*150d-159d*/
37,37,38,38,39,39,39,40,40,41, /*160d-169d*/
}; /* range 80-160 */
/*----------------------------------------*/
void findroomtemp()
{
if (ad_room < 80)
{
roomtemp = 8;
}
else
{
if (ad_room >= 161)
{
roomtemp = 37;
}
else
{
roomtemp = ad_tab[ad_room - 80];
}
}
if (AD_HumidityValue < 70)
{
OppositeHumidity = 30;
}
else
{
if (AD_HumidityValue >= 177)
{
OppositeHumidity = 99;
}
else
{
OppositeHumidity = AD_Humidity_Tab[AD_HumidityValue - 70];
}
}
}
/*----------------------------------------*/
void ad_done()
{
if (power)
{
if ((ad_room < 0x04) || (ad_room >= 0xfc))
{
abnormal = 1;
roomtemp_err = 1;
}
else
{
roomtemp_err = 0;
if ((!fan_err) && (!incoiltemp_err) && (!outcoiltemp_err))
{
abnormal = 0;
}
}
if ((ad_coil < 0x04) || (ad_coil >= 0xfc))
{
abnormal = 1;
incoiltemp_err = 1;
}
else
{
incoiltemp_err = 0;
if ((!fan_err) && (!roomtemp_err) && (!outcoiltemp_err))
{
abnormal = 0;
}
}
if (!cool_only)
{
if ((ad_out_coil < 0x04) || (ad_out_coil >= 0xfc))
{
if (runmode == heat) /* add on 2003-1-21 */
{
abnormal = 1;
outcoiltemp_err = 1;
}
}
else
{
outcoiltemp_err = 0;
if ((!fan_err) && (!roomtemp_err) && (!incoiltemp_err))
{
abnormal = 0;
}
}
}
}
findroomtemp();
if (runmode == heat)
{
roomtemp -= 2;
}
if (OppositeHumidity > SetHumidity)
{
HCB = 1;
if (HumidityMonitorFlag)
{
power = ON;
}
}
else
{
if (OppositeHumidity < SetHumidity)
{
HCB = 0;
if (HumidityMonitorFlag)
{
power = OFF;
}
}
}
if (emergency_test)
{
TCB = 1;
}
else
{
if (runmode == heat)
{
if (settemp < roomtemp)
{
TCB = 0;
}
else
{
if (settemp != roomtemp)
{
TCB = 1;
}
}
}
else
{
if (runmode != fan) /* add on 2000-3-14 */
{
if (settemp < roomtemp)
{
TCB = 1;
}
else
{
if (settemp != roomtemp)
{
TCB = 0;
}
}
}
}
}
}
/*----------------------------------------*/
void adsub()
{
/*
if (ADIF0)
{
ADIF0 = OFF;
if (++adnum == 0x00)
{
tempa = 0x00;
if (adHLram.byte.L >= 0x80)
{
tempa = 0x01;
}
tempb = adHLram.byte.H;
adHLram.word = 0x0000;
adHLram.word = ADCR0;
tempc = tempb + tempa;
if (ad_channel == 0x00)
{
ad_room = tempc;
ad_channel = 0x01;
ADS0 = 0x01;
}
else
{
if (ad_channel == 0x01)
{
ad_coil = tempc;
ad_channel = 0x02;
ADS0 = 0x02;
}
else
{
if (ad_channel == 0x02)
{
ad_out_coil = tempc;
ad_channel = 0x03;
ADS0 = 0x03;
}
else
{
AD_HumidityValue = tempc;
ad_channel = 0x00;
ADS0 = 0x00;
ad_done();
adc_ok = ON;
}
}
}
ADM0 = 0b10000000;
}
else
{
adHLram.word += ADCR0;
}
}*/
if (ad_monitor_1s)
{
ad_monitor_1s = 0;
if ((++ad_monitor) >= 8)
{
ad_monitor = 0x00;
adstart = 0;
ad1s = 0;
ADM0 = 0b00000000;
}
}
if (!adstart)
{
if (ad1s)
{
ad1s = 0;
adstart = ON;
adnum = 0x00;
ad_channel = 0x00;
ADS0 = 0x00;
ADIF0 = 0;
ADM0 = 0b10000000;
}
}
else
{
if (ADIF0)
{
ADIF0 = OFF;
ad_monitor = 0x00;
adbuff[adnum] = ADCR0;
if ((++adnum) >= 10)
{
adnum = 0x00;
ADM0 = 0b00000000;
do
{
sortchg = OFF;
for (tempa = 0;tempa < 9;tempa++)
{
if (adbuff[tempa] < adbuff[tempa+1])
{
tempb = adbuff[tempa];
adbuff[tempa] = adbuff[tempa+1];
adbuff[tempa+1] = tempb;
sortchg = ON;
}
}
} while (sortchg);
adHLram.word = 0x0000;
for (tempa = 0x01;tempa < 9;tempa++)
{
adHLram.word += adbuff[tempa];
}
adHLram.word = adHLram.word >> 3;
if (ad_channel == 0x00)
{
ad_room = adHLram.byte.L;
ad_channel = ADS0 = 0x01;
ADM0 = 0b10000000;
}
else
{
if (ad_channel == 0x01)
{
ad_coil = adHLram.byte.L;
ad_channel = ADS0 = 0x02;
ADM0 = 0b10000000;
}
else
{
if (ad_channel == 0x02)
{
out_ad[out_ad_prt] = adHLram.byte.L;
if ((++out_ad_prt) >= 12)
{
out_ad_prt = 0x00;
do
{
sortchg = 0;
for (tempa = 0;tempa < 11;tempa++)
{
if (out_ad[tempa] < out_ad[tempa+1])
{
tempb = out_ad[tempa];
out_ad[tempa] = out_ad[tempa+1];
out_ad[tempa+1] = tempb;
sortchg = 1;
}
}
} while (sortchg);
adHLram.word = 0x0000;
for (tempa = 2;tempa < 10;tempa++)
{
adHLram.word += out_ad[tempa];
}
adHLram.word = adHLram.word >> 3;
ad_out_coil = adHLram.byte.L;
}
ad_channel = ADS0 = 0x03;
ADM0 = 0b10000000;
}
else
{
AD_HumidityValue = adHLram.byte.L;
ad_channel = ADS0 = 0x00;
ADM0 = 0b00000000;
adstart = OFF;
ad_done();
}
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -