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

📄 tw2835.c

📁 TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KEIL C51 平台编译,
💻 C
字号:
//#include <stdlib.h>//#include <stdarg.h>//#include <string.h>#include	"hdr.h"//extern	void SetMainTst(void);//==================================================================================//==================================================================================void Main(void){	U8 _t1_=0;	U8 _t2_=0x1;	U8 _t3_=0;	U8 _dvc_, _ch_;	U16 _dly_;	//	InitPrt();	InitIsr();	InitVdo();	InitRstN();	InitPg0();	InitPg1();	InitPg2();//	InitReg();	SetOSDNoMn();	for(_t1_=0;_t1_<4;_t1_++){		SetChQd(PTH_X,MASTER,_t1_,_t1_);	}	WriteAsicByte(MASTER,DVC_PG1,0xa0,0x66);	WriteAsicByte(MASTER,DVC_PG1,0xa1,0x32);			//... 	WriteAsicByte(MASTER,DVC_PG1,0xa2,0x97);			//... 	WriteAsicByte(MASTER,DVC_PG1,0x05,0x04);			//... AUTO_ENHANCE=1#if defined(__WTH_VGA__)	MDIN180Init();#endif	EA = 1;		//... global interrupt		InitMse();	DLY_FOR(30000);	DLY_FOR(30000);//	DLY_FOR(30000);//	DLY_FOR(30000);//	DLY_FOR(30000);//	DLY_FOR(30000);//	DLY_FOR(30000);//	DLY_FOR(30000);//	DLY_FOR(30000);//	DLY_FOR(30000);		WriteMse(0xeb);//	EX1 = 1;		//... VSENC//	SetBit(T2MOD,BIT4);			//... clear interrupt flag(-> pending flag)//	ClearBit(EXIF,BIT4);			//... clear interrupt flag(-> pending flag)	EX2 = 1;		//... FLDENC//	SetBit(T2MOD,BIT5);			//... clear interrupt flag(-> pending flag)//	ClearBit(EXIF,BIT5);			//... clear interrupt flag(-> pending flag)	EX3 = 1;		//... FLDENC//	TR0 = 1;		//... start count for timer0//	ET0 = 1;		//... enable interrupt timer0	while(1)	{#if	defined(__4CH__)		if(wndw_ds_sc_fmt == SC_FMT_8CH){													//... psuedo 8 ch procedure			if(b_ds_wth_rc == OFF){				Run8ChFast();			}			else{//				if(b_rc_fm_type == FM_TYPE_CIF){				if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){					Run8ChCif();				}			}		}//		if(wndw_ds_sc_fmt == SC_FMT_8CH){//			if((b_rc_fm_type == FM_TYPE_MUX)&&(b_ds_wth_rc == ON)){//				Run8ChMux();//			}//		}#endif//... key0	..........................................................		if(b_key0_dwn == 1){			b_key0_dwn = 0;		}		if(b_key0_clk == 1){			b_key0_clk = 0;			b_mse_clk_lb = 1;						//if(_dly_<1)	_dly_++;//else	_dly_=0;//if(_dly_==0){//WriteI2CWord(I2C_ID_MDIN180, 0x4c0, 0x0001);//WriteI2CWord(I2C_ID_MDIN180, 0x4C4, 0x0001);	// local reg. update//}//else if(_dly_==1){//WriteI2CWord(I2C_ID_MDIN180, 0x4c2, 0x0010);//WriteI2CWord(I2C_ID_MDIN180, 0x4C4, 0x0001);	// local reg. update//}////else if(_dly_==2){////}////else if(_dly_==3){////}		}		if(b_key0_pshng_clk == 1){			b_key0_pshng_clk = 0;		}		//		if(b_key1_dwn == 1){//			b_key1_dwn = 0;//		}//		if(b_key1_clk == 1){//			b_key1_clk = 0;//////			b_mse_clk_rb = 1;//		}//		if(b_key1_pshng_clk == 1){//			b_key1_pshng_clk = 0;//		}//... count flag	..........................................................		if(b_cmn_cnt_1s == 1){			b_cmn_cnt_1s = 0;//			if(b_mse_stts_pth == MSE_PTH_X)//				WriteOSDFntY(MASTER,OSD_PTH_POS_X,OSD_PTH_POS_Y,0x00,'X'-0x20);		//... 060307:temporal//			else//				WriteOSDFntY(MASTER,OSD_PTH_POS_X,OSD_PTH_POS_Y,0x00,'Y'-0x20);		//... 060307:temporal#if	defined(__4CH__)			if(wndw_ds_sc_fmt == SC_FMT_8CH){				if((b_cmn_wndw_pop != ON)&&(b_cmn_wndw_mn != ON))	Run8ChOSDRtoNum();			}#endif		}		if(b_cmn_cnt_05s == 1){			b_cmn_cnt_05s = 0;		}		if(b_cmn_cnt_02s == 1){			b_cmn_cnt_02s = 0;						if(b_cmn_wndw_mn == ON){//				if(wndw_mn_pos_crnt == POP_POS_MTN_BD){//					for(_t1_=0;_t1_<cmn_max_ch;_t1_++)//						SetWndwMtnBdOSDDtBx(PTH_X,_t1_);//				}//				else if(wndw_mn_pos_crnt == POP_POS_MTN_ND){//					for(_t1_=0;_t1_<cmn_max_ch;_t1_++)//						SetWndwMtnNdOSDDtBx(PTH_X,_t1_);//				}				if((wndw_mn_pos_crnt == POP_POS_MTN_BD)||(wndw_mn_pos_crnt == POP_POS_MTN_ND)){					for(_t1_=0;_t1_<cmn_max_ch;_t1_++)						SetWndwMtnBdNdOSDDtBx(PTH_X,_t1_);				}			}		}		if(b_cmn_cnt_01s == 1){			b_cmn_cnt_01s = 0;		}		if(b_cmn_cnt_fld == 1){			b_cmn_cnt_fld = 0;#if	defined(__4CH__)			if(wndw_ds_sc_fmt == SC_FMT_8CH){//				if((b_rc_fm_type == FM_TYPE_MUX)&&(b_ds_wth_rc == ON)){				if((wndw_rc_fm_type > CIF_TYPE_FL)&&(b_ds_wth_rc == ON)){					Run8ChMux();				}			}#endif		}		if(b_cmn_dtct_vs == 1){			b_cmn_dtct_vs = 0;			SetMsePtr(reg_crsr_pos_x,reg_crsr_pos_y);						if(b_cmn_wndw_pop == ON){				RunPopProc();			}			else if(b_cmn_wndw_mn == ON){				if(b_mse_stts_pth_mn == b_mse_stts_pth){					_t1_ = wndw_mn_pos_crnt & 0x0f;					if(b_mse_stts_pth_mn == MSE_PTH_X){						if(_t1_ == POP_POS_DS){							if(wndw_mn_pos_crnt == POP_POS_DS_SC)		RunWndwDsSc(PTH_Y);//							else if(wndw_mn_pos_crnt == POP_POS_DS_PB)	RunWndwDsPb(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_DS_SR){#if defined(__4CH__)								if((wndw_ds_sc_fmt == SC_FMT_4CH)&&(b_ds_wth_4pb)){									//... no operation								}#elif defined(__16CH__)								if((wndw_ds_sc_fmt == SC_FMT_16CH)&&(b_ds_wth_16pb)){									//... no operation								}#endif								else	RunWndwDsSr(PTH_Y);							}							else if(wndw_mn_pos_crnt == POP_POS_DS_IN)	RunWndwDsIn(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_ZM)	RunWndwZm();						}//						else if(_t1_ == POP_POS_CH)	RunWndwCh(PTH_Y);//						else if(_t1_ == POP_POS_ZM)	RunWndwZm();						else if(_t1_ == POP_POS_MTN){							if(wndw_mn_pos_crnt == POP_POS_MTN_MD)			RunWndwMtnMd(PTH_Y);//							else if(wndw_mn_pos_crnt == POP_POS_MTN_BD)	RunWndwMtnBd(PTH_Y);//							else if(wndw_mn_pos_crnt == POP_POS_MTN_ND)	RunWndwMtnNd(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_MTN_BD)	RunWndwMtnBdNd(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_MTN_ND)	RunWndwMtnBdNd(PTH_Y);						}#if defined(__WTH_ADO__)						else if(_t1_ == POP_POS_ADO){							if(wndw_mn_pos_crnt == POP_POS_ADO_GN)			RunWndwAdoGn(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_ADO_LV)	RunWndwAdoLv(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_ADO_RC)	RunWndwAdoRc(PTH_Y);//							else if(wndw_mn_pos_crnt == POP_POS_ADO_DT)	RunWndwAdoDt(PTH_Y);						}#elif defined(__WTH_VGA__)//						else if(_t1_ == POP_POS_VGA){						else if((_t1_ == POP_POS_VGA)&&(cmn_vga_det)){							if(wndw_mn_pos_crnt == POP_POS_VGA_OR)			RunWndwVGAOr(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_VGA_DI)	RunWndwVGADi(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_VGA_IE)	RunWndwVGAIe(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_VGA_NR)	RunWndwVGANr(PTH_Y);						}#endif//						else if(_t1_ == POP_POS_RG)	RunWndwRg(PTH_Y);						else if(_t1_ == (POP_POS_RG+(cmn_vga_det)))	RunWndwRg(PTH_Y);//						else if(_t1_ == POP_POS_ABT)	;//RunWndwAbt(PTH_Y);					}					else{						if(_t1_ == POP_POS_RC){							if(wndw_mn_pos_crnt == POP_POS_RC_FM)			RunWndwRcFm(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_RC_IN)	RunWndwRcIn(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_RC_NR)	RunWndwRcNr(PTH_Y);						}#if defined(__WTH_ADO__)						else if(_t1_ == POP_POS_ADO){							if(wndw_mn_pos_crnt == POP_POS_ADO_GN)			RunWndwAdoGn(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_ADO_LV)	RunWndwAdoLv(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_ADO_RC)	RunWndwAdoRc(PTH_Y);//							else if(wndw_mn_pos_crnt == POP_POS_ADO_DT)	RunWndwAdoDt(PTH_Y);						}#elif defined(__WTH_VGA__)//						else if(_t1_ == POP_POS_VGA){						else if((_t1_ == POP_POS_VGA)&&(cmn_vga_det)){							if(wndw_mn_pos_crnt == POP_POS_VGA_OR)			RunWndwVGAOr(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_VGA_DI)	RunWndwVGADi(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_VGA_IE)	RunWndwVGAIe(PTH_Y);							else if(wndw_mn_pos_crnt == POP_POS_VGA_NR)	RunWndwVGANr(PTH_Y);						}#endif//						else if(_t1_ == POP_POS_RG)	RunWndwRg(PTH_Y);						else if(_t1_ == (POP_POS_RG+cmn_vga_det))	RunWndwRg(PTH_Y);//						else if(_t1_ == POP_POS_ABT)	;//RunWndwAbt(PTH_Y);					}				}			}			else{			//... mouse	button	........................................................................//				SetCrntDvcCh((mse_ch&0x0f),&wndw_crnt_dvc,&wndw_crnt_ch);					if(b_mse_btn_dwn_lb == 1){					b_mse_btn_dwn_lb = 0;		//				if(mse_ch != 0xff)	wndw_pop_crnt_ch = mse_ch&0x0f;				}				if(b_mse_clk_lb == 1){					b_mse_clk_lb = 0;	//					_t1_ = GetMseOSDX(reg_crsr_pos_x);//					_t2_ = GetMseOSDY(reg_crsr_pos_y);////					if((_t1_ == OSD_PTH_POS_X)&&(_t2_ == OSD_PTH_POS_Y)){////						b_mse_stts_pth ^= 1;////						if(b_mse_stts_pth == MSE_PTH_X){//							WriteAsicByte(MASTER,DVC_PG1,0xa0,0x66);//							WriteAsicByte(MASTER,DVC_PG1,0xa1,0x32);	//... s-video (x path)	//... 060705:temporal//							WriteAsicByte(MASTER,DVC_PG1,0xa2,0xd7);	//... cvbs (y path)//							WriteAsicByte(MASTER,DVC_PG1,0xa3,0x01);	//... 656 output////							WriteOSDFntY(MASTER,OSD_PTH_POS_X,OSD_PTH_POS_Y,0x00,'X'-0x20);		//... 060307:temporal//						}//						else{//							WriteAsicByte(MASTER,DVC_PG1,0xa0,0xbb);//							WriteAsicByte(MASTER,DVC_PG1,0xa1,0x76);   //... s-video (y path)	//... 060705:temporal   //							WriteAsicByte(MASTER,DVC_PG1,0xa2,0x97);	//... cvbs (x path)//							WriteAsicByte(MASTER,DVC_PG1,0xa3,0x10);	//... 656 output////							WriteOSDFntY(MASTER,OSD_PTH_POS_X,OSD_PTH_POS_Y,0x00,'Y'-0x20);		//... 060307:temporal//						}//					}					if((b_mse_stts_pth == MSE_PTH_X)&&						((wndw_ds_sc_fmt == SC_FMT_1CH)||((wndw_ds_sc_fmt == SC_FMT_4CH)&&(!b_ds_wth_4pb)))){//						if((mse_ch != 0xff)&&((mse_ch&0x0f) == wndw_pop_crnt_ch)){						if(mse_ch != 0xff){							if(mse_btn_pshng_cnt > MSE_BTN_DLY_CLK){								SetCrntDvcCh((mse_ch&0x0f),&_dvc_,&_ch_);								_t1_ = GetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT6);			//... POP_UP_EN								if(_t1_){									_t2_ = GetAsicFlgType(_dvc_,DVC_PG1,0x11+(_ch_<<3),BIT6);									if(_t2_){										SetAsicFlgType(_dvc_,DVC_PG1,0x0f,0xc0,0x80);					//... FRZ_FLD=2										SetAsicFlgType(_dvc_,DVC_PG1,0x11+(_ch_<<3),BIT6,0x00);		//... FRZ_CH=0									}									else{										SetAsicFlgType(_dvc_,DVC_PG1,0x0f,0xc0,0x40);					//... FRZ_FLD=1										SetAsicFlgType(_dvc_,DVC_PG1,0x11+(_ch_<<3),BIT6,BIT6);		//... FRZ_CH=1									}								}								else{//									SetBit(_t1_,BIT6);//									WriteAsicByte(_dvc_,DVC_PG1,0x10+(_ch_<<3),_t1_);//									//									for(_t2_=0;_t2_<cmn_max_ch;_t2_++){//										SetCrntDvcCh(_t2_,&_dvc_,&_ch_);//										if(_t2_ != (mse_ch&0x0f))//											SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT6,0x00);		//... POP_UP_EN=0//									}									for(_t1_=0;_t1_<cmn_max_ch;_t1_++){										SetCrntDvcCh(_t1_,&_dvc_,&_ch_);										if(_t1_ == (mse_ch&0x0f))											SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT6,BIT6);		//... POP_UP_EN=1										else											SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT6,0x00);		//... POP_UP_EN=0									}								}							}						}					}				}				if(b_mse_pshng_clk_lb == 1){					b_mse_pshng_clk_lb = 0;				}												if(b_mse_btn_dwn_rb == 1){					b_mse_btn_dwn_rb = 0;				}				if(b_mse_clk_rb == 1){					b_mse_clk_rb = 0;					if(b_mse_rlse_lb == 1){						SetOSDMn();//#if	defined(__4CH__)//						if(wndw_ds_sc_fmt == SC_FMT_8CH)//							WriteOSDClrY(MASTER,WNDW_DS_SC_CNT_X,WNDW_DS_SC_CNT_Y,11,1);//#endif						CreatePopMain();					}				}				if(b_mse_pshng_clk_rb == 1){					b_mse_pshng_clk_rb = 0;				}//				if(wndw_ds_sc_fmt != SC_FMT_8CH){													//... psuedo 8 ch procedure				if(wndw_ds_sc_fmt == SC_FMT_8CH){}				else if((wndw_ds_sc_fmt == SC_FMT_4CH)&&(b_ds_wth_4pb)){}				else{					if((mse_ch != 0xff)&&((mse_ch & 0xf0) != 0))	SetMseFreeScl();					else	SetMseFreeDrg();				}			}			SetKey0();//			SetKey1();			WriteMse(0xeb);		}//... mouse read done	....................................................		if(b_mse_rd_done == 1){			b_mse_rd_done = 0;			SetMseMvmnt();			SetMseBtn();			mse_ch = GetMseCh((U8)(reg_crsr_pos_x>>1),(U8)(reg_crsr_pos_y>>1));		}//yyj debug		if(P2_1==0)		{			SetOSDMn();			CreatePopMain();		}		if(P3_0==0)		{			RunWndwZm();		}									}}//==================================================================================

⌨️ 快捷键说明

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