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

📄 dsa.c

📁 Sunplus 8202D consult with the MCU communications
💻 C
📖 第 1 页 / 共 2 页
字号:
};
#elif defined(MODE_VCD132A)
#define IconMap_Max		16
UINT16 code IconMapTab[] = {
	LCD_SEG_PLAY,	LCD_SEG_PAUSE,	LCD_SEG_ALBUME,
	LCD_SEG_INTRO,	LCD_SEG_RDM,	LCD_SEG_PGM,
	LCD_SEG_REPEAT,	LCD_SEG_REP1,	LCD_SEG_CD,
	LCD_SEG_WMA,	LCD_SEG_MP3,	LCD_SEG_USB,
	LCD_SEG_AUX,	LCD_SEG_IN,		LCD_SEG_MIC,
	LCD_SEG_COL
};
#elif defined(MODE_VCD367)
#define IconMap_Max		20
UINT16 code IconMapTab[] = {
	LCD_SEG_PLAY,	LCD_SEG_PAUSE,	LCD_SEG_ALBUME,
	LCD_SEG_INTRO,	LCD_SEG_RDM,	LCD_SEG_PGM,
	LCD_SEG_REPEAT,	LCD_SEG_REP1,	LCD_SEG_CD,
	LCD_SEG_WMA,	LCD_SEG_MP3,	LCD_SEG_ALL,
	LCD_SEG_DISC,	LCD_SEG_REPS1,	LCD_SEG_REPS2,
	LCD_SEG_WMAS,	LCD_SEG_TRACK,	LCD_SEG_TOTAL,
	LCD_SEG_REMAIN,	LCD_SEG_COL
};
#elif defined (VFD_INTECHBD326)

UINT16 code IconMapTab[] = {
LCD_SEG_DISC1,LCD_SEG_DISC1S,
LCD_SEG_DISC2,LCD_SEG_DISC2S,
LCD_SEG_DISC3,LCD_SEG_DISC3S,
LCD_SEG_DISC4,LCD_SEG_DISC4S,
LCD_SEG_DISC5,LCD_SEG_DISC5S,     
LCD_SEG_DOT,LCD_SEG_DOT1,
LCD_SEG_COL
};

#define IconMap_Max		sizeof (IconMapTab)/2
#else
#define IconMap_Max		16
UINT16 code IconMapTab[] = {
	LCD_SEG_REP1,	LCD_SEG_ALL,	LCD_SEG_DIR,
	LCD_SEG_INTRO,	LCD_SEG_RDM,	LCD_SEG_PGM,
	LCD_SEG_COL,	LCD_SEG_ESP1,	LCD_SEG_MP3,
	LCD_SEG_CD,		LCD_SEG_ESP2,	LCD_SEG_ESP3,
	LCD_SEG_ESP4,	LCD_SEG_ESP0,	LCD_SEG_VCD,
	LCD_SEG_REPEAT
};
#endif

#endif


//==========================
//	dsp reset without dsa 1s
//	11 -14 -v1
//==========================
#ifdef SUPPORT_DSA_RESET
void	CheckDsa()
{
	if(bDsafirst)
		{
		if(!gbDsaReset)
			{
			CD_RESET=0;
			gbSystemTimer = TIMER_50ms;
			while(gbSystemTimer);
			CD_RESET=1;
			gbDsaReset=TIMER_1s;
			}
		}
}
#endif
//==========================

void VCD_state(void)
{
	BYTE i;
	BYTE tempdsa[2];
	
	BIT bMuteOld=0;
	
	TV_POWER_OFF;
	SetDAT_READ();
	SetACK_READ();
	SetSTB_READ();
	CD_POWER_ON;
	SetDAT_READ();
	SetACK_READ();
	SetSTB_READ();
	
	AUDIO_HMUTE = AUDIO_MUTE;
	gbSystemTimer = TIMER_50ms;
	while(gbSystemTimer);	
	//=========================
	PowerOnOff(1);

	VideoSwitch(1);
	#if defined(MODE_VCD802) || defined(MODE_VCD1000) || defined(MODE_VCD132A) || defined(MODE_V3)
	CD_RESET = 1;
	#endif

	#ifdef SUPPORT_AUDIO

	stAudio.channel = AUDIO_IN5;

	Send_Audio_CH(stAudio.channel);
	#endif

	SetDAT_READ();
	SetACK_READ();
	SetSTB_READ();
	dsa_mode = DSA_IDLE;
	dsa_receive_flag = 0;
	dsa_send_flag = 0;
	dsa_send_data_head = dsa_send_data_tail = 0;
	bCDPlayState = 1;
	bDispMode = 0;
	gbDispTimer = 0;
	gbDeMuteTimer = TIMER_5s;





      OsdShowSource(STATE_VCD);
	//  while(1);
	#if defined(MODE_V3)
	gbDispTimer1 = 0;
	#endif
	

#ifdef	SUPPORT_DSA_RESET
	gbDsaReset=TIMER_2s;
	bDsafirst=1;
#endif

	bMuteFreeze=0;
	MuteEn=0;
	bMuteOff=0;

	bCDReset=0;
	bCDResetAct=0;
	bOldState=0;
	   gbDispTimer=0;
	   gbDispTimer1=0;
	   bDispRefresh=0;
	   bClear=0;	   	
	AUDIO_SWITCH(0);

gbOsdTimer=TIMER_5s;

	while(1){

		#ifdef SUPPORT_DSA_RESET
		CheckDsa();
		#endif

		

		if(gbDeMuteTimer & 0x80)
		{
			Audio_Mute(0);
			gbDeMuteTimer = 0;
		}

		VCD_key_server();

		
		
		if(gbSysState.Main != STATE_VCD){
                     break;
                        	}	
		Dsa_Process();
		if (dsa_mode != DSA_T_SYNC) {
			while(dsa_mode != DSA_IDLE) Dsa_Process();
		}
		
		if(gbSysState.Main != STATE_VCD) dsa_receive_flag=0;

		if(dsa_receive_flag)
		{

		#ifdef SUPPORT_DSA_RESET
			bDsafirst=0;
			gbDsaReset=0;
		#endif
			//==========================
			tempdsa[0] = LOBYTE(dsa_in_data);
			tempdsa[1] = HIBYTE(dsa_in_data);
			#if (LCD_DEVICE == LCD_PD16311)
			if(tempdsa[1] == 0x83)
			{
				if(!tempdsa[0])
				{
					for(i = 0; i < IconMap_Max; i++)
						LCD_ShowSeg(0, IconMapTab[i]);
				} else {
					i = (tempdsa[0] & 0x3f) - 1;
					if(i < IconMap_Max)
						LCD_ShowSeg(1 - (tempdsa[0] >> 7), IconMapTab[i]);			
					if(IconMapTab[i] == LCD_SEG_CD)
						MuteEn=0x01;
					else if(IconMapTab[i] == LCD_SEG_MP3)
						MuteEn=0x02;
				}
			}
			else if(tempdsa[1] == 0x82)
			{
				if(tempdsa[0] < 3)
				{
					LCD_ClearBlink(LCD_BLINK_MSG);
					gbMsgPtr = 0;
					bDispMode = 0;
				}
				if(!tempdsa[0]) LCD_ShowChar(LCD_ALL_SPACE);
				else if(tempdsa[0] == 2) bDispMode = 1;
				else if(tempdsa[0] == 1) bDispMode = 0;
			}
			else if(tempdsa[1] == 0x81)
			{
				if(!tempdsa[0])
				{
					for(i = 0; i < 9; i++)
						LCD_PrintDigital(i, LCD_SPACE);
					 LCD_WriteData(0x40,MAX_LCD_BUF_NUM);
					LCD_ShowSeg(0, LCD_SEG_COL);
				}
			}
			else if(tempdsa[1] == 0x80)
			{
				gbLCDMsg[0] = tempdsa[0];
				gbLCDMsg[tempdsa[0] + 1] = 0;
			}
			else if(tempdsa[1] == 0xc8)
			{
				if(tempdsa[0] < 2) bCDPlayState = tempdsa[0];
				#ifdef SUPPORT_POWER_OFF
				else if(tempdsa[0] == 0xff) POWER_OFF = 0;
				#endif
			}else if((tempdsa[1] >= 0x90) && (tempdsa[1] <= 0xb7)){
				i = tempdsa[1] - 0x90 + 1;
				gbLCDMsg[i] = tempdsa[0];
				if(!LCD_IsShowMsg() && (i >= gbLCDMsg[0])){
            LCD_ShowMsg(&gbLCDMsg[1], 1);
				}

			}else if((tempdsa[1] >= 0x84) && (tempdsa[1] <= 0x8f)){
					i=tempdsa[1]-0x84;
				if((tempdsa[0] >= '0') && (tempdsa[0] <= '9'))
					tempdsa[0] -= '0';
				else if((tempdsa[0] >= 'A') && (tempdsa[0] <= 'Z'))
					tempdsa[0] -= ('A' - 10);
				else if(tempdsa[0] == ' ') tempdsa[0] = LCD_SPACE;
				else if(tempdsa[0] == '-') tempdsa[0] = LCD_DASH;
				else if(tempdsa[0] == 'o') tempdsa[0] = LCD_o;
				else tempdsa[0] = LCD_SPACE;
				LCD_PrintDigital(i, tempdsa[0]);
				 LCD_WriteData(0x40,MAX_LCD_BUF_NUM);

			}

			else if(tempdsa[1] == 0x01){
				if(!tempdsa[0]){
					ClearIdleTimer1();
					}			
			}
			else if(tempdsa[1] == 0x02){
				if(!tempdsa[0]){
					SetIdleTimer1(SYS_1min);
					}			
			}			

			
			#endif
/*-----------------------------------------------------*/

			dsa_receive_flag = 0;
		}

		if(bDispRefresh&&gbSysState.Main==STATE_VCD)
		{
		#ifndef SUPPORT_MULTIDISC
			if(LOADER){
				LCD_Reset(0);
				LCD_ShowString("OPEN",0);				
				bDispRefresh=0;
				continue;
				}
		#endif	
			#ifdef SUPPORT_MULTIDISC
			gwLCDBlinkFlag &= LCD_BLINK_DISC;
			#else
			gwLCDBlinkFlag = 0;
			#endif
			#ifdef SUPPORT_IR
			gbNumber = 0;
			#endif
			#ifdef SUPPORT_CLOCK
			ClockSetRefresh();
			#endif
			

                   write_data_to_dsabuf(0xab00);
			#if (LCD_DEVICE == LCD_PD16311)
			#if defined(MODE_VCD1000) || defined(MODE_V3)
			if(bClear){	
				#if 0
				LCD_ShowString(mbTmpBuf, 0);
				LCD_ShowString(&gbLCDMsg[1],0);
				bClear=0;
				gbMsgPtr = 0;
				bShiftEnd = 1;
				if(gbSysState.Main == STATE_VCD)
					write_data_to_dsabuf(0xc0f0);
                          #endif
				bClear=0;
				gbMsgPtr = 0;
				bShiftEnd = 1;
				if(gbSysState.Main == STATE_VCD)
					write_data_to_dsabuf(0xc0f0);		  
				}
			if((bMuteOff)&&(!gbDispTimer)){
			}		
			#endif
			#else
			#if defined(MODE_VCD367)
			LCD_ShowSeg(bCol, LCD_SEG_COL);
			for(i = 0; i < 8; i++) LCD_PrintDigital(i, mbTmpBuf[i]);
			for(i = 0; i < MAX_LCD_BUF_NUM; i++) LCD_WriteData(i,gpbLCDBuf[i]);
			#endif
			#endif

			bDispRefresh = 0;
		}
	}
}


#ifdef SUPPORT_LOADER_CONTROL
BYTE idata gbLoadState = 15;
BIT bOpenClose = 1;
BIT bOpenOK = 0;
BIT bCloseOK = 0;
void Polling_Loader(void)
{
	switch(gbLoadState)
	{
		case 10:  // open
			LOAD_OPEN = 1;
			#if defined(MODE_DVDH045)
			LOAD_CLOSE = 1;
			#else
			LOAD_CLOSE = 0;
			#endif
			bOpenOK = 0;
			bCloseOK = 0;
			gbLoadState++;
			break;
		case 11:
			#if defined(MODE_DVDH045)
			LOAD_CLOSE = 0;
			#endif
			#if defined(MODE_V3)
			
			if(!OPEN_LIMIT)
			#endif
			{
				LOAD_OPEN = 0;
				gbLoadState = 0;
				bOpenOK = 1;
				#if !defined(MODE_DVDH045) && !defined(MODE_V3)
				if(gbSysState.Main == STATE_VCD)
					write_data_to_dsabuf(0xd100);
				#endif
			}
			break;

		case 15:  // close
			#if defined(MODE_DVDH045)
			LOAD_OPEN = 1;
			#else
			LOAD_OPEN = 0;
			#endif
			LOAD_CLOSE = 1;
			bOpenOK = 0;
			bCloseOK = 0;
			gbLoadState++;
			break;
		case 16:
			#if defined(MODE_DVDH045)
			LOAD_OPEN = 0;
			#endif
			#if defined(MODE_V3)
			
			if(!CLOSE_LIMIT)
			#endif
			{
				LOAD_CLOSE = 0;
				gbLoadState = 0;
				bCloseOK = 1;
				#if !defined(MODE_DVDH045) && !defined(MODE_V3)
				if(gbSysState.Main == STATE_VCD)
					write_data_to_dsabuf(0xd100 + (((BYTE)bOpenClose) << 4));
				#endif
				#if defined(MODE_V3)
				if(CloseWaiting)
				{
					if(CloseWaiting == 1)
					{
						SetSysMainState(STATE_STANDBY);
					}
					else if (CloseWaiting == 2)
					{
						GetSysState(STATE_TUNER);
					}
					else if (CloseWaiting == 3)
					{
						GetSysState(STATE_AUX);
					}
					
					CloseWaiting = 0;
				}
				#endif
			}
			break;

		default:
			LOAD_OPEN = 0;
			LOAD_CLOSE = 0;
			gbLoadState = 0;
			break;
	}
}
#endif

⌨️ 快捷键说明

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