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

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

?? dsa.c

?? 車機程序PIN-TDA7386+PT2313+51MCU
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
** FILE
** dsa.c
**
** DESCRIPTION
** control DSA interface.
**
*/
///////////////////////////////////////////////////
#include "global.h"
#include "timer.h"
#include "I2C.h"
#ifdef SUPPORT_AUDIO
#include "teavol.h"
#endif
#include "LCD.h"
#ifdef SUPPORT_IR
#include "ir.h"
#endif
#include "key.h"
#include "keyproc.h"
#ifdef SUPPORT_TV
#include "tv.h"
#include "typedef.h"
#include "at1819_osd.h"
#endif


#if defined(MODE_V3)
extern BYTE data gbDispTimer1;
extern BYTE data CloseWaiting;
extern BIT bOpenwaiting;

extern BYTE data gbCDResetTimer;
//=========================
#endif

#define DSA_T250MS		TIMER_250ms


#define SetDSA_DAT(x) 	DSA_DAT = x
#define SetDSA_ACK(x) 	DSA_ACK = x
#define SetDSA_STB(x) 	DSA_STB = x

#define GetDSA_DAT() 	(DSA_DAT)
#define GetDSA_ACK() 	(DSA_ACK)
#define GetDSA_STB() 	(DSA_STB)

#define SetDAT_READ() 	DSA_DAT = 1
#define SetACK_READ() 	DSA_ACK = 1
#define SetSTB_READ() 	DSA_STB = 1


BYTE data gbDSATimer = 0;
BIT bCDPlayState = 0;
//BIT FLAG=0;
//=====modify===============
//	4 - 29 - v1
//	cd-mp3 display bug
//========================
BIT bClear=0,bOpenClose ;
BYTE gbDiscState;
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//

#define	DSA_CMD_BUF_SIZE		10

BYTE 	MuteEn=0;
BIT	bMuteFreeze=0;
BIT	bMuteOff=0;
//=========================
//=====modify==============
//	6 - 21 - v1
//	dsp reset
//=========================
BIT	bOldState=0;
BIT bCheckUp=0;
//=========================
//=====modify==============
//	6 - 23 - v1
//	dsp reset
//=========================
BIT	bCDReset;
BIT	bCDResetAct;


#ifdef	SUPPORT_DSA_RESET
extern BYTE	gbDsaReset;
BIT		bDsafirst;
#endif
//==========================

BYTE gbNeedOpen=0;
BIT dsa_send_flag = 0;
BIT dsa_receive_flag = 0;
static BYTE data dsa_mode = 0;	
static UINT16 data dsa_in_data;
static UINT16 data dsa_out_data = 0;
static BYTE idata dsa_send_data_head, dsa_send_data_tail;
static UINT16 idata dsa_send_data[DSA_CMD_BUF_SIZE];

#define DSA_IDLE                	0
#define DSA_R_SYNC              	1
#define DSA_R_SYNC_WAIT        		2
#define DSA_R_READ              	3
#define DSA_R_WAIT              	4
#define DSA_R_ACK               	5
#define DSA_R_END               	6
#define DSA_R_END_ALL            	7
#define DSA_T_SYNC              	8
#define DSA_T_SYNC_WAIT        		9
#define DSA_T_SEND              	10
#define DSA_T_WAIT              	11
#define DSA_T_ACK               	12
#define DSA_T_END               	13
#define DSA_T_END_ALL             14

Uint16 tmp=0;
void write_data_to_dsabuf(Uint16 vaule)
{
	
#ifdef SIMULATE_232
RS232_WriteStr("s=");
RS232_WriteHex81((BYTE)(vaule>>8));
RS232_WriteHex81((BYTE)(vaule&0x00ff));
#endif
	dsa_send_data[dsa_send_data_tail] = vaule;
	dsa_send_data_tail++;
	if(dsa_send_data_tail >= DSA_CMD_BUF_SIZE)
		dsa_send_data_tail = 0;
}

static void Dsa_Rcom(void)
{
  	if((dsa_send_flag == 0) && (dsa_send_data_head != dsa_send_data_tail)){
  	   dsa_out_data = dsa_send_data[dsa_send_data_head];
  	   dsa_send_flag = 1;
  	   dsa_send_data_head++;
  	   if(dsa_send_data_head >= DSA_CMD_BUF_SIZE)
  	   	  dsa_send_data_head = 0;
  	}
}

static void Dsa_Process(void)
{
	static BYTE nCounter;

	switch(dsa_mode){
		case DSA_IDLE:	// reset dsa to idle mode; detect send or receive
			gbDSATimer = DSA_T250MS;
			if(!GetDSA_DAT()){
				dsa_mode = DSA_R_SYNC;
				SetDSA_ACK(0);
				nCounter = 0;
			}else if(dsa_send_flag){
  /*  if((dsa_out_data&0xff00)==0xd200){
	//	LCD_Debug_Key(dsa_out_data);
	//	LCD_Debug_Key(dsa_send_data_tail);
		//gbDispTimer1=TIMER_1s;
		//while(gbDispTimer1);
		tmp=dsa_out_data;
    	}*/	
				SetDSA_DAT(0);
				dsa_mode = DSA_T_SYNC;
				nCounter = 0;
			}
			else Dsa_Rcom();
			break;

		case DSA_T_SYNC:
			if(!GetDSA_ACK()){
				SetDSA_DAT(1);
				dsa_mode = DSA_T_SYNC_WAIT;
			}
			break;
		case DSA_T_SYNC_WAIT:	
			if(GetDSA_ACK()){
				dsa_mode = DSA_T_SEND;
			}
			break;
		case DSA_T_SEND:
			if(dsa_out_data & (1 << (15 - nCounter))) SetDSA_DAT(1);
			else SetDSA_DAT(0);
			SetDSA_STB(0);
			dsa_mode = DSA_T_WAIT;
			break;
		case DSA_T_WAIT:
			if(!GetDSA_ACK())
			{
				SetDSA_STB(1);
				dsa_mode = DSA_T_ACK;	
			}
			break;
		case DSA_T_ACK:
			if(GetDSA_ACK())
			{
				if(nCounter == 15)
				{
					SetSTB_READ();
					SetDAT_READ();
					SetDSA_ACK(0);
					dsa_mode = DSA_T_END;	
				} else {
					nCounter++; 
					dsa_mode = DSA_T_SEND;
				}
			}
			break;
		case DSA_T_END:
			if(!GetDSA_STB())
			{
				BIT bRCVResponse = GetDSA_DAT();
				SetDSA_ACK(1);
				dsa_mode = DSA_T_END_ALL;
				if(bRCVResponse)
				{
					dsa_send_flag = 0;
				}
			}
			break;
		case DSA_T_END_ALL:
			if(GetDSA_STB())
			{
				SetDAT_READ();
				SetACK_READ();
				SetSTB_READ();
				dsa_mode = DSA_IDLE;	
				
			}
			break;

		case DSA_R_SYNC:
			if(GetDSA_DAT())
			{
				SetSTB_READ();
				SetDSA_ACK(1);
				dsa_in_data = 0;
				dsa_mode = DSA_R_READ;
			}
			break;
		case DSA_R_READ:
			if(!GetDSA_STB()) 
			{
				dsa_in_data |= GetDSA_DAT();
				SetDSA_ACK(0);
				dsa_mode = DSA_R_WAIT;
			}
			break;
		case DSA_R_WAIT:
			if(GetDSA_STB()){
				SetDSA_ACK(1);
				dsa_mode=DSA_R_ACK;	
			}
			break;
		case DSA_R_ACK:
			if(nCounter == 15)
			{
				SetACK_READ();
				SetDSA_DAT(1);
				dsa_mode = DSA_R_END;	
			} else {
				nCounter++;
				dsa_in_data <<= 1;
				dsa_mode = DSA_R_READ;
			}
			break;
		case DSA_R_END:
			if(!GetDSA_ACK())
			{
				SetDSA_DAT(1);
				SetDSA_STB(0);
				dsa_mode = DSA_R_END_ALL;
			}
			break;
		case DSA_R_END_ALL:
			if(GetDSA_ACK())
			{
				SetDAT_READ();
				SetACK_READ();
				SetSTB_READ();
				dsa_mode = DSA_IDLE;
				dsa_receive_flag = 1;
			}
			break;

		default:
			gbDSATimer = 0;
			dsa_mode = DSA_IDLE;
			break;
	}

	if(!gbDSATimer)
	{
		SetDAT_READ();
		SetACK_READ();
		SetSTB_READ();
		dsa_mode = DSA_IDLE;
		dsa_send_flag = 0;
		dsa_receive_flag=0;
	}
}	

static void VCD_key_server()
{
	Uint8 curkey;

	curkey = SYS_get_key();
	if(gbOsdTimer&0x80){
        gbOsdTimer=0;
		if(gbSysState.Sub==TV_NORMAL_STATE)OsdClear();
	  }

	#ifdef SIMULATE_232
	if(curkey&0x3f) send_asc(" key=", curkey);
	#endif
	
	#ifdef SUPPORT_MUTE_RELEASE
	if(bMuteFreeze){
		if(((curkey & 0x3f)!=KEY_SOURCE)&&((curkey & 0x3f)!=KEY_MUTE)\
			&&((curkey & 0x3f)!=KEY_VOL_UP)&&((curkey & 0x3f)!=KEY_VOL_DOWN)\
			&&((curkey & 0x3f)!=KEY_POWER))
			return;
		}		
	#else
	if(bMuteFreeze){
		if(((curkey & 0x1f)!=KEY_SOURCE)&&((curkey & 0x1f)!=KEY_MUTE)\
			&&((curkey & 0x1f)!=KEY_POWER))
			return;
		}		
	#endif

	//=========================


	if((curkey != KEY_NONE) &&
		((curkey & 0x3f) <= VCD_KEY_MAX))
	{
		#if 1
		#if defined(MODE_V3)
		if(gbDispTimer1 != 0){
#ifdef INTECH_BD325
			if(((curkey & 0x3f) != KEY_VOL_UP)
				&& ((curkey & 0x3f) != KEY_VOL_DOWN) && ((curkey & 0x3f) != KEY_EQ) \
				&& ((curkey & 0x1f) != KEY_SLEEP))
#else
			if(((curkey & 0x3f) != KEY_VOL_UP) && ((curkey & 0x3f) != KEY_VOL_DOWN) && ((curkey & 0x3f) != KEY_EQ) \
				&& ((curkey & 0x3f) != KEY_BASS) && ((curkey & 0x3f) != KEY_BASS_UP) \
				&& ((curkey & 0x3f) != KEY_BASS_DOWN) && ((curkey & 0x3f) != KEY_TREB_DOWN) && ((curkey & 0x3f) != KEY_TREB_UP) \
				&& ((curkey & 0x1f) != KEY_SLEEP))
#endif
		
//=========================				

			{
				gbDispTimer1 = 0;
				bDispRefresh = 1;
			}
			}
		
#ifdef INTECH_BD325
			if(((curkey & 0x3f)== KEY_VOL_UP)||((curkey & 0x3f)== KEY_VOL_DOWN)\
			||((curkey & 0x3f)== KEY_EQ)||((curkey & 0x3f)== KEY_SLEEP)\
			||((curkey & 0x3f)== KEY_MUTE))
#else
			if(((curkey & 0x3f)== KEY_VOL_UP)||((curkey & 0x3f)== KEY_VOL_DOWN)\
			||((curkey & 0x3f)== KEY_BASS_UP)||((curkey & 0x3f)== KEY_BASS_DOWN)\
			||((curkey & 0x3f)== KEY_EQ)||((curkey & 0x3f)== KEY_SLEEP)\
			)
#endif	

			{
		
			}	
            else
			{
			bClear=0;
			if(gbDispTimer1)
				{
				gbDispTimer1=0;
				bDispRefresh=1;
				}		
		}
		
		#endif
		#endif				
		if((curkey&0x3f)!=KEY_NONE&&(curkey&0x3f)!=KEY_TIMER_SET){	
				if(gbKeyFlag) write_data_to_dsabuf(0xc100 + curkey - 1);
				else write_data_to_dsabuf(0xc000 + curkey - 1);
				}

		//==========================
	}
	ProcessNormalKey(curkey);


	if(curkey == KEY_SOURCE){
		#if defined(SUPPORT_TV)
		GetSysState(STATE_TV);
		
		#endif
	}

}


#if (LCD_DEVICE == LCD_PD16311) || defined(MODE_VCD132A) \
	|| defined(MODE_VCD367)

#if defined(MODE_VCD132A)
BYTE code DigitalMapTab[][2] = {
	{12,13},	{14,15},	{ 0, 1},	{ 2, 3},
	{ 4, 6},	{ 6, 8},	{ 8,10}
};
#elif defined(MODE_VCD367)
BYTE code DigitalMapTab[][2] = {
	{ 8, 9},	{ 9,10},	{10,11},	{14,14},
	{15,15},	{ 0, 1},	{ 1, 2},	{ 2, 3}
};
#else
BYTE code DigitalMapTab[][2] = {
	{ 0, 3},	{ 0, 3},	{ 0, 7},	{ 4, 7},
	{ 4, 7},	{ 8,11},	{ 8,11},	{ 8,15},
	{12,15}
};
#endif


#if defined(LCD_VCD1000)
#define IconMap_Max		15
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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费在线看| 欧美视频精品在线| 91亚洲精品久久久蜜桃网站| 欧美在线观看视频一区二区| 日韩欧美国产一区二区三区| 国产亚洲精品超碰| 亚洲精品五月天| 日韩在线观看一区二区| 国产成人免费9x9x人网站视频| 国产91综合网| 欧美日韩一卡二卡| 精品黑人一区二区三区久久| 久久久久久久综合狠狠综合| 亚洲一级二级三级| 欧美日本在线视频| 午夜电影一区二区三区| 日本视频免费一区| 精品99999| 99久久亚洲一区二区三区青草| 精品国产伦一区二区三区观看方式| 日本一区二区免费在线| 麻豆精品久久精品色综合| 色8久久精品久久久久久蜜| 国产精品国产三级国产普通话蜜臀 | 精品奇米国产一区二区三区| 亚洲欧美影音先锋| 岛国一区二区在线观看| 欧美一区二区三区日韩视频| 亚洲成人一二三| 欧美探花视频资源| 亚洲欧美国产三级| 国产曰批免费观看久久久| 欧美zozozo| 国产精品1区二区.| 国产欧美日韩久久| 国产九色sp调教91| 国产亚洲综合在线| 国产精品99久久久久| 久久久精品蜜桃| 国产成人免费视频网站高清观看视频| 欧美一区二区三区四区高清| 亚洲午夜免费福利视频| 欧美日韩高清一区二区三区| 亚洲国产日日夜夜| 日韩视频在线永久播放| 裸体在线国模精品偷拍| 国产日产欧美一区| 色哦色哦哦色天天综合| 99久久99精品久久久久久| 亚洲婷婷在线视频| 欧美精品一区二区三区很污很色的 | 国产sm精品调教视频网站| 国产精品久久国产精麻豆99网站| 欧美影院午夜播放| 成人一区二区三区视频在线观看 | 国产成人自拍高清视频在线免费播放| 国产精品午夜久久| 日韩欧美另类在线| 欧美喷水一区二区| 91视频观看免费| 亚洲色图丝袜美腿| 欧美私人免费视频| 丁香五精品蜜臀久久久久99网站| 亚洲欧美另类图片小说| 久久女同精品一区二区| 亚洲精品在线观看网站| 精品一区二区三区视频| 亚洲成人7777| 一区二区三区在线视频观看| 国产午夜亚洲精品不卡| 欧美一卡2卡3卡4卡| 91麻豆精东视频| 一本到三区不卡视频| 欧美日韩一区精品| 一本一道久久a久久精品综合蜜臀| 九一九一国产精品| 美女免费视频一区| 99精品欧美一区二区蜜桃免费| 99久久精品国产导航| 99国产精品久久久久| 色狠狠色狠狠综合| 在线精品国精品国产尤物884a| 91色.com| 91精品久久久久久蜜臀| 日韩一级高清毛片| 日韩国产欧美在线播放| 夜夜亚洲天天久久| 天天操天天综合网| 国产在线麻豆精品观看| 成人一区二区视频| 色婷婷av一区二区三区之一色屋| 欧美在线观看视频一区二区三区| 欧美一区2区视频在线观看| 欧美草草影院在线视频| 欧美高清在线一区| 亚洲成人一区在线| 国产乱码精品1区2区3区| 成人午夜激情在线| 欧美一级片免费看| 中文字幕欧美三区| 亚洲大片精品永久免费| 韩日欧美一区二区三区| 色综合激情久久| 欧美国产日韩精品免费观看| 亚洲综合激情另类小说区| 国产综合色视频| 日本精品免费观看高清观看| 精品日韩一区二区三区免费视频| 亚洲欧美中日韩| 国产一区二区不卡在线| 欧美一级生活片| 亚洲一区在线视频观看| 99视频一区二区| 亚洲国产精品国自产拍av| 免费久久99精品国产| 欧美日韩色一区| 亚洲色图一区二区| 99久久婷婷国产精品综合| 久久久久9999亚洲精品| 免费人成在线不卡| 欧美日韩一区成人| 亚洲高清免费在线| 欧美三级三级三级| 亚洲va在线va天堂| 91精品国产色综合久久不卡电影 | 成人网页在线观看| 国产精品国产a| 成人免费视频国产在线观看| 国产精品视频线看| 国产高清不卡一区| 中文字幕中文在线不卡住| 成人亚洲一区二区一| 亚洲乱码日产精品bd| 91麻豆精品久久久久蜜臀| 国模无码大尺度一区二区三区| 欧美大片一区二区| 成熟亚洲日本毛茸茸凸凹| 亚洲少妇中出一区| 欧美精品在线观看一区二区| 全国精品久久少妇| 国产欧美日韩在线| 欧美色爱综合网| 国产一区二区视频在线| 亚洲色图19p| 久久女同互慰一区二区三区| 欧美亚洲日本国产| 国产一区二区导航在线播放| 一区二区三区四区精品在线视频| 日韩一区二区三区观看| 91麻豆成人久久精品二区三区| 午夜精品久久久久久久久| 国产亚洲女人久久久久毛片| 欧美日韩mp4| caoporen国产精品视频| 免费观看在线色综合| 亚洲午夜在线观看视频在线| 日本一区二区三区视频视频| 欧美一级高清大全免费观看| 在线观看日韩一区| av成人老司机| av一区二区三区在线| 国产电影精品久久禁18| 久国产精品韩国三级视频| 日韩电影在线看| 青青草国产成人av片免费| 亚洲亚洲精品在线观看| 夜夜精品浪潮av一区二区三区| 亚洲视频资源在线| 一区二区三区四区精品在线视频| 亚洲免费看黄网站| 亚洲一区二区三区中文字幕在线 | www.日本不卡| 一本色道久久综合狠狠躁的推荐 | 亚洲色欲色欲www在线观看| 成人免费一区二区三区视频 | 一本色道a无线码一区v| 91色porny在线视频| 精品视频色一区| 欧美日韩国产在线播放网站| 精品视频1区2区3区| 日韩欧美国产wwwww| 中文字幕不卡在线| 一区二区三区四区激情| 天堂一区二区在线| 成人中文字幕电影| 欧美高清激情brazzers| 欧美精品一区二区三区高清aⅴ| 久久久久国产精品厨房| 综合婷婷亚洲小说| 日韩一区精品视频| 成人动漫av在线| 在线播放91灌醉迷j高跟美女 | 欧美日韩精品高清| 久久一区二区三区四区| 亚洲综合图片区| 国产精品影视在线观看| 欧美高清视频在线高清观看mv色露露十八 | 性欧美大战久久久久久久久| 国产suv精品一区二区6| 欧美一级生活片|