亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? user.c

?? 嵌入式系統(tǒng)開發(fā)MP3一般用戶所需的操作函數(shù) 很好的代碼.
?? C
字號(hào):
#include "..\userdefine.h"
#include "user.h"
#include "userinit.h"
#include "main.h"


data	bit	gb_Openfile=0;		// For Open file Flag behind the UI-State transition
data	bit	gb_UIPostError=0;	// The Error flag of UI post-processor for Audio Engine, such as Open file fail, initial fail etc.
data	bit	gc_CardInsert;
data	U8	gc_DOS_ErrorStatus;
xdata	U8	gc_fileend;

extern	data	bit	gb_Frequency_Song;	// 0=Show Frequency    1=Show Song Number/EQ
extern	data	bit	gb_SelectEQ;		// 1=Show EQ
extern	data	bit	gb_SelectVol;		// 1=Show Vol
extern	data	bit	gb_LED_LCM;
extern	data	bit	gb_CHChg;
extern	data	U8	gc_FileSkipNumber;
extern	data	U8	gc_maxtimes;
extern	data	U16	gw_SongNumber;
extern	data	U16	gw_SongNumberSD;
extern	data	U16	gw_ShowTimer;
extern	data	U16	gw_ChangeFrequencyTimer;
extern	data	U16	gw_DispSongNum;
extern	data	U8	gc_xxx;
extern	xdata	U8	gc_FileLongName[];

void	Audio_CoDec(void);
void	SD_InsertState_Detect(void);
void	UI_PreProcessor_scan_key(void);
void	X_RandomGetFileIndex(void);
void	Playing_To_Stop(void);

extern	void	I2CByteWrite(U8 adr,U8 bytedata);
extern	void	VOL_UP(void);
extern	void	VOL_DOWN(void);
extern	void	FM_FREQ_CHG(U8 tc_UP_DOWN, U8 offset);
extern	void	ClearIRBuffer(void);
extern	void	Frequency_Disp(void);
extern	U8		Dos_GetFileLongName(U8 tc_FileHandle,U8 *tpc_LongName);

void UI_PreProcessor_scan_key(void)
{
	gc_EVENT=gc_KeyValue;
	if (gc_KeyValue)
	{			
		gc_KeyValue = 0;
	}
	if ((gc_LongKeyDelay < (MAX_REPEATKEYDELAY - 3)) && (gc_EVENT == LONG_KEY_PLAY_EVENT))
	{
		gc_EVENT = 0;
	}
}


void UI_VolumeUpDown(bit tbt_UpDown)
{
	U8	tc_maxvol;

	tc_maxvol=63;

	if(tbt_UpDown)
	{
		if(gc_DSP_Volume<tc_maxvol)
		{
			gc_DSP_Volume+=3;
		}
	}
	else
	{
		if(gc_DSP_Volume>=3) 
		{
			gc_DSP_Volume-=3;
		}
	}

	if(gc_SystemStateMode==SYSTEM_STATE1_PLAYING)//dsLONG_KEY_PLAY_EVENT
	{
		System_SetVolume(gc_DSP_Volume);
	}
}



void UI_FFFR(bit XFFFR)//go the next or ahead file,File_Close(NULL, K_DOS_ReadFile, 0);
{                            //->Search_File(GS_SearchMode,gc_UIMode,0);
                            //if state_waitidle,after search file ,then show the related informations
	switch(gc_SystemStateMode)
	{
		case SYSTEM_STATE0_IDLE:
			if(gw_FileIndex[0]==0)
				return;//if no this line,error will happen
			break;
		case SYSTEM_STATE1_PLAYING:
			gb_Openfile = 1; // Make Openfile post-processor activity
			break;
		case STATE_PLAY_PAUSE:
			gc_SystemStateMode = SYSTEM_STATE0_IDLE; //return to IDLE State
			break;
	}

	if(gc_FileSkipNumber==200)
	{	
		gc_FileSkipNumber=100;
	    System_NextOrPrev(XFFFR, 1, 0);
		gc_FileSkipNumber=100;
	    System_NextOrPrev(XFFFR, 1, 0);
	}
	else
	{
		System_NextOrPrev(XFFFR, 1, 0);
	}
	gw_ShowTimer=3000;
	gb_Frequency_Song=1;	// 0=Show Frequency    1=Show Song Number/EQ
	gb_SelectVol=0;			// 1=Show Vol
	gb_SelectEQ=0;
}


void UI_Processorstate_transition(void) using 0
{
	switch(gc_SystemStateMode)
	{
		case SYSTEM_STATE0_IDLE:   //State IDLE on--
			gs_System_State.w_BitRate = 0;
			if(gc_EVENT)
			{				
				switch(gc_EVENT)
				{
					case SHORT_KEY_PLAY_EVENT://for play MP3 or DVR
						if(gw_FileTotalNumber[0]==0) 
						{
							break;//no file, don't play
						}
						gc_SystemStateMode=SYSTEM_STATE1_PLAYING;
						gb_Openfile = 1; // Make Openfile post-processor activity
						break;

					case LONG_KEY_FF_EVENT:
						if(gw_ChangeFrequencyTimer!=0)
						{
							gw_ChangeFrequencyTimer=3000;
							FM_FREQ_CHG(1,1);
						}
						break;
					case LONG_KEY_FR_EVENT:
						if(gw_ChangeFrequencyTimer!=0)
						{
							gw_ChangeFrequencyTimer=3000;
							FM_FREQ_CHG(0,1);
						}
						break;
					case SHORT_KEY_FF_EVENT:
						if(gw_ChangeFrequencyTimer!=0)
						{
							gw_ChangeFrequencyTimer=3000;
							FM_FREQ_CHG(1,1);
						}
						break;
					case SHORT_KEY_FR_EVENT:
						if(gw_ChangeFrequencyTimer!=0)
						{
							gw_ChangeFrequencyTimer=3000;
							FM_FREQ_CHG(0,1);
						}
						break;

					case SHORT_KEY_MODE_EVENT:		// CH
					case LONG_KEY_MODE_EVENT:
						gw_ChangeFrequencyTimer=3000;
						gb_Frequency_Song=0;
						ClearIRBuffer();
						gb_CHChg=1;
						break;

					case SHORT_KEY_VOLUP_EVENT:		// CH +
					case LONG_KEY_VOLUP_EVENT:
						FM_FREQ_CHG(1,1);
						break;

	                case SHORT_KEY_VOLDOWN_EVENT:	// CH -
					case LONG_KEY_VOLDOWN_EVENT:
						FM_FREQ_CHG(0,1);
						break;

					default:
						break;
				}
			}

			gc_EVENT=0;
			break;

		case SYSTEM_STATE1_PLAYING:
			switch(gc_EVENT)
			{//PLAY event
				case SHORT_KEY_PLAY_EVENT://PAUSE/PLAY	
					gc_SystemStateMode=STATE_PLAY_PAUSE;
					System_Pause();
					break;
				case LONG_KEY_PLAY_EVENT:	// Change play mode(Sequential/Random)
					gc_PlaySequenceMode++;
					if(gc_PlaySequenceMode==4)
					{
						gc_PlaySequenceMode=1;
					}

					if(gb_LED_LCM==1)
					{
						gw_ShowTimer=3000;
					}
					I2CByteWrite(3,gc_PlaySequenceMode);
					break;
				case LONG_KEY_FF_EVENT:
					if(gw_ChangeFrequencyTimer!=0)
					{
						gw_ChangeFrequencyTimer=3000;
						FM_FREQ_CHG(1,1);
					}
					else
					{
						VOL_UP();
					}
					break;
				case LONG_KEY_FR_EVENT:
					if(gw_ChangeFrequencyTimer!=0)
					{
						gw_ChangeFrequencyTimer=3000;
						FM_FREQ_CHG(0,1);
					}
					else
					{
						VOL_DOWN();
					}
					break;
				case SHORT_KEY_FF_EVENT:
					if(gw_ChangeFrequencyTimer!=0)
					{
						gw_ChangeFrequencyTimer=3000;
						FM_FREQ_CHG(1,1);
					}
					else
					{
						gc_FileSkipNumber=0;
						if((gc_PlaySequenceMode == 0x02)||(gc_PlaySequenceMode == 0x01))
						{
							UI_FFFR(0);
						}
						else	// Random play
						{
							gb_Openfile = 1;
							X_RandomGetFileIndex();
							gw_ShowTimer=3000;
							gb_Frequency_Song=1;	// 0=Show Frequency    1=Show Song Number/EQ
							gb_SelectVol=0;			// 1=Show Vol
							gb_SelectEQ=0;
						}
					}
					break;
				case SHORT_KEY_FR_EVENT:
					if(gw_ChangeFrequencyTimer!=0)
					{
						gw_ChangeFrequencyTimer=3000;
						FM_FREQ_CHG(0,1);
					}
					else
					{
						gc_FileSkipNumber=0;
						if((gc_PlaySequenceMode == 0x02)||(gc_PlaySequenceMode == 0x01))
						{
							UI_FFFR(1);
						}
						else
						{
							gb_Openfile = 1;
							X_RandomGetFileIndex();
							gw_ShowTimer=3000;
							gb_Frequency_Song=1;	// 0=Show Frequency    1=Show Song Number/EQ
							gb_SelectVol=0;			// 1=Show Vol
							gb_SelectEQ=0;
						}
					}
					break;
				case SHORT_KEY_MODE_EVENT:		// CH
				case LONG_KEY_MODE_EVENT:
					if((XBYTE[0xB409]&0x92)==0x82)
					{
						FM_FREQ_CHG(1,1);
					}
					else
					{
						gw_ChangeFrequencyTimer=3000;
						gb_Frequency_Song=0;
						gb_CHChg=1;
					}

					if(gb_LED_LCM==1)
					{					
						Frequency_Disp();
					}
					break;
				case SHORT_KEY_VOLUP_EVENT:		// CH +
				case LONG_KEY_VOLUP_EVENT:
					FM_FREQ_CHG(1,1);
					break;
                case SHORT_KEY_VOLDOWN_EVENT:	// CH -
				case LONG_KEY_VOLDOWN_EVENT:
					FM_FREQ_CHG(0,1);
					break;
				case SHORT_KEY_STOP_EVENT:		// STOP
				case LONG_KEY_STOP_EVENT:
					Playing_To_Stop();
					break;
				default:
					break;
			}

			if(gc_SystemStateMode==SYSTEM_STATE1_PLAYING)
			{
                if(gc_fileend==0)
				{
					Audio_CoDec();
				}
			}			
			gc_EVENT=0;
			break;

		case STATE_PLAY_PAUSE:
			switch(gc_EVENT)
			{//PAUSE event
				case SHORT_KEY_PLAY_EVENT:
					//==return to PLAY state==//
					gb_PlayPause = 0;
                	System_SetEQ(gc_PlayEQMode);//lyh add
                	System_SetVolume(gc_DSP_Volume);//lyh add
                    (0);
					gc_SystemStateMode=SYSTEM_STATE1_PLAYING;		// recovery previous State
					break;
			}

			gc_EVENT=0;
			break;

		default://state default
			break;
	}
}


void UI_EventPostDpc(void) using 0
{
	U8	sts;

	// -- Open file post processor for record or play procedure trigger
	if(gb_Openfile)
	{
		gb_Openfile = 0;	//reset flag

		if (gc_SystemStateMode==SYSTEM_STATE1_PLAYING)
		{//SYSTEM_STATE1_PLAYING
			if(gw_FileTotalNumber[0])	 // There are mp3 and DVR's files are existed!
		    {
				System_Stop();
				System_SetEQ(gc_PlayEQMode);//lyh add
                System_SetVolume(gc_DSP_Volume);//lyh add

				sts = (0);		//lyh add

				if(sts)
				{
                    System_Stop();
					gb_UIPostError = 1;
					return;			 // Open file error !!At here ,the process error!!!
				}
				gc_fileend=0;//gb_Openfile->gc_fileend
                gb_PlayPause = 0;
			}
			else
			{
				gc_SystemStateMode=SYSTEM_STATE0_IDLE;
				return;
			}
		}
		G_Currtotalsecond=0;     
        USER_DelayDTms(10);				// Delay 10mS for de-bounce
	}
}


void Audio_CoDec(void)
{
	if(gb_UIPostError)  // UI post-processor error happen !!
	{
		// reset the state to IDLE state --
		gb_UIPostError=0;     // reset the error flag
		if(gc_SystemStateMode==SYSTEM_STATE1_PLAYING)
		{
			if(gc_PlaySequenceMode == 0x01)
			{//repeat one
				//==initialize parameters==//
				gc_SystemStateMode=SYSTEM_STATE0_IDLE;
			}
			else
			{ 	
				//repeat all and no repeat
				if (gw_FileIndex[0]==gw_FileTotalNumber[0])   
				{
					gc_PeriphStep = PERIPH_IDLE; 
					gbt_FindFlag = 0;
					gc_SystemStateMode=SYSTEM_STATE0_IDLE;//error happern,goto idle state						
				}
				else
				{
					gb_Openfile = 1; // Make Openfile post-processor activity					
				}
				DOS_Search_File(0x01,0,0x10); 
			}
		}

		return;
	}

	if(gc_SystemStateMode==SYSTEM_STATE1_PLAYING)
	{
	 	// 1         in  the normal state
		if(!gc_fileend)
		{//A            
		    if(gb_PlayPause)
			{
				gc_SystemStateMode=STATE_PLAY_PAUSE;
			}

			gc_fileend = CODEC_MCU_TO_DSP();
		}
		else
		{//End of File for play		
			{//wait DSP decode end			
				if(gc_PlaySequenceMode == 0x03) // Random play
				{
					gb_Openfile = 1; // Make Openfile post-processor activity
					X_RandomGetFileIndex();
				}
				else if(gc_PlaySequenceMode == 0x02) // Repeat All
				{
					if (gw_FileIndex[0]==gw_FileTotalNumber[0])
			    	{
						if(gc_PlaySequenceMode == 0x02)
					    {
							gb_Openfile = 1; // Make Openfile post-processor activity
							System_NextOrPrev(0, 1, 0);
					    }
					 	else    // Mode=0 , Single play,  stop play right now!
					    {
						  gc_SystemStateMode=SYSTEM_STATE0_IDLE;
						  System_Stop();//must call system_stop() here
						  DOS_Search_File(0x12,1,0x10);
					    }
					}
				    else
					{
						gb_Openfile = 1; // Make Openfile post-processor activity
						System_NextOrPrev(0, 1, 0);
					}
				}
				else	// Repeat 1
				{
					gb_Openfile = 1;
					System_NextOrPrev(0, 1, 0);
					System_NextOrPrev(1, 1, 0);
				}
			}
		}
	}
}


void X_RandomGetFileIndex(void)
{
	U16 Num;
	
	if(gw_FileTotalNumber[0]==1)
	{
		return;
	}
	else if(gw_FileTotalNumber[0]==2)
	{
		System_NextOrPrev(0,1,0);
		return;
	}

	Num=(((TH0<<8)+TL0)%gw_FileTotalNumber[0])+1;

	if(gw_FileIndex[0]==Num)	// Same song number, play next one
	{
		Num=1;
	}
	else
	{
		if (gw_FileIndex[0] > Num)
		{
			Num=gw_FileIndex[0]-Num;
		}
		else
		{
			Num=gw_FileTotalNumber[0]+gw_FileIndex[0]-Num;
		}
	}
	gc_FileSkipNumber=Num;
	System_NextOrPrev(1,1,0);
}


void UI_host_decet(void)
{
	U8 tc_HostInsert,tc_DoInitialize; 
	tc_HostInsert = 0;	
	tc_DoInitialize = 0;

    if((gc_CurrentCard == CURRENT_MEDIA_HOST)&&(gb_HostConnect == 0))
 	{//if data read write timeout occur
		System_Stop();
		gc_SystemStateMode = SYSTEM_STATE0_IDLE;
		Host_Remove();	
		gc_CurrentCard = 0;
	}

	if(gc_SystemStateMode == SYSTEM_STATE0_IDLE)
	{		
		tc_HostInsert = Host_DetectDevice();

		if(!tc_HostInsert)
		{	
			//host insert
			if (!(gc_CurrentExistMedia & 0x20))
			{
				//HOST does not exist last time 	
		  		gc_DOS_ErrorStatus = Host_Initial();
		  		if(!gc_DOS_ErrorStatus)
				{
					//initial successfully
					gc_CurrentExistMedia |= 0x20;
					gc_CurrentCard = CURRENT_MEDIA_HOST;
					tc_DoInitialize = 1;
				}
				else
				{
					Host_Remove();	//initial fail
					tc_HostInsert=1; // 20080620
				}		  
			} 
		}
		else
		{//host be out
			if((gc_CurrentExistMedia & 0x20)==0x20)
			{//host exists last time
				gc_CurrentExistMedia &= 0xDF;  
				gc_DOS_ErrorStatus = SD_STORAGE_Initialize();
				if(gc_DOS_ErrorStatus==0)
				{
					tc_DoInitialize = 1;  
				}
			} 		
			tc_HostInsert=1; // 20080620
		}

		if (tc_DoInitialize)
		{
			gc_KeyValue=3;	// maxliao 20070719

			gs_File_FCB[0].dw_FDB_StartCluster = gdw_DOS_RootDirClus;
			gbt_FindFlag = 0;//?璶材

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道亚洲精品aⅴ| 欧美日韩一级二级| 亚洲一区二区美女| 精品美女在线观看| 欧美亚洲综合色| 国产成人在线影院| 麻豆成人综合网| 亚洲一级二级在线| 国产精品福利av| 精品国产99国产精品| 欧美区一区二区三区| 91美女在线视频| 成人一区二区三区视频在线观看| 日韩av在线发布| 亚洲图片欧美视频| 亚洲精品乱码久久久久久久久| 精品国产三级电影在线观看| 91精品免费观看| 欧美少妇xxx| 欧洲日韩一区二区三区| 91网站黄www| www..com久久爱| 成人免费av在线| 成人在线综合网| 国产二区国产一区在线观看| 久久国产生活片100| 麻豆精品视频在线观看免费| 丝袜诱惑制服诱惑色一区在线观看| 亚洲一二三区不卡| 亚洲一二三四区| 亚洲第一久久影院| 午夜欧美电影在线观看| 亚洲一区二区三区四区中文字幕| 一区二区在线观看视频在线观看| 亚洲丝袜精品丝袜在线| 亚洲欧美日韩一区二区| 一区二区三区欧美亚洲| 一区二区在线观看免费| 亚洲午夜精品在线| 亚洲成av人片在线观看| 日韩精品高清不卡| 久久av老司机精品网站导航| 激情综合网天天干| 国产成人自拍高清视频在线免费播放| 国产v综合v亚洲欧| 99麻豆久久久国产精品免费优播| 91在线精品一区二区| 一本一道波多野结衣一区二区| 欧美在线一区二区三区| 欧美日韩黄色一区二区| 日韩欧美一二三四区| 国产欧美日韩视频在线观看| 国产精品网曝门| 一区二区三区丝袜| 视频一区免费在线观看| 激情欧美一区二区| 成人av资源网站| 欧美日韩精品免费观看视频| 精品国产免费人成电影在线观看四季| 久久夜色精品国产欧美乱极品| 国产精品青草久久| 亚洲高清一区二区三区| 精品一区二区三区久久| 97se亚洲国产综合自在线观| 欧美日韩一区二区在线观看| 日韩欧美精品在线| 国产精品福利一区二区| 视频在线在亚洲| 国产精品香蕉一区二区三区| 色综合久久天天| 日韩欧美资源站| 最新久久zyz资源站| 亚洲高清视频中文字幕| 国产一区二区三区在线观看免费| 99久久亚洲一区二区三区青草| 欧美色电影在线| 久久久国际精品| 亚洲成a人在线观看| 国产成人精品网址| 欧美日韩一区在线| 国产精品三级视频| 天堂va蜜桃一区二区三区漫画版| 国产91丝袜在线18| 欧美丰满嫩嫩电影| 国产精品久久久久影视| 青椒成人免费视频| 色综合久久综合网| 2024国产精品| 亚洲国产精品久久久久秋霞影院| 国产不卡免费视频| 日韩欧美精品三级| 亚洲超碰精品一区二区| 成人毛片在线观看| 精品区一区二区| 亚洲福利一区二区| av激情成人网| 国产午夜亚洲精品理论片色戒| 亚洲国产一区视频| 成人avav影音| 精品粉嫩aⅴ一区二区三区四区| 亚洲色图一区二区三区| 国产一区啦啦啦在线观看| 欧美猛男gaygay网站| 中文字幕一区二区三区色视频| 久久国产婷婷国产香蕉| 欧美精选一区二区| 一区二区三区**美女毛片| 成人美女视频在线看| 欧美精品一区二区三区久久久| 亚洲r级在线视频| 色香蕉成人二区免费| 国产精品人妖ts系列视频| 国产一区二区三区国产| 日韩欧美综合一区| 免费成人你懂的| 欧美日本韩国一区二区三区视频| 亚洲另类中文字| 99久久精品久久久久久清纯| 欧美激情一区二区| 国产做a爰片久久毛片 | 日韩一区二区精品在线观看| 一区二区在线观看视频| 97久久超碰国产精品电影| 亚洲国产精品黑人久久久| 国产精品一卡二| 国产亚洲欧美一区在线观看| 国产在线精品不卡| 久久色.com| 国产精品一区在线| 国产日韩精品一区| 成人污视频在线观看| 中文成人综合网| eeuss鲁片一区二区三区| 国产精品日日摸夜夜摸av| 不卡大黄网站免费看| 亚洲视频一二区| 在线看日本不卡| 亚洲成人av中文| 欧美日韩成人一区二区| 日韩精品成人一区二区三区| 91精品久久久久久蜜臀| 蜜臀久久99精品久久久久宅男 | 国产sm精品调教视频网站| 国产精品人妖ts系列视频| 99在线精品一区二区三区| 亚洲男人天堂av网| 欧洲中文字幕精品| 日韩国产在线观看| 欧美精品一区二区不卡| 国产999精品久久久久久绿帽| 国产精品美女一区二区三区| 91麻豆福利精品推荐| 亚洲综合图片区| 欧美精品久久99久久在免费线| 毛片一区二区三区| 日本一区二区三级电影在线观看 | av一区二区不卡| 亚洲美女电影在线| 欧美高清精品3d| 国产美女av一区二区三区| 《视频一区视频二区| 欧美猛男gaygay网站| 国产精品12区| 亚洲最新在线观看| 精品国产凹凸成av人网站| 91免费视频观看| 日本午夜一区二区| 国产精品免费av| 91精品国产综合久久久久| 国产福利91精品一区二区三区| 亚洲色图视频网站| 日韩欧美中文字幕制服| 99精品欧美一区二区蜜桃免费| 日韩av在线免费观看不卡| 中文字幕欧美激情一区| 欧美日本国产视频| 99在线热播精品免费| 奇米影视在线99精品| 国产精品欧美综合在线| 91精品欧美福利在线观看| 成人爱爱电影网址| 免费人成网站在线观看欧美高清| 国产精品乱码一区二区三区软件 | 久久精品一二三| 欧美色爱综合网| 国产成人av自拍| 日韩电影在线一区二区| 中文成人综合网| 欧美一级xxx| 91激情五月电影| 国产精品99精品久久免费| 午夜a成v人精品| 亚洲人123区| 国产欧美日韩卡一| 日韩欧美一级特黄在线播放| 欧美专区在线观看一区| 成人午夜短视频| 国产做a爰片久久毛片| 无码av免费一区二区三区试看 | 欧美va在线播放|