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

📄 5588.c

📁 密码箱程序
💻 C
📖 第 1 页 / 共 5 页
字号:
					Display(Cartoon);
					break;
		}
		if(CartoonCount>600)
		{
			CartoonCount=0;
		}

		if(SamplingComplete)
		{
			SamplingComplete=0;
			for(i=0;i<121;i++)//test water temperature
			{
				if((T0CountVal>=(WaterTemperatureList[i]+WaterTemperatureList[i+1])/2)&&(T0CountVal<WaterTemperatureList[i+1]))
				{
					ObjectBuf[WaterTemperature]=i+1;
					if(SamplingCount==5)
					{
						ObjectBuf[EnvTemperature]=ObjectBuf[WaterTemperature];
					}
					break;
				}
				else if((T0CountVal<=(WaterTemperatureList[i]+WaterTemperatureList[i+1])/2)&&(T0CountVal>WaterTemperatureList[i]))
				{
					ObjectBuf[WaterTemperature]=i;
					if(SamplingCount==5)
					{
						ObjectBuf[EnvTemperature]=ObjectBuf[WaterTemperature];
					}
					break;
				}
			}
	
			for(i=0;i<14;i++)
			{
				if((T1CountVal>=(EnvHumidityList[i]+EnvHumidityList[i+1])/2)&&(T1CountVal<EnvHumidityList[i+1]))
				{
					ObjectBuf[EnvHumidity]=(i+1)*5+20;
					break;
				}
				else if((T1CountVal<=(EnvHumidityList[i]+EnvHumidityList[i+1])/2)&&(T1CountVal>EnvHumidityList[i]))
				{
					ObjectBuf[EnvHumidity]=i*5+20;
					break;
				}
				else if(T1CountVal<EnvHumidityList[0])
				{
					ObjectBuf[EnvHumidity]=10;
				}
				else if(T1CountVal>EnvHumidityList[14])
				{
					ObjectBuf[EnvHumidity]=95;
				}
			}
		}



		//采集旋转编码器数据
		CoderVal=(P0&0x03);
		if(CoderVal!=SaveVal)
		{
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	
			CoderVal=(P0&0x03);
			switch(SaveVal)
			{
				case 0x03:	if((CoderVal==0x01))
							{
								Direct=1;
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							else if((CoderVal==0x02))
							{
								Direct=0;
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							break;
				case 0x01:
							if(Direct&&(CoderVal==0x00))
							{
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							else if(Direct&&(CoderVal==0x03))
							{
								CombiteVal>>=2;
								SaveVal=CoderVal;
							}
							else if(!Direct&&(CoderVal==0x03))
							{
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							else if(!Direct&&(CoderVal==0x00))
							{
								CombiteVal>>=2;
								SaveVal=CoderVal;
							}
							break;
				case 0x02:
							if(!Direct&&(CoderVal==0x00))
							{
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							else if(!Direct&&(CoderVal==0x03))
							{
								CombiteVal>>=2;
								SaveVal=CoderVal;
							}
							else if(Direct&&(CoderVal==0x03))
							{
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							else if(Direct&&(CoderVal==0x00))
							{
								CombiteVal>>=2;
								SaveVal=CoderVal;
							}
							break;
				case 0x00:
							if(Direct&&(CoderVal==0x02))
							{
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							else if(Direct&&(CoderVal==0x01))
							{
								CombiteVal>>=2;
								SaveVal=CoderVal;
							}
							else if(!Direct&&(CoderVal==0x01))
							{
								CombiteVal<<=2;
								CombiteVal|=CoderVal;
								SaveVal=CoderVal;
							}
							else if(!Direct&&(CoderVal==0x02))
							{
								CombiteVal>>=2;
								SaveVal=CoderVal;
							}
			}
		}
		if(CombiteVal==0x87)
		{
			CombiteVal=0x00;
			switch(OperateMode)
			{
				case MainMenuMode:
									ObjectBuf[MainKey]++;
									if(ObjectBuf[MainKey]>7)
									{
										ObjectBuf[MainKey]=1;
									}
									break;
				case SetWaterTemperatureMode:
									ObjectBuf[WaterTemperatureSet]++;
									if(ObjectBuf[WaterTemperatureSet]>45)//20~45度
									{
										ObjectBuf[WaterTemperatureSet]=20;
									}
									break;
				case SetHourMode:
									ObjectBuf[Hour]++;
									if(ObjectBuf[Hour]>23)
									{
										ObjectBuf[Hour]=0;
									}
									break;
				case SetMinMode:
									ObjectBuf[Minute]++;
									if(ObjectBuf[Minute]>59)
									{
										ObjectBuf[Minute]=0;
									}
			}
		}
		else if(CombiteVal==0x4b)
		{
			CombiteVal=0x00;
			switch(OperateMode)
			{
				case MainMenuMode:
									ObjectBuf[MainKey]--;
									if(ObjectBuf[MainKey]<1)
									{
										ObjectBuf[MainKey]=7;
									}
									break;
				case SetWaterTemperatureMode:
									ObjectBuf[WaterTemperatureSet]--;
									if(ObjectBuf[WaterTemperatureSet]<20)//20~45度
									{
										ObjectBuf[WaterTemperatureSet]=45;
									}
									break;
				case SetHourMode:
									ObjectBuf[Hour]--;
									if(ObjectBuf[Hour]>23)
									{
										ObjectBuf[Hour]=23;
									}
									break;
				case SetMinMode:
									ObjectBuf[Minute]--;
									if(ObjectBuf[Minute]>59)
									{
										ObjectBuf[Minute]=59;
									}
			}
		}


		LowFreCoderVal=(P0&0x0C)>>2;
		if(LowFreCoderVal!=LowFreSaveVal)
		{
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//			_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	
			LowFreCoderVal=(P0&0x0C)>>2;
			switch(LowFreSaveVal)
			{
				case 0x03:	if((LowFreCoderVal==0x01))
							{
								LowFreDirect=1;
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if((LowFreCoderVal==0x02))
							{
								LowFreDirect=0;
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							break;
				case 0x01:
							if(LowFreDirect&&(LowFreCoderVal==0x00))
							{
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(LowFreDirect&&(LowFreCoderVal==0x03))
							{
								LowFreCombiteVal>>=2;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(!LowFreDirect&&(LowFreCoderVal==0x03))
							{
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(!LowFreDirect&&(LowFreCoderVal==0x00))
							{
								LowFreCombiteVal>>=2;
								LowFreSaveVal=LowFreCoderVal;
							}
							break;
				case 0x02:
							if(!LowFreDirect&&(LowFreCoderVal==0x00))
							{
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(!LowFreDirect&&(LowFreCoderVal==0x03))
							{
								LowFreCombiteVal>>=2;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(LowFreDirect&&(LowFreCoderVal==0x03))
							{
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(LowFreDirect&&(LowFreCoderVal==0x00))
							{
								LowFreCombiteVal>>=2;
								LowFreSaveVal=LowFreCoderVal;
							}
							break;
				case 0x00:
							if(LowFreDirect&&(LowFreCoderVal==0x02))
							{
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(LowFreDirect&&(LowFreCoderVal==0x01))
							{
								LowFreCombiteVal>>=2;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(!LowFreDirect&&(LowFreCoderVal==0x01))
							{
								LowFreCombiteVal<<=2;
								LowFreCombiteVal|=LowFreCoderVal;
								LowFreSaveVal=LowFreCoderVal;
							}
							else if(!LowFreDirect&&(LowFreCoderVal==0x02))
							{
								LowFreCombiteVal>>=2;
								LowFreSaveVal=LowFreCoderVal;
							}
			}
		}
		if(LowFreCombiteVal==0x87)
		{
			LowFreCombiteVal=0x00;
			switch(LowFreOperateMode)
			{
				case LowFreMainMenuMode:
									ObjectBuf[LowFreMainKey]++;
									if(ObjectBuf[LowFreMainKey]>8)
									{
										ObjectBuf[LowFreMainKey]=1;
									}
									TB8=1;
									SBUF=0x6;
									while(!TI)
									{
									;
									}
									TB8=0;
									SBUF=ObjectBuf[LowFreMainKey];
									while(!TI)
									{
									;
									}
									break;
				case SetLowFreIntensityMode:
									ObjectBuf[LowFreIntensity]++;
									if(ObjectBuf[LowFreIntensity]>6)
									{
										ObjectBuf[LowFreIntensity]=6;
									}
			}
		}
		else if(LowFreCombiteVal==0x4b)
		{
			LowFreCombiteVal=0x00;
			switch(LowFreOperateMode)
			{
				case LowFreMainMenuMode:
									ObjectBuf[LowFreMainKey]--;
									if(ObjectBuf[LowFreMainKey]<1)
									{
										ObjectBuf[LowFreMainKey]=8;
									}
									break;
				case SetLowFreIntensityMode:
									ObjectBuf[LowFreIntensity]--;
									if(ObjectBuf[LowFreIntensity]<1)
									{
										ObjectBuf[LowFreIntensity]=1;
									}
			}
		}


		//处理ENTER键
		if(!FootEnter)
		{
			if(KeyEnable)
			{
				KeyEnable=0;
				delay_ms(20);
				if(!FootEnter)//enter键有效
				{
					beep=0;
					switch(OperateMode)
					{
						case MainMenuMode:
											switch(ObjectBuf[MainKey])
											{
												case 1:
														if(!RunMode)
														{
															RunMode=1;//p1
															SetParameterEnable=1;
															ObjectBuf[WaterTemperatureSet]=45;//老年
															OldWaterTemperatureSetVal=255;
															WaterTemperatureShiftFlag=1;
															KnockCount=0;
														}
														break;
												case 2:
														if(!RunMode)
														{
															RunMode=2;//p2
															SetParameterEnable=1;
															ObjectBuf[WaterTemperatureSet]=40;//中年
															OldWaterTemperatureSetVal=255;
															WaterTemperatureShiftFlag=1;
															KnockCount=0;
														}		
														break;
												case 3:
														if(!RunMode)
														{
															RunMode=3;//p3
															SetParameterEnable=1;
															ObjectBuf[WaterTemperatureSet]=37;//青年
															WaterTemperatureShiftFlag=1;
															OldWaterTemperatureSetVal=255;
															KnockCount=0;
														}
														break;
												case 4:	
														KnockPause=!KnockPause;
														KnockCount=0;
														Display(Knock);
														break;
												case 5:
														if(!RunMode)
														{
															OperateMode=SetWaterTemperatureMode;//water temperature
															ObjectBuf[WaterTemperatureSet]=30;
															RunMode=0;
														}
														break;
												case 6:	
														RunMode=0;
														HoldTemperature=0;
														KnockOut=0;
														KnockCount=0;
														WrongState=0;
														DelayStopWaterCountEnable=1;
														DelayStopWaterCount=0;
														LowWaterTemperatureFlag=1;
														if(!HeatPin)
														{
															HeatPin=OFF;
														}
														ObjectBuf[Timer]=0;
														break;
												case 7:
														if(!RunMode)
														{
															OperateMode=SetHourMode;//clock
															RunMode=0;
														}
											}
											break;
						case SetWaterTemperatureMode:
											OperateMode=MainMenuMode;
											ObjectBuf[MainKey]=5;
											WaterTemperatureShiftFlag=1;
											if(!RunMode)
											{
												SetParameterEnable=1;
												RunMode=4;
												KnockCount=0;
											}
											break;
						case SetHourMode:
											ClockBuf[0]=ObjectBuf[Hour]/10;
											ClockBuf[0]<<=4;
											ClockBuf[0]=ClockBuf[0]+ObjectBuf[Hour]%10;
											WriteClockChip(Hour,1);
											OperateMode=SetMinMode;
											break;
						case SetMinMode:	
											ClockBuf[0]=ObjectBuf[Minute]/10;
											ClockBuf[0]<<=4;
											ClockBuf[0]=ClockBuf[0]+ObjectBuf[Minute]%10;
											WriteClockChip(Minute,1);
											OperateMode=MainMenuMode;
											ObjectBuf[MainKey]=7;
					}
				}
			}
		}
		else KeyEnable=1;



		if(!LowFreEnter)
		{
			if(LowFreKeyEnable)
			{
				LowFreKeyEnable=0;
				delay_ms(20);
				if(!LowFreEnter)//enter键有效
				{
					beep=0;
					switch(LowFreOperateMode)
					{
						case LowFreMainMenuMode:
											switch(ObjectBuf[LowFreMainKey])
											{
												case 1:
															ObjectBuf[LowFreIntensity]=3;
															ObjectBuf[LowFreTimer]=15;
															LowFreRunMode=1;
															LowFreCommand=P2;
															LowFreCommand&=0xf0;
															P2=LowFreCommand|0x01;
															delay_ms(20);
															P2=LowFreCommand|0x0f;
															break;
												case 2:
															ObjectBuf[LowFreIntensity]=3;
															ObjectBuf[LowFreTimer]=15;
															LowFreRunMode=2;
															LowFreCommand=P2;
															LowFreCommand&=0xf0;
															P2=LowFreCommand|0x02;
															delay_ms(20);
															P2=LowFreCommand|0x0f;
															break;
												case 3:
															ObjectBuf[LowFreIntensity]=3;
															ObjectBuf[LowFreTimer]=15;
															LowFreRunMode=3;
															LowFreCommand=P2;
															LowFreCommand&=0xf0;
															P2=LowFreCommand|0x03;

⌨️ 快捷键说明

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