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

📄 wndw_ds_indx.c

📁 一个比较好用的TW2835音视频芯片开发板的程序,
💻 C
📖 第 1 页 / 共 2 页
字号:
#include	"hdr.h"

//==================================================================================
U8 idata	wndw_ds_in_type = IN_TYPE_REC;

//U8 bdata	wndw_flg_ds = 0x00;
//sbit	b_ds_pb_cif = wndw_flg_ds^7;
//sbit	b_ds_wth_rc = wndw_flg_ds^6;
////sbit	b_ds_in_eror = wndw_flg_ds^5;
//sbit	b_ds_in_run = wndw_flg_ds^4;
//sbit	b_ds_in_auto = wndw_flg_ds^3;
//

//==================================================================================
//						Display wndwdow function description
//==================================================================================
void	SetWndwDsInOSDTypeRdo(U8 _pth)
{
	U8 _t1_, _t2_;
 	for(_t1_=0;_t1_<3;_t1_++){
		if(_t1_ == wndw_ds_in_type)		_t2_ = OSD_RDO_CHK;
		else	_t2_ = OSD_RDO_BLK;
		
		WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_RDO_TYPE_X,WNDW_DS_IN_RDO_TYPE_Y+_t1_,0x00,_t2_);
	}
}
//==================================================================================
void	SetWndwDsInOSDType(U8 _pth)
{
//	U8 _t1_, _t2_;

	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_RDO_TYPE_X+2,WNDW_DS_IN_RDO_TYPE_Y+IN_TYPE_REC,0x00,str_wndw_cmn_same_as_rec);
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_RDO_TYPE_X+2,WNDW_DS_IN_RDO_TYPE_Y+IN_TYPE_DGTL,0x00,str_wndw_in_dgtl_indx);
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_RDO_TYPE_X+2,WNDW_DS_IN_RDO_TYPE_Y+IN_TYPE_ANLG,0x00,str_wndw_in_anlg_indx);

// 	for(_t1_=0;_t1_<3;_t1_++){
//		if(_t1_ == wndw_ds_in_type)		_t2_ = OSD_RDO_CHK;
//		else	_t2_ = OSD_RDO_BLK;
//		
//		WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_RDO_TYPE_X,WNDW_DS_IN_RDO_TYPE_Y+_t1_,0x00,_t2_);
//	}
	SetWndwDsInOSDTypeRdo(_pth);
}
//==================================================================================
void	SetWndwDsInOSDAnlgRdo(U8 _pth)
{
	U8 _t1_;//, _t2_;
	
	if(wndw_ds_in_type < IN_TYPE_ANLG)	_t1_ = OSD_MIX;
	else	_t1_ = 0x00;
	
	if(b_ds_in_auto == ON){
		WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_RDO_DT_X,WNDW_DS_IN_RDO_DT_Y,_t1_,OSD_RDO_CHK);
		WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_RDO_DT_X,WNDW_DS_IN_RDO_DT_Y+1,_t1_,OSD_RDO_BLK);
	}
	else{
		WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_RDO_DT_X,WNDW_DS_IN_RDO_DT_Y,_t1_,OSD_RDO_BLK);
		WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_RDO_DT_X,WNDW_DS_IN_RDO_DT_Y+1,_t1_,OSD_RDO_CHK);
	}
}
//==================================================================================
void	SetWndwDsInOSDAnlgChk(U8 _pth)
{
	U8 _t1_;//, _t2_;
	
//	if(b_ds_in_auto == ON)	_t1_ = OSD_MIX;
//	else	_t1_ = 0x00;
	if((wndw_ds_in_type == IN_TYPE_ANLG)&&(b_ds_in_auto == OFF))	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_CHK_RN_X+2,WNDW_DS_IN_CHK_RN_Y,_t1_,str_wndw_in_run_in_clk);

	if(b_ds_in_run == ON)	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_CHK_RN_X,WNDW_DS_IN_CHK_RN_Y,_t1_,OSD_CHK_BOX_CHK);
	else	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_CHK_RN_X,WNDW_DS_IN_CHK_RN_Y,_t1_,OSD_CHK_BOX_BLK);
	

}
//==================================================================================
void	SetWndwDsInOSDAnlg(U8 _pth)
{
	U8 _t1_;//, _t2_;

	if(wndw_ds_in_type < IN_TYPE_ANLG)	_t1_ = OSD_MIX;
	else	_t1_ = 0x00;
	
//	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_CHK_X0+2,WNDW_DS_IN_CHK_DT_Y,_t1_,str_wndw_in_eror_cor);
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_RDO_DT_X+2,WNDW_DS_IN_RDO_DT_Y,_t1_,str_wndw_in_auto_det);
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_RDO_DT_X+2,WNDW_DS_IN_RDO_DT_Y+1,_t1_,str_wndw_in_mnl_det);

//	if(b_ds_in_eror == ON)	_t2_ = OSD_CHK_BOX_CHK;
//	else	_t2_ = OSD_CHK_BOX_BLK;
//	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_CHK_X0,WNDW_DS_IN_CHK_DT_Y,_t1_,_t2_);

	SetWndwDsInOSDAnlgRdo(_pth);
	SetWndwDsInOSDAnlgChk(_pth);

//	if(b_ds_in_run == ON)	_t2_ = OSD_CHK_BOX_CHK;
//	else	_t2_ = OSD_CHK_BOX_BLK;
//	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_CHK_X0,WNDW_DS_IN_CHK_RN_Y,_t1_,_t2_);
//
//	if(b_ds_in_run == OFF)	_t1_ = OSD_MIX;
//	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_CHK_RN_X+2,WNDW_DS_IN_CHK_AT_Y,_t1_,str_wndw_in_auto_det);
//	if(b_ds_in_auto == ON)	_t2_ = OSD_CHK_BOX_CHK;
//	else	_t2_ = OSD_CHK_BOX_BLK;
//	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_CHK_RN_X,WNDW_DS_IN_CHK_AT_Y,_t1_,_t2_);
}
//==================================================================================
void	SetWndwDsInOSDSpec(U8 _pth)
{
	U8 _t1_;

//	if((wndw_ds_in_type == IN_TYPE_ANLG)&&((b_ds_in_run == OFF)||(b_ds_in_auto == OFF)))	_t1_ = 0x00;
	if((wndw_ds_in_type == IN_TYPE_ANLG)&&(b_ds_in_auto == OFF))	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_TTL_X,WNDW_DS_IN_HS_Y,_t1_,str_wndw_in_h_strt);
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_TTL_X,WNDW_DS_IN_PX_Y,_t1_,str_wndw_in_pxl_bit);
	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_TTL_X,WNDW_DS_IN_VS_Y,_t1_,str_wndw_in_v_strt);
//	WriteOSDStr(_pth,MASTER,WNDW_DS_IN_CHK_X0,WNDW_DS_IN_LN_Y,_t1_,str_wndw_in_line);
}
//==================================================================================
void	RunWndwDsInOSDArw(U8 _pth, U8 _osd_pos_x, U8 _osd_pos_y)
{
	U8 _t1_;

//	if((wndw_ds_in_type == IN_TYPE_ANLG)&&((b_ds_in_run == OFF)||(b_ds_in_auto == OFF)))	_t1_ = 0x00;
	if((wndw_ds_in_type == IN_TYPE_ANLG)&&(b_ds_in_auto == OFF))	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	
	RunMseOnOSDH(_pth|_t1_,_osd_pos_x,_osd_pos_y,WNDW_DS_IN_DEC_X,WNDW_DS_IN_INC_X,WNDW_DS_IN_HS_Y,MSE_ON_OSD_HS);
	RunMseOnOSDH(_pth|_t1_,_osd_pos_x,_osd_pos_y,WNDW_DS_IN_DEC_X,WNDW_DS_IN_INC_X,WNDW_DS_IN_PX_Y,MSE_ON_OSD_PX);
	RunMseOnOSDH(_pth|_t1_,_osd_pos_x,_osd_pos_y,WNDW_DS_IN_DEC_X,WNDW_DS_IN_INC_X,WNDW_DS_IN_VS_Y,MSE_ON_OSD_VS);
//	RunMseOnOSDH(_pth|_t1_,_osd_pos_x,_osd_pos_y,WNDW_DS_IN_DEC_X,WNDW_DS_IN_INC_X,WNDW_DS_IN_LN_Y,MSE_ON_OSD_LN);
}
//==================================================================================
void	SetWndwDsInOSDNumHs(U8 _pth, U8 _data)
{
	U8 _t1_, _t2_;

//	if((wndw_ds_in_type == IN_TYPE_ANLG)&&((b_ds_in_run == OFF)||(b_ds_in_auto == OFF)))	_t1_ = 0x00;
	if((wndw_ds_in_type == IN_TYPE_ANLG)&&(b_ds_in_auto == OFF))	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	
	_t2_ = _data%100;
	_t2_ = ConvDec2Bcd(_t2_);
	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X,WNDW_DS_IN_HS_Y,_t1_,(_t2_>>4)+0x10);
	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X+1,WNDW_DS_IN_HS_Y,_t1_,(_t2_&0x0f)+0x10);
	_t2_ = _data/100;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X-1,WNDW_DS_IN_HS_Y,_t1_,_t2_+0x10);
}
//==================================================================================
void	SetWndwDsInOSDNumPx(U8 _pth, U8 _data)
{
	U8 _t1_, _t2_;

//	if((wndw_ds_in_type == IN_TYPE_ANLG)&&((b_ds_in_run == OFF)||(b_ds_in_auto == OFF)))	_t1_ = 0x00;
	if((wndw_ds_in_type == IN_TYPE_ANLG)&&(b_ds_in_auto == OFF))	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	
	_t2_ = ConvDec2Bcd(_data);
	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X,WNDW_DS_IN_PX_Y,_t1_,(_t2_>>4)+0x10);
	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X+1,WNDW_DS_IN_PX_Y,_t1_,(_t2_&0x0f)+0x10);
}
//==================================================================================
void	SetWndwDsInOSDNumVs(U8 _pth, U8 _data)
{
	U8 _t1_, _t2_;

//	if((wndw_ds_in_type == IN_TYPE_ANLG)&&((b_ds_in_run == OFF)||(b_ds_in_auto == OFF)))	_t1_ = 0x00;
	if((wndw_ds_in_type == IN_TYPE_ANLG)&&(b_ds_in_auto == OFF))	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	
	_t2_ = ConvDec2Bcd(_data);
	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X,WNDW_DS_IN_VS_Y,_t1_,(_t2_>>4)+0x10);
	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X+1,WNDW_DS_IN_VS_Y,_t1_,(_t2_&0x0f)+0x10);
}
//==================================================================================
//void	SetWndwDsInOSDNumLn(U8 _pth, U8 _data)
//{
//	U8 _t1_;
//
//	if((wndw_ds_in_type == IN_TYPE_ANLG)&&((b_ds_in_run == OFF)||(b_ds_in_auto == OFF)))	_t1_ = 0x00;
//	else	_t1_ = OSD_MIX;
//	
////	WriteOSDFnt(_pth,MASTER,WNDW_DS_IN_NUM_X+1,WNDW_DS_IN_LN_Y,_t1_,_data+0x10);
//}
//==================================================================================
void	SetWndwDsInOSDNum(U8 _pth)
{
	U8 _rdat_;
	U8 _t1_, _t2_, _t3_;
	
	if(wndw_ds_in_type == IN_TYPE_REC){
		_t1_ = 0x81;
		_t2_ = 0x82;
		_t3_ = 0x83;
	}
	else{
		_t1_ = 0x87;
		_t2_ = 0x88;
		_t3_ = 0x89;
	}
//	_rdat_ = ReadAsicByte(MASTER,DVC_PG1,_t1_);
	_rdat_ = GetAsicFlgType(MASTER,DVC_PG1,_t1_,0xff);
	SetWndwDsInOSDNumHs(_pth,_rdat_);

//	_rdat_ = ReadAsicByte(MASTER,DVC_PG1,_t2_);
	_rdat_ = GetAsicFlgType(MASTER,DVC_PG1,_t2_,0x1f);
	SetWndwDsInOSDNumPx(_pth,_rdat_);

//	_rdat_ = ReadAsicByte(MASTER,DVC_PG1,_t3_);
	_rdat_ = GetAsicFlgType(MASTER,DVC_PG1,_t3_,0x1f);
	SetWndwDsInOSDNumVs(_pth,_rdat_);
//	SetWndwDsInOSDNumLn(_pth,(_rdat_&0xe0)>>5);
}
//==================================================================================
//==================================================================================
void	InitWndwDsInFlg(void)
{
	U8 _t1_;
	
	_t1_ = ReadAsicByte(MASTER,DVC_PG1,0x86);
	if(BitSet(_t1_,BIT7))	b_ds_in_auto = ON;
	else	b_ds_in_auto = OFF;
//	if(BitSet(_t1_,BIT6))	b_ds_in_eror = ON;
//	else	b_ds_in_eror = OFF;
	if(wndw_ds_in_type != IN_TYPE_REC){
		if(BitSet(_t1_,BIT4))	wndw_ds_in_type = IN_TYPE_DGTL;
		else	wndw_ds_in_type = IN_TYPE_ANLG;
//		else if(BitSet(_t1_,BIT5))	wndw_ds_in_type = IN_TYPE_ANLG;
	}
	if(BitSet(_t1_,BIT3))	b_ds_in_run = ON;
	else	b_ds_in_run = OFF;
}
//==================================================================================
//==================================================================================
void	CreateWndwDsIn(U8 _pth)
{
//	b_status_wndw = ON;
	b_cmn_wndw_mn = ON;

//	ClearOSD(_pth,WNDW_DS_IN_POS_X,WNDW_DS_IN_POS_Y,WNDW_DS_IN_L,WNDW_DS_IN_H);
//	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN|BOX_WNDW_FRM,WNDW_DS_IN_POS_X,WNDW_DS_IN_POS_Y,
//		WNDW_DS_IN_L,WNDW_DS_IN_H,str_wndw_ttl_pb_in);
	WriteOSDClr(_pth,MASTER,WNDW_DS_IN_POS_X,WNDW_DS_IN_POS_Y,WNDW_DS_IN_L,WNDW_DS_IN_H);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_DS_IN_POS_X,WNDW_DS_IN_POS_Y,WNDW_DS_IN_L,WNDW_DS_IN_H,str_wndw_ttl_pb_indx);

	InitWndwDsInFlg();

	SetWndwDsInOSDType(_pth);
	SetWndwDsInOSDAnlg(_pth);

	SetOSDWndw(_pth,OSD_WNDW_TYPE_DECO,WNDW_DS_IN_TTL_X,WNDW_DS_IN_HS_Y,16,3,str_null);
	SetWndwDsInOSDSpec(_pth);
	
	mse_flg_on_osd = MSE_ON_OSD_HS|MSE_ON_OSD_PX|MSE_ON_OSD_VS|MSE_ON_OSD_LN;

⌨️ 快捷键说明

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