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

📄 radio.c

📁 ST72321 control tuner(FST) and CD servo (STA1052).
💻 C
📖 第 1 页 / 共 4 页
字号:
				/*#ifdef DEBUG_MODE
				DebugShow("Radio.Freq=",Radio.Freq," Wait TP not OK!");
				#endif*/
			}
			break;
		case RADIO_WORK_SEEKWAITPTY:
			if(RDS.F_GetNewPTY&&(RDS.PTY==PTYSelectType))
			{
				Radio.WorkMode=RADIO_WORK_SEEKOKWAIT;
				PTYSelectTimer=1;
				#ifdef DEBUG_MODE
				DebugShow("Radio.Freq=",Radio.Freq," Wait PTY OK!");
				#endif
				break;
			}
			if(RadioWorkTimer10ms==0)
			{
				Radio.WorkMode=RADIO_WORK_SEEKNEXT;
				/*#ifdef DEBUG_MODE
				DebugShow("Radio.Freq=",Radio.Freq," Wait PTY not OK!");
				#endif*/
			}
			break;
		case RADIO_WORK_SEEKOKWAIT:
			RadioSeekMuteTimer=5;
			Radio.WorkMode=RADIO_WORK_SEEKOK;
			break;
		case RADIO_WORK_SEEKOK:
			if(RadioSeekMuteTimer>0)break;
			RDS.F_PISeek=0;
			Radio.WorkMode=RADIO_WORK_IDLE;
			SeekOff();
			RadioMute(SOFTOFF);
			Radio.F_TunerDispReq=1;
			if(Radio.F_Scan)
			{
				Radio.WorkMode=RADIO_WORK_SCANWAIT;
				RadioWorkTimer=50;
			}
			break;
		case RADIO_WORK_SCANWAIT:
			if(RadioWorkTimer>0)break;
			Radio.WorkMode=RADIO_WORK_SEEKREQ;
			break;
		case RADIO_WORK_SEEKBREAK:
			RDS.F_PISeek=0;
			Radio.F_GoodStation=0;
			Radio.SeekMode=RADIO_SEEK_IDLE;
			Radio.WorkMode=RADIO_WORK_IDLE;
			SeekOff();
			RadioMute(SOFTOFF);
			Radio.F_TunerDispReq=1;
			break;

		case RADIO_WORK_PSREQ://display the each preset memory frequency during 5 seconds
			Radio.WorkMode=RADIO_WORK_PSWAIT;
			Radio.Band[Radio.CurrentBand].CurrentMem=0;
			RadioWorkTimer=0;
			break;
		case RADIO_WORK_PSWAIT:
			if(RadioWorkTimer>0)break;
			RadioWorkTimer=50;
			if(Radio.Band[Radio.CurrentBand].CurrentMem==6)
			{
				Radio.Band[Radio.CurrentBand].CurrentMem=1;
				Radio.WorkMode=RADIO_WORK_PSEND;
			}
			else
				Radio.Band[Radio.CurrentBand].CurrentMem++;
			BreakAFCheck();
			RadioMute(SOFTON);
			RadioSetFreq(Radio.Band[Radio.CurrentBand].MemFreq[Radio.Band[Radio.CurrentBand].CurrentMem-1]);
			RadioMute(SOFTOFF);
			System.DispMode.Requst=DISPMODE_RADIO;
			RDSDispMode=RDSDISP_IDLE;
			break;
		case RADIO_WORK_PSEND:
			RadioWorkTimer=0;
			Radio.WorkMode=RADIO_WORK_IDLE;
			break;
		case RADIO_WORK_ASPSBREAK:
			Radio.SeekMode=RADIO_SEEK_IDLE;
			Radio.WorkMode=RADIO_WORK_IDLE;
			SeekOff();
			RadioMute(SOFTOFF);
			RadioWorkTimer=0;
			Radio.F_TunerDispReq=1;
			break;

		case RADIO_WORK_ASREQ:
			if(FreqInFM(Radio.Freq)&&Radio.Area==AREA_OIRT)
				Radio.BackupFreq=Area[AREA_OIRT].FMMinFreqOirt;
			else
				Radio.BackupFreq=Radio.MinFreq;
			Radio.ReqFreq=Radio.BackupFreq;
			RadioSetFreq(Radio.ReqFreq);
			Radio.Direction=1;
			for(i=0;i<6;i++)
			{
				Radio.Band[Radio.CurrentBand].MemFreq[i]=Radio.BackupFreq;
				Radio.Band[Radio.CurrentBand].MemSmeter[i]=0;
				Radio.Band[Radio.CurrentBand].PI[i]=0;
				Radio.Band[Radio.CurrentBand].MemAFNum[i]=1;
				for(j=0;j<8;j++)
					Radio.Band[Radio.CurrentBand].MemAFList[i][j]=0xFF;
			}
			SeekOn();
			RadioMute(SOFTON);
			Radio.WorkMode=RADIO_WORK_ASWAIT;
			TempPresetNum=0;
			Radio.F_TunerDispReq=1;
			break;
		case RADIO_WORK_ASWAIT:
			if(Radio.SeekMode!=RADIO_SEEK_IDLE)break;
			if(Radio.F_GoodStation)
			{
				Radio.F_GoodStation=0;
				if((FreqInFM(Radio.Freq)&&!FreqInJapanFM(Radio.Freq)&&!FreqInWBFM(Radio.Freq))&&(RDS.F_AFEnable||RDS.F_TAEnable))
				{
					Radio.WorkMode=RADIO_WORK_ASWAITRDS;
					RadioWorkTimer10ms=25;
					break;
				}
				else
					PresetOrder();
			}
		case RADIO_WORK_ASNEXT:
			Radio.ReqFreq=RadioFreqCal(Radio.SeekStep);
			Radio.SeekMode=RADIO_SEEK_INIT;
			Radio.WorkMode=RADIO_WORK_ASWAIT;
			if(Radio.ReqFreq==Radio.BackupFreq)
			{
				Radio.SeekMode=RADIO_SEEK_IDLE;
				Radio.WorkMode=RADIO_WORK_ASEND;
			}
			break;

		case RADIO_WORK_ASWAITRDS:
			if(RDS.F_RDSStation)
			{
				Radio.WorkMode=RADIO_WORK_ASWAITPI;
				RadioWorkTimer10ms=100;
				break;
			}
			if(RadioWorkTimer10ms==0)
				Radio.WorkMode=RADIO_WORK_ASNEXT;
			break;

		case RADIO_WORK_ASWAITPI:
			if(RDS.F_GetNewPI&&RDS.PI!=0)
			{
				for(i=0,j=0;i<TempPresetNum;i++)
				{
					if(RDS.PI==Radio.Band[Radio.CurrentBand].PI[i])
					{
						j=1;
						break;
					}
				}
				if(j)
				{
					Radio.WorkMode=RADIO_WORK_ASNEXT;
				}
				else
				{
					Radio.WorkMode=RADIO_WORK_ASWAITAFLIST;
					RadioWorkTimer10ms=250;
				}
				break;
			}
			if(RadioWorkTimer10ms==0)
				Radio.WorkMode=RADIO_WORK_ASNEXT;
			break;
			
		case RADIO_WORK_ASWAITAFLIST:
			if(RDS.F_GetAFList)
			{
				PresetOrder();
				Radio.WorkMode=RADIO_WORK_ASNEXT;
				break;
			}
			if(RadioWorkTimer10ms==0)
				Radio.WorkMode=RADIO_WORK_ASNEXT;
			break;
			
		case RADIO_WORK_ASEND:
			//for(i=0;i<TempPresetNum;i++)
			//	Radio.Band[Radio.CurrentBand].MemFreq[i]=TempPreset[i].Freq;
			SeekOff();
			RadioMute(SOFTOFF);
			Radio.WorkMode=RADIO_WORK_PSREQ;
			break;
			
	}
	
}

/*********************************************
	Function:		RadioSetFreq
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:38:24
*********************************************/
void RadioSetFreq(unsigned int setfreq)
{
	unsigned int pc;
	unsigned char i,start,end;

#if TDA7540_TUNER
if(!Radio.F_TDA7541)
{
	start=39;
	end=0;
	
	if(Radio.F_ForceSetBuff)
	{
		for(i=0;i<40;i++)
			Radio.TunerBuff[i]=EepromBuff[i];

		// seek off
		Radio.TunerBuff[0] &= 0x7F;

		// Disable local mode
		Radio.TunerBuff[7] &= 0x7F;

	       //Enable AFS PIN and AFS influence on stereodecoder mute
		Radio.TunerBuff[31] &= y11110011;
		Pin_AFS=1;

		start=0;
		end=39;
	}

	//PLL counter
	if(FreqInJapanFM(setfreq))
	{
		pc=(setfreq-1070)/5-32;
	}
	else if(FreqInOirtFM(setfreq))
	{
		pc=(setfreq+1070)/1-32;
	}	
	else if(FreqInWBFM(setfreq))
	{
		pc=(setfreq-2400)/25+6892;//PLL counter(162.400)=6892
	}
	else if(FreqInNormalFM(setfreq))
	{
		pc=(setfreq+1070)/5-32;
	}
	else
	{
		pc=(setfreq+10700)/1-32;
	}
	Radio.TunerBuff[1]=(unsigned char)(pc&0x00FF);
	Radio.TunerBuff[2]=(unsigned char)((pc>>8)&0x00FF);
	Radio.TunerBuff[4]=GetTV2(setfreq);

	//charge pump
	if(FreqInFM(setfreq))
	{
		Radio.TunerBuff[0]&= 0x80;
		Radio.TunerBuff[0]=Radio.TunerBuff[0]|PLL_HIGHCURRENT_MODE|PLL_LOWCURRENT_100uA\
				              |Radio_PLL_FMISet(setfreq);
	}
	else
	{
		Radio.TunerBuff[0]&= 0x80;
		Radio.TunerBuff[0]=Radio.TunerBuff[0]| PLL_HIGHCURRENT_MODE | PLL_LOWCURRENT_50uA\
				              |Radio_PLL_AMISet(setfreq);
	}
	if(start>0)start=0;
	if(end<4)end=4;

	if(FreqInFM(setfreq)&& (FreqInAM(Radio.Freq)||Radio.F_ForceSetBuff))//Change to FM
	{
		//IF Counter control 1
		Radio.TunerBuff[5]&= 0x48;
		Radio.TunerBuff[5]= Radio.TunerBuff[5] | PLL_LOCK_ENABLE | PLL_IFC_FMMODE \
			                  |PLL_TSAMPLE_FM20_48_AM128;
		//IF Counter control 2
		Radio.TunerBuff[6]= PLL_IFC_CENTER_10_7MHZ | PLL_IFC_EW_FM12_5_AM2K;	
		
		//Vco divder and pll reference
		if(FreqInOirtFM(setfreq))
			Radio.TunerBuff[14]=y00110110;
		else if(FreqInJapanFM(setfreq))
			Radio.TunerBuff[14]=y00100010;
		else if(FreqInWBFM(setfreq))
			Radio.TunerBuff[14]=y00101111;
		else
			Radio.TunerBuff[14]=y00100101;
		
		//Change tv2 offset and switch "ON" iss filter for weather band	
		if(FreqInWBFM(setfreq))
		{
                     Radio.TunerBuff[7] &= 0xCF;
                     Radio.TunerBuff[7] |= 0x20;
                     Radio.TunerBuff[8] |= 0x08;	
		}
		else
		{
			Radio.TunerBuff[7] &= 0xCF;
			Radio.TunerBuff[8] &= 0xf7;
		}

		//SSTOP threshold
		if(Radio.F_LocDx)
		{
			Radio.TunerBuff[23] &= 0x0F;
			Radio.TunerBuff[23] += SSTOP_IFC_4_40V; 
		}
		else
		{
			Radio.TunerBuff[23] &= 0x0F;
			Radio.TunerBuff[23] += SSTOP_IFC_2_51V; //KSE FSTC
			//Radio.TunerBuff[23] += SSTOP_IFC_1_43V;
		}

		//IF gain
		Radio.TunerBuff[19] &= 0xf9;
		Radio.TunerBuff[19] |=0x06;//18dB in FM
		
		if(start>5)start=5;
		if(end<23)end=23;
	}
	else if(FreqInAM(setfreq)&& (FreqInFM(Radio.Freq)||Radio.F_ForceSetBuff))//Change to AM
	{
		//IF Counter control 1
		Radio.TunerBuff[5]&= 0x48;
		Radio.TunerBuff[5] = Radio.TunerBuff[5] | PLL_LOCK_ENABLE | PLL_IFC_AM450K\
						|PLL_TSAMPLE_FM10_24_AM64;
		//IF Counter control 2
		Radio.TunerBuff[6] = PLL_IFC_CENTER_450KHZ| PLL_IFC_EW_FM12_5_AM2K;	
		
		//Vco divder and pll reference
		Radio.TunerBuff[14]=y01110101;
		
		//SSTOP threshold
		if(Radio.F_LocDx)
		{
			Radio.TunerBuff[23] &= 0x0F;
			Radio.TunerBuff[23] += SSTOP_IFC_4_13V;
		}
		else
		{
			Radio.TunerBuff[23] &= 0x0F;
			Radio.TunerBuff[23] += SSTOP_IFC_1_43V;
		}
		
		//IF gain
		Radio.TunerBuff[19] &= 0xf9;//9dB in AM

		if(start>5)start=5;
		if(end<23)end=23;
	}
	if(end<32)
	{
		RadioTunerSend(start,end);
	}
	else
	{
		RadioTunerSend(start,31);
		RadioTunerSend(32,end);
	}
	Radio.F_ForceSetBuff=0;
}
#endif

//Yete upgrade for TDA7541 on June-22-2007
#if TDA7541_TUNER
if(Radio.F_TDA7541)
{
	start=29;
	end=0;
	
	if(Radio.F_ForceSetBuff||(FreqInFM(setfreq) && FreqInAM(Radio.Freq))||(FreqInAM(setfreq) && FreqInFM(Radio.Freq)))
	{
		if(FreqInFM(setfreq) && FreqInAM(Radio.Freq))//change to FM
		{
			EepromRead(TunerEepromAddress,10,30,&EepromBuff[0]);
		}
		if(FreqInAM(setfreq) && FreqInFM(Radio.Freq))//change to AM
		{
			EepromRead(TunerEepromAddress,70,30,&EepromBuff[0]);//Another setting for AM!!!!!!!Depend on EEPROM structure
		}
		for(i=0;i<30;i++)
			Radio.TunerBuff[i]=EepromBuff[i];
		Radio.TunerBuff[0]=(Radio.TunerBuff[0]&0x07)|TDA7541_PLL_LOCK_ENABLE|TDA7541_STEREO_MUTE_DISABLE|TDA7541_LOCAL_DISABLE|TDA7541_ASFC_NORMAL|TDA7541_SEEK_OFF;
		Radio.TunerBuff[20]=(Radio.TunerBuff[20]&0xbf)|TDA7541_MPTC_ENABLE;
		start=0;
		end=29;
	}

	//PLL counter
	if(FreqInJapanFM(setfreq))
	{
		pc=(setfreq-1070)/5-32;
	}
	else if(FreqInOirtFM(setfreq))
	{
		pc=(setfreq+1070)/1-32;
	}	
	else if(FreqInWBFM(setfreq))
	{
		pc=(setfreq-2400)/25+6892;//PLL counter(162.400)=6892
	}
	else if(FreqInNormalFM(setfreq))
	{
		pc=(setfreq+1070)/5-32;
	}
	else
	{
		pc=(setfreq+10700)/1-32;
	}
	Radio.TunerBuff[1]=(unsigned char)(pc&0x00FF);
	Radio.TunerBuff[2]=(unsigned char)((pc>>8)&0x00FF);
	//TV2
	Radio.TunerBuff[3]=GetTV2(setfreq);
	//charge pump
	if(FreqInFM(setfreq))
	{
		Radio.TunerBuff[0]=(Radio.TunerBuff[0]&0xf8)|Radio_PLL_FMISet(setfreq);
	}
	else
	{
		Radio.TunerBuff[0]=(Radio.TunerBuff[0]&0xf8)|Radio_PLL_AMISet(setfreq);
	}
	if(start>0)start=0;
	if(end<3)end=3;

	//Change to FM band from other band
	if(FreqInFM(setfreq)
		&& (FreqInAM(Radio.Freq)||Radio.F_ForceSetBuff))
	{
		//IF Counter control
		//Register25-Disable expand mode of IF sampling time and error window
		Radio.TunerBuff[25]=0xfe;
		if(FreqInWBFM(setfreq))
			Radio.TunerBuff[4]= (Radio.TunerBuff[4]&0x04)|TDA7541_PLL_TV_TRACK|TDA7541_PLL_TVOFFSET_ENABLE|TDA7541_PLL_TSAMPLE_FM20_48_AM128|TDA7541_PLL_IFC_EW_FM12_5_AM2K|TDA7541_FMMODE;
		else
			Radio.TunerBuff[4]= (Radio.TunerBuff[4]&0x04)|TDA7541_PLL_TV_TRACK|TDA7541_PLL_TVOFFSET_DISABLE|TDA7541_PLL_TSAMPLE_FM20_48_AM128|TDA7541_PLL_IFC_EW_FM12_5_AM2K|TDA7541_FMMODE;

		//Vco divder and pll reference
		if(FreqInOirtFM(setfreq))
			Radio.TunerBuff[5]=(Radio.TunerBuff[5]&0xc0)|TDA7541_VCO_DIVIDER_3|TDA7541_VCO_PHASE_180|TDA7541_PLL_REFERECE_10KHz;
		else if(FreqInJapanFM(setfreq))
			Radio.TunerBuff[5]=(Radio.TunerBuff[5]&0xc0)|TDA7541_VCO_DIVIDER_3|TDA7541_VCO_PHASE_0|TDA7541_PLL_REFERECE_50KHz;
		else if(FreqInWBFM(setfreq))
			Radio.TunerBuff[5]=(Radio.TunerBuff[5]&0xc0)|TDA7541_VCO_DIVIDER_ORIGINAL|TDA7541_VCO_PHASE_180|TDA7541_PLL_REFERECE_25KHz;
		else
			Radio.TunerBuff[5]=(Radio.TunerBuff[5]&0xc0)|TDA7541_VCO_DIVIDER_2|TDA7541_VCO_PHASE_180|TDA7541_PLL_REFERECE_50KHz;
		
		//filter/gain for weather band	
		if(FreqInWBFM(setfreq))
			Radio.TunerBuff[11]=(Radio.TunerBuff[11]&0x0fd)|TDA7541_WB_ENABLE;
		else
			Radio.TunerBuff[11]=(Radio.TunerBuff[11]&0x0fd)|TDA7541_WB_DISABLE;

		//IF gain and Q
		//Radio.TunerBuff[14]=(Radio.TunerBuff[14]&0x0F)|TDA7541_IF2Q_R5k_FMQ3|TDA7541_IF2_GAIN_21;

		//STD vco
		//Radio.TunerBuff[23]=(Radio.TunerBuff[23]&0xdf)|TDA7541_STD_VCO_ON;
		
		//SSTOP threshold---!!!Cutomer can adjust this threshold to adapt their own seek sensitivity requirment
		if(Radio.F_LocDx)
			Radio.TunerBuff[10]= (Radio.TunerBuff[10]&0x0F)|TDA7541_SSTOP_IFC_FM2_1_AM3_5; 
		else
			Radio.TunerBuff[10]= (Radio.TunerBuff[10]&0x0F)|TDA7541_SSTOP_IFC_FM1_1_AM2_0;
		
		if(start>4)start=4;
		if(end<25)end=25;
	}
	
	//Change to AM band from other band
	else if(FreqInAM(setfreq)
		&& (FreqInFM(Radio.Freq)||Radio.F_ForceSetBuff))
	{
		//IF Counter control
		if(FreqInLWAM(setfreq))
		{
			//Registe25--enable expand mode error window for LW
			Radio.TunerBuff[25]=0x7e;
			Radio.TunerBuff[4]= (Radio.TunerBuff[4]&0x04)|TDA7541_PLL_TV_TRACK|TDA7541_PLL_TVOFFSET_DISABLE|TDA7541_PLL_TSAMPLE_FM10_24_AM64|TDA7541_PLL_IFC_EW_FM12_5_AM2K|TDA7541_AMMODE;
		}
		else
		{
			//Register25-Disable expand mode of IF sampling time and error window
			Radio.TunerBuff[25]=0xfe;
			Radio.TunerBuff[4]= (Radio.TunerBuff[4]&0x04)|TDA7541_PLL_TV_TRACK|TDA7541_PLL_TVOFFSET_DISABLE|TDA7541_PLL_TSAMPLE_FM10_24_AM64|TDA7541_PLL_IFC_EW_FM6_25_AM1K|TDA7541_AMMODE;
		}
		//Vco divder and pll reference
		Radio.TunerBuff[5]=TDA7541_AM_PREDIVIDER_10|TDA7541_VCO_DIVIDER_2|TDA7541_VCO_PHASE_180|TDA7541_PLL_REFERECE_10KHz;

		//Weather band disable
		Radio.TunerBuff[11]=(Radio.TunerBuff[11]&0x0fd)|TDA7541_WB_DISABLE;

		//IF gain and Q
		//Radio.TunerBuff[14]=(Radio.TunerBuff[14]&0x0F)|TDA7541_IF2Q_NOR_AMQ28_FMQ28|TDA7541_IF2_GAIN_9;

		//STD vco
		//Radio.TunerBuff[23]=(Radio.TunerBuff[23]&0xdf)|TDA7541_STD_VCO_OFF;
		
		//SSTOP threshold---!!!Cutomer can adjust this threshold to adapt their own seek sensitivity requirment
		if(Radio.F_LocDx)
			Radio.TunerBuff[10]= (Radio.TunerBuff[10]&0x0F)|TDA7541_SSTOP_IFC_FM1_3_AM2_3; 
		else
			Radio.TunerBuff[10]= (Radio.TunerBuff[10]&0x0F)|TDA7541_SSTOP_IFC_FM0_7_AM1_4;

		if(start>4)start=4;
		if(end<25)end=25;
	}
	
	RadioTunerSend(start,end);
	Radio.F_ForceSetBuff=0;
}
#endif
	
	if((FreqInNormalFM(setfreq)&&(!FreqInNormalFM(Radio.Freq)))||(FreqInJapanFM(setfreq)&&(!FreqInJapanFM(Radio.Freq))))
	{
		Radio.MaxFreq=Area[Radio.Area].FMMaxFreq;
		Radio.MinFreq=Area[Radio.Area].FMMinFreq;
		Radio.Step=Area[Radio.Area].FMStep;
		Radio.SeekStep=Area[Radio.Area].FMSeekStep;
	}
	else if(FreqInOirtFM(setfreq)&&(!FreqInOirtFM(Radio.Freq)))
	{
		Radio.MaxFreq=Area[AREA_OIRT].FMMaxFreqOirt;
		Radio.MinFreq=Area[AREA_OIRT].FMMinFreqOirt;
		Radio.Step=Area[AREA_OIRT].FMStepOirt;
		Radio.SeekStep=Radio.Step;
	}
	else if(FreqInMWAM(setfreq)&&(!FreqInMWAM(Radio.Freq)))
	{
		Radio.MaxFreq=Area[Radio.Area].AMMaxFreqMW;
		Radio.MinFreq=Area[Radio.Area].AMMinFreqMW;
		Radio.Step=Area[Radio.Area].AMStepMW;
		Radio.SeekStep=Radio.Step;
	}
	else if(FreqInLWAM(setfreq)&&(!FreqInLWAM(Radio.Freq)))
	{
		Radio.MaxFreq=Area[Radio.Area].AMMaxFreqLW;
		Radio.MinFreq=Area[Radio.Area].AMMinFreqLW;
		Radio.Step=Area[Radio.Area].AMStepLW;
		Radio.SeekStep=Radio.Step;
	}
	else if(FreqInWBFM(setfreq)&&(!FreqInWBFM(Radio.Freq)))
	{
		Radio.MaxFreq=Area[Radio.Area].FMMaxFreqWB;
		Radio.MinFreq=Area[Radio.Area].FMMinFreqWB;
		Radio.Step=Area[Radio.Area].FMStepWB;
		Radio.SeekStep=Radio.Step;
	}

	Radio.Freq=setfreq;
	Radio.Band[Radio.CurrentBand].BandFreq=Radio.Freq;
	
	if(!RADIO_IN_PS)
	{
		for(i=0;i<6;i++)
		{
			if(Radio.Freq==Radio.Band[Radio.CurrentBand].MemFreq[i])
			{
				Radio.Band[Radio.CurrentBand].CurrentMem=i+1;
				break;
			}
			if(i==5)Radio.Band[Radio.CurrentBand].CurrentMem=0;
		}
	}

⌨️ 快捷键说明

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