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

📄 adsub.c

📁 一款30dl空调控制器程序,包括了室内室外控制.
💻 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 + -