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

📄 frigwndw.c

📁 pic单片机实现的TCP/IP协议
💻 C
📖 第 1 页 / 共 3 页
字号:
			n_DispMode = DFANSET;
			n_DispTime = TIM5S;
			n_LEDDisp[0] &= ~(1<<LEDAUTO | 1<<LEDSLOW);
			n_LEDDisp[0] |= 1<<LEDFAST;

			break;
		case BTNAUTO:
			if((!b_ModeFan) && (!b_AutoFan)){
				n_Fan1MinCnt = 0;
				b_AutoFan = TRUE;
				n_SysBack10S = TIM10S;
			}

			break;
		case BTNCHECK:
			if(n_SysBack[5] >= TIM250H){
				n_SysBack[5] = 0;
				n_SysBack[3] &= ~0x80;
				n_Fan30Min = TIM30MIN;
				n_SysBack10S = TIM10S;
			}

			break;
		case BTNPWRSAV:
//			b_ModeSleep = FALSE;
			b_ModeCool = FALSE;
			b_ModeFan = FALSE;
			if(!b_ModePwrSav){
				b_ModePwrSav = TRUE;
				b_FanCycle = 0;
				n_FanCycleCnt = TIM10MIN;
				n_Comp5Min = 0;
				n_SysBack10S = TIM10S;
			}
			n_DispMode = DTEMPSET;
			n_DispTime = TIM5S;
			b_TimerTempA = TRUE;
			TempD2S();

			break;
		case BTNFAN:
			if(b_IFeel) break;
			b_ModeSleep = FALSE;
			b_ModePwrSav = FALSE;
			b_ModeCool = FALSE;
			if(!b_ModeFan){
				b_ModeFan = TRUE;
				n_TempDisp2S = 0;
				if(b_AutoFan){ b_AutoFan = FALSE; n_FanSpeed = FANLOW;}
				n_SysBack10S = TIM10S;
			}
			TempD2S();

			break;
		case BTNSLEEP:
			if(b_ModeCool || b_ModePwrSav){
				b_ModeSleep ^= 1;
				TempD2S();
				n_Comp5Min = 0;
				n_SysBack10S = TIM10S;
			}

			break;
		case BTNPLUS:
			b_FiltOut ^= 1;
			n_SysBack10S = TIM10S;

			break;
		case BTNIFON:
			if(!b_ModeFan){
				b_IFeel = 1;
				if(!n_LEDIFDelay) LEDIFStart();
				else n_LEDIFDelay = TIMD2S5;
			}
			n_IFeelTime = TIM200S;
			break;

		default:
			break;
		}
	}
	n_KeyInput = 0x0ff;

	if(b_TempSetChg){
		b_TempSetChg = FALSE;
		n_Comp1Min = 1;
		n_Comp5Min = 0;
		n_Fan30SCnt = 0;
		TempD2S();
		n_SysBack10S = TIM10S;
	}

	if(!n_DispTime || !b_RunTimer || !b_Runing || b_ModeFan) b_TimerTempA = FALSE;
	if(!b_RunTimer) n_DispMode &= ~DTIMESET;
}


void FanOut()
{
	if(b_Runing){
		if(b_ModeFan || b_ModeCool || b_TestRun) b_FanOut = 1;
		else if(b_ModePwrSav){
			if(b_Defrost){
				b_FanOut = 1;
				b_FanCycle = 1;
				n_FanCycleCnt = TIM2MIN;
			}
			else if(b_CompOut || n_Comp3Min) b_FanOut = 1;
			else b_FanOut = b_FanCycle;
		}
		else b_FanOut = 0;
	}
	else b_FanOut = 0;

	if(b_FanOut) n_FanStop3S = TIM3S;
	if(!n_FanStop3S) n_FanFst035S = TIM350MS;

	if(b_CompOut){ n_FanCycleCnt = TIM10MIN; b_FanCycle = 0;}

}


void CompOut()
{
	if(!b_Runing || b_ModeFan) b_CompOut = 0;
	else{
		if(b_Bypass) b_CompOut = 1;
		else{
			if(((!n_Comp1Min) || b_Defrost)){
				if(!n_Comp5Min){
					b_CompOut = 0;
					if(b_ModePwrSav) n_Fan30SCnt = TIM30S;
				}
			}
			else{
				n_GenBuf = n_TempSet + TEMP0F5;
				if((n_ADData[0] >= n_GenBuf) || b_ErrT1Sensor){
					if(!n_Comp3Min) b_CompOut = 1;
				}
			}
		}
	}

	if(!b_ModePwrSav) n_Fan30SCnt = 0;

	if(b_CompOut){
		if(!n_Fan30SCnt){
			if(!b_CompPort){ n_VolAdj5S = TIM60S; n_CompWaitCnt = MAXWAIT;}
			b_CompPort = 1;
			n_Comp3Min = TIM3MIN;
		}
	}
	else{
		if(b_CompPort){ n_VolAdj5S = TIM60S; n_CompWaitCnt = MAXWAIT;}
		b_CompPort = 0;
		n_Comp5Min = TIM5MIN;
	}
}

void FiltOut()
{
	if(b_FiltOut && b_Runing && b_FanOut){
		if(!PIO_FiltPlus) n_VolAdj5S = TIM60S;
		PIO_FiltPlus = 1;
	}
	else{
		if(PIO_FiltPlus) n_VolAdj5S = TIM60S;
		PIO_FiltPlus = 0;
	}
}

void LEDIFStart()
{
	n_LEDIFDelay = TIMD5S;
//	n_LEDIFLight = 0;
	n_LEDIFFlash = 0;
}

void Defrost()
{
	if(b_Runing){
		if(n_Frost1S > TIM2S5) b_Defrost = 1;
		if(n_Defrost1S > TIM2S5) b_Defrost = 0;
		if(b_T2Open) b_Defrost = 0;
	}
	else b_Defrost = 0;
}

void GetIFTemp()
{

#asm
	mov		a, _n_RTLast+3
	mov		x, #0
	mov		c, #7
?LGetIFTp00:
	ror		a, 1
	bnc		$?LGetIFTp01
	inc		x
?LGetIFTp01:
	dbnz	c, $?LGetIFTp00
	xor		a, x
	bf		a.0, $?LGetIFTp02
	mov		a, _n_RTLast+3
	clr1	a.7
	add		a, #100
	mov		_n_IFTemp, a
	ret
?LGetIFTp02:
	mov		_n_KeyInput, #0ffh
	ret
#endasm

}

void IFTempProc()
{
	if(!b_IFeel) return; 
	b_ErrT1Sensor = 0;
	if(b_Runing && (!b_ModeFan)) n_ADData[0] = n_IFTemp;
}

void FanVolAdj()
{

	if(n_SysData[4] & 0x01) { n_FanSelAdj = 5; return;}

#asm
		mov		a, _n_ADData+2
		sub		a, _n_VolLast
		bnc		$?LFanVolAdj01
		xor		a, #0ffh
		inc		a
?LFanVolAdj01:
		cmp		a, #2
		bnc		$?LFanVolAdj02
		ret
?LFanVolAdj02:

#endasm

	if(b_CompPort) n_GenBuf = (PIO_FiltPlus)? 3:2;
	else n_GenBuf = (PIO_FiltPlus)? 1:0;

#asm
;	保留本次调节的电源电压值
		mov		a, _n_ADData+2
		mov		_n_VolLast, a
;	计算当前的额定电压标准值
		movw	hl, #_TBL_PwrAdjTrig
		mov		c, #0
		mov		b, #18-1
		movw	ax, _n_TrigDelay
		addw	ax, #550
?LFanVolAdj03:
		cmp		a, [hl+1]
		bc		$?LFanVolAdj08
		bnz		$?LFanVolAdj04
		xch		a, x
		cmp		a, [hl]
		xch		a, x
		bc		$?LFanVolAdj08
?LFanVolAdj04:
		cmp		_n_GenBuf, #0
		bz		$?LFanVolAdj06
		mov		a, _n_GenBuf
		mov		b, a
		movw	ax, #_TBL_PwrVolAdj
?LFanVolAdj05:
		addw	ax, #18
		dbnz	b, $?LFanVolAdj05
		br		$?LFanVolAdj07
?LFanVolAdj06:
		movw	ax, #_TBL_PwrVolAdj
?LFanVolAdj07:
		xch		a, x
		add		a, c
		xch		a, x
		addc	a, #0
		movw	hl, ax
		mov		a, [hl]
		mov		c, a
		mov		a, _n_GenBuf
		mov		x, a
		xor		a, a
		addw	ax, #_n_SysData
		movw	hl, ax
		mov		a, [hl]
		sub		a, c
		br		$?LFanVolAdj10
?LFanVolAdj08:
		inc		c
		incw	hl
		incw	hl
		dbnz	b, $?LFanVolAdj03
		br		$?LFanVolAdj04

?LFanVolAdj10:
		mov		c, a
		movw	ax, #_TBL_FanSelAdj
?LFanVolAdj11:
		cmp		_n_GenBuf, #0
		bz		$?LFanVolAdj12
		addw	ax, #13
		dec		_n_GenBuf
		br		$?LFanVolAdj11
?LFanVolAdj12:
		movw	hl, ax
		mov		a, c
		add		a, #20		; shift the adj. value by 5
		bnc		$?LFanVolAdj13
		mov		a, #0ffh
?LFanVolAdj13:
		mov		x, #0
		sub		a, _n_ADData+2
		bc		$?LFanVolAdj15
		mov		c, #13
?LFanVolAdj14:
		cmp		a, [hl]
		bc		$?LFanVolAdj15
		incw	hl
		inc		x
		dbnz	c, $?LFanVolAdj14
?LFanVolAdj15:
		mov		a, x
		mov		_n_FanSelAdj, a

#endasm

}

void FanSpeed()
{

	if(b_TestRun){
		if(!n_TestStep1S) n_FanSpeed = FANLOW;
		else n_FanSpeed = FANHIGH;
	}
	else if(b_AutoFan){
		n_GenBuf = n_TempSet + TEMP2F5;
		if(n_ADData[0] >= n_GenBuf){
			if(n_FanSpeed == FANMID){
				if(!n_Fan1MinCnt){ n_FanSpeed = FANHIGH; n_Fan1MinCnt = TIM1MIN;}
			}
			else if(n_FanSpeed != FANHIGH){ n_FanSpeed = FANMID; n_Fan1MinCnt = TIM1MIN;}
		}
		else{
			n_GenBuf = n_TempSet - TEMPN1F;
			if(n_ADData[0] <= n_GenBuf){
				if(!n_Fan1MinCnt) n_FanSpeed = FANLOW;
			}
			else{
				if((n_ADData[0] <= n_TempSet) && (n_FanSpeed == FANHIGH) && (!n_Fan1MinCnt)){
					n_FanSpeed = FANMID;
					n_Fan1MinCnt = TIM1MIN;
				}
			}
			if((n_FanSpeed != FANMID) && (n_FanSpeed != FANHIGH)) { n_FanSpeed = FANLOW; n_Fan1MinCnt = 0;}
		}
	}


	n_TrigDurat = TRIGWIDE;

	if(n_FanFst035S){ n_TrigDelay = TRIGFAST; return;}
#asm
		mov		a, _n_FanSel
		cmp		_n_FanSelAdj, #5
		bnc		$?LFanSpeed00
		mov		_n_GenBuf, a
		add		a, _n_FanSelAdj
		add		_n_GenBuf, #5
		br		$?LFanSpeed02
?LFanSpeed00:
		add		a, _n_FanSelAdj
		cmp		a, #27
		bc		$?LFanSpeed01
		mov		a, #27-1
?LFanSpeed01:
		mov		_n_GenBuf, a
?LFanSpeed02:
		rol		a, 1
		mov		x, a
		xor		a, a
		addw	ax, #_TBL_TrigD
		movw	hl, ax
		mov		a, [hl+1]
		mov		x, a
		mov		a, [hl]
		movw	bc, ax
		movw	ax, #_TBL_Trig
?LFanSpeed03:
		cmp		_n_GenBuf, #0
		bz		$?LFanSpeed04
		addw	ax, #18
		dec		_n_GenBuf
		br		$?LFanSpeed03
?LFanSpeed04:
		movw	hl, ax
		mov		a, _n_FanSpeed
		sub		a, #10			; FANLOW
		mov		_n_GenBuf, a
		movw	ax, bc
		mov		c, #5
?LFanSpeed05:
		cmp		_n_GenBuf, #0
		bz		$?LFanSpeed08
		sub		a, [hl]
		bnc		$?LFanSpeed06
		dec		x
?LFanSpeed06:
		dbnz	c, $?LFanSpeed07
		incw	hl
		mov		c, #5
?LFanSpeed07:
		dec		_n_GenBuf
		br		$?LFanSpeed05
?LFanSpeed08:
		xch		a, x
		subw	ax, #550		; death of zerocross
		movw	_n_TrigDelay, ax

#endasm

	if(n_TrigDelay > TRIGW2N) n_TrigDurat = TRIGNARROW;
	
}


// 按键代码
static	const	unsigned char	TBL_Button[]=
{

//          No.1     No.2   No.3     No.4     No.5       No.6     No.7     No.8
			BTNDOWN, BTNUP, BTNSLOW, BTNFAST, BTNNODEF, BTNMODE, BTNAUTO, BTNSLEEP,
//			No.9    No.10     No.11     No.12   No.13    No.14    No.15    No.16
			BTNPLUS, BTNTIMER, BTNCHECK, BTNPWR, BTNSEL1, BTNSEL2, BTNSEL3, BTNSEL4
};

static	const	unsigned char	TBL_FanSelAdj[4][]=
{

//	最多下调5档,上调8档,共13档。中心偏移值 20 <-> 0(5)
//         -5  -4  -3  -2  -1 0 +1 +2  +3  +4  +5  +6  +7  +8
		{
			0,  4,  9, 13, 18, 23, 28, 32, 37, 41, 46, 50, 55
		},
		{
			1,  5, 10, 14, 18, 23, 27, 32, 36, 40, 45, 49, 53
		},
		{
			3,  7, 11, 15, 19, 22, 26, 30, 34, 38, 42, 46, 49
		},
		{
			5,  8, 12, 15, 19, 22, 26, 29, 33, 36, 40, 43, 46
		},

};

static	const	unsigned char	TBL_PwrVolAdj[4][]=
{
	{
		 0,  1,  2,  2,  3,  3,  4,  4,  5,  5,  5,  6,  6,  6,  7,  6,  5,  4
	},		// all off
	{
		 0,  0,  1,  2,  2,  2,  2,  2,  3,  3,  3,  3,  4,  4,  4,  5,  4,  4
	},		// flz on
	{
		 0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,  3,  3,  2,  2
	},		// comp on
	{
		 0,  0,  0,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,  2,  1
	},		// all on

};

static	const	unsigned TBL_PwrAdjTrig[]=
{
		/*4530,*/ 4420, 4310, 4190, 4070, 3950, 3830, 3700, 3560, 3420, 3270, 3110, 2940, 2750, 2540, 2290, 2000, 1600, 780,
};

/*
static	const	unsigned char	TBL_LEDBright[]=
{
		0x00, 0x10, 0x40, 0xa4, 0xaa, 0xb5, 0xbb, 0xef, 0xff,
		0xff, 0xef, 0xbb, 0xb5, 0xaa, 0xa4, 0x40, 0x10, 0x00, 0x00
};
*/
static	const	unsigned TBL_LEDBright[]=
{
		0x0000, 0x0000, 0x0100, 0x1010, 0x4208, 0x8888, 0x9124, 0x924a, 0xa4a9,
		0x5555, 0xab55, 0xadb6, 0x6db6, 0xedb6, 0x7777, 0xfbfb, 0xff7f, 0xffff,
		0xffff, 0xff7f, 0xfbfb, 0x7777, 0xedb6, 0x6db6, 0xadb6, 0xab55, 0x5555,
		0xa4a9, 0x924a, 0x9124, 0x8888, 0x4208, 0x1010, 0x0100, 0x0000, 0x0000
};

static	const	unsigned TBL_TrigD[]=
{
			/*5161, 5074, */4986, 4897, 4805,
			4714, 4621, 4527, 4431, 4334, 4234, 4132, 4027, 3920, 3808, 3693, 3573, 3449, 3319, 3180, 3034,
			2876, 2702, 2512, 2294, 2018, 1690, 1167, 700
};

static	const	unsigned char	TBL_Trig[27][]=
{
/*	{
		27, 27, 28, 29, 29, 29, 31, 32, 33, 35, 38, 40, 43, 48, 56, 67, 91,195
	},		// 60V
	{
		26, 27, 27, 28, 29, 29, 30, 31, 33, 34, 37, 39, 42, 48, 55, 66, 89,191
	},		// 62V
*/
	{
		25, 26, 26, 27, 28, 28, 30, 30, 32, 34, 36, 38, 42, 47, 53, 65, 88,187
	},		// 64V
	{
		25, 25, 25, 26, 27, 28, 29, 30, 31, 33, 35, 38, 41, 46, 52, 64, 86,183
	},		// 66V
	{
		24, 24, 25, 26, 26, 27, 28, 29, 31, 32, 35, 36, 41, 45, 51, 63, 85,178
	},		// 68V

	{
		23, 23, 25, 25, 25, 26, 28, 28, 30, 32, 33, 36, 40, 44, 51, 61, 83,174
	},		// 70V
	{
		23, 23, 23, 24, 25, 26, 27, 28, 29, 31, 32, 36, 38, 44, 49, 61, 81,169
	},		// 72V

// ↓SEL = 0 (OFF OFF OFF OFF)
	{
		22, 22, 23, 24, 24, 25, 26, 27, 28, 31, 32, 34, 38, 42, 49, 59, 80,164
	},		// 74V
	{
		21, 22, 22, 23, 24, 24, 25, 27, 28, 29, 31, 34, 37, 41, 48, 58, 78,159
	},		// 76V
	{
		21, 21, 21, 22, 23, 24, 24, 26, 27, 29, 30, 33, 36, 41, 46, 56, 77,154
	},		// 78V
	{
		20, 20, 21, 22, 22, 23, 24, 25, 26, 28, 29, 33, 35, 39, 45, 56, 74,149
	},		// 80V
	{
		19, 20, 20, 20, 22, 22, 23, 25, 25, 27, 29, 31, 35, 38, 44, 54, 72,144
	},		// 82V
	{
		18, 19, 20, 20, 21, 21, 23, 23, 25, 26, 28, 30, 34, 37, 43, 52, 71,138
	},		// 84V
	{
		17, 18, 19, 20, 20, 21, 21, 23, 24, 25, 28, 29, 32, 37, 41, 51, 68,133
	},		// 86V
	{
		17, 18, 18, 18, 20, 20, 21, 22, 23, 24, 27, 28, 32, 35, 40, 49, 66,127
	},		// 88V
	{
		16, 17, 18, 18, 18, 19, 21, 21, 22, 24, 25, 28, 30, 34, 39, 48, 64,120
	},		// 90V
	{
		16, 16, 17, 17, 18, 18, 20, 20, 21, 23, 25, 26, 29, 33, 38, 46, 61,114
	},		// 92V
	{
		15, 15, 16, 17, 17, 18, 18, 20, 20, 22, 24, 25, 28, 32, 36, 44, 59,107
	},		// 94V
	{
		14, 15, 15, 16, 16, 17, 18, 19, 19, 21, 23, 24, 27, 30, 35, 42, 56,100
	},		// 96V
	{
		14, 14, 14, 15, 15, 16, 17, 18, 19, 20, 21, 23, 26, 28, 33, 40, 53, 93
	},		// 98V
	{
		12, 13, 14, 14, 15, 15, 16, 16, 18, 19, 20, 22, 24, 28, 31, 37, 50, 85
	},		// 100V

	{
		11, 12, 13, 13, 14, 14, 15, 16, 17, 17, 19, 21, 23, 25, 29, 35, 47, 76
	},		// 102V
	{
		11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 18, 19, 21, 24, 27, 32, 43, 67
	},		// 104V
// ↑ SEL = 15 (ON ON ON ON)

	{
		10, 10, 11, 11, 11, 12, 13, 13, 14, 15, 17, 17, 19, 22, 24, 30, 37, 58
	},		// 106V
	{
		 9,  9, 10, 10, 10, 11, 11, 12, 13, 13, 15, 15, 17, 19, 22, 26, 32, 47
	},		// 108V
	{
		 7,  8,  8,  9,  9,  9,  9, 10, 11, 12, 12, 13, 15, 16, 18, 21, 26, 35
	},
	{
		 6,  6,  6,  7,  7,  7,  7,  8,  8,  9, 10, 10, 11, 12, 13, 15, 17, 22
	},
	{
		 3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  4,  4,  4,  5,  5,  5,  6,  6
	},
	{
		 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
	},

};



// THE END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -