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

📄 wndw_rg.c

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

//==================================================================================
//						Register window definition & variable description
//==================================================================================
U8 idata	wndw_rg_osd_pos_x=50;
U8 idata	wndw_rg_osd_pos_y=WNDW_RG_CTRL_Y;// 31;// 

#if	defined(__WNDW_RG_EV__)
U8 idata	wndw_rg_wrt_en = 0x3f;//0xff;
U8 idata	wndw_rg_rd_en = 0x3f;//0xff;
U8 idata	wndw_rg_av_dvc[WNDW_RG_NUM] = {MASTER,MASTER,MASTER,MASTER,MASTER,MASTER};//,MASTER,MASTER};
U8 idata	wndw_rg_av_pg[WNDW_RG_NUM] = {0,0,0,0,0,0};//,0,0};
U8 idata	wndw_rg_av_addr[WNDW_RG_NUM] = {0,0,0,0,0,0};//,0,0};
U8 idata	wndw_rg_av_dat[WNDW_RG_NUM] = {0,0,0,0,0,0};//,0,0};
#elif	defined(__WNDW_RG_PRO__)
U8 idata	wndw_rg_rd_en = 0x0f;
U8 idata	wndw_rg_av_dvc[WNDW_RG_NUM] = {MASTER,MASTER,MASTER,MASTER};
U8 idata	wndw_rg_av_pg[WNDW_RG_NUM] = {0,0,0,0};
U8 idata	wndw_rg_av_addr[WNDW_RG_NUM] = {0,0,0,0};
U8 idata	wndw_rg_av_dat[WNDW_RG_NUM] = {0,0,0,0};
#endif

U8 idata	wndw_rg_bit_ptr_l = 7;
U8 idata	wndw_rg_bit_ptr_r = 0;


//==================================================================================
//						Register window function description
//==================================================================================
void	SetWndwRgOSDDvc(U8 _pth, U8 _pos_x, U8 _pos_y, U8 *_av_dvc)
{
	U8 _t1_=0;

	_pos_x = 0;					//... temporal
#if	defined(__4CH__)
	_t1_ = OSD_MIX;
#elif	defined(__16CH__)
//	if((_pos_x == WNDW_RG_DVC_X)||(_pos_x == WNDW_RG_DVC_X+1))	_t1_ = OSD_MIX;//1;//
//	else	_t1_ = 0;//|OSD_MIX;
#endif

	if(BitSet(_pth,PTH_X)){
		if(_av_dvc[_pos_y] == MASTER)		WriteOSDStrX(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_ms);
		else if(_av_dvc[_pos_y] == SLAVE1)	WriteOSDStrX(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_s1);
		else if(_av_dvc[_pos_y] == SLAVE2)	WriteOSDStrX(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_s2);
		else if(_av_dvc[_pos_y] == SLAVE3)	WriteOSDStrX(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_s3);
	}
	if(BitSet(_pth,PTH_Y)){
		if(_av_dvc[_pos_y] == MASTER)		WriteOSDStrY(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_ms);
		else if(_av_dvc[_pos_y] == SLAVE1)	WriteOSDStrY(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_s1);
		else if(_av_dvc[_pos_y] == SLAVE2)	WriteOSDStrY(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_s2);
		else if(_av_dvc[_pos_y] == SLAVE3)	WriteOSDStrY(MASTER,WNDW_RG_DVC_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,str_wndw_rg_s3);
	}
}
//==================================================================================
void	SetWndwRgOSDPg(U8 _pth, U8 _pos_x, U8 _pos_y, U8 *_av_pg)
{
	U8 _t1_=0;

	_pos_x = 0;			//... temporal
//	if(WNDW_RG_PAGE_X != _pos_x)	_t1_ = 0;//|OSD_MIX;
//	else	_t1_ = OSD_MIX;//1;//

	if(BitSet(_pth,PTH_X)){
		WriteOSDFntX(MASTER,WNDW_RG_PAGE_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,_av_pg[_pos_y]+0x10);//0x30);
	}
	if(BitSet(_pth,PTH_Y)){
		WriteOSDFntY(MASTER,WNDW_RG_PAGE_X,WNDW_RG_CTRL_Y+_pos_y,_t1_,_av_pg[_pos_y]+0x10);//0x30);
	}
}
//==================================================================================
void	SetWndwRgOSDAddr(U8 _pth, U8 _pos_x, U8 _pos_y, U8 *_av_addr)
{
	U8 _t1_=0, _t2_, _t3_;
	
	for(_t2_=0;_t2_<2;_t2_++){
		if(_t2_ == 0)	_t3_ = (_av_addr[_pos_y]&0xf0)>>4;
		else	_t3_ = _av_addr[_pos_y]&0x0f;

		if(_t3_ > 9)	_t3_ += 0x07;

		_pos_x = 0;			//... temporal
//		if((WNDW_RG_ADDR_X+_t2_) != _pos_x)	_t1_ = 0;//|OSD_MIX;
//		else	_t1_ = OSD_MIX;//1;//

		if(BitSet(_pth,PTH_X)){
			WriteOSDFntX(MASTER,WNDW_RG_ADDR_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
		}
		if(BitSet(_pth,PTH_Y)){
			WriteOSDFntY(MASTER,WNDW_RG_ADDR_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
		}
	}
}
//==================================================================================
void	SetWndwRgOSDDatBin(U8 _pth, U8 _pos_x, U8 _pos_y, U8 *_av_dat)
{
	U8 _t1_=0, _t2_, _t3_;
	
	for(_t2_=0;_t2_<8;_t2_++){
	
		_pos_x = 0;			//... temporal
//		if((WNDW_RG_DATA_B_X+_t2_) != _pos_x)	_t1_ = 0;//|OSD_MIX;
//		else	_t1_ = OSD_MIX;//1;//

		if(BitSet(_av_dat[_pos_y],BIT7>>_t2_))	_t3_ = 1;
		else	_t3_ = 0;

		if(BitSet(_pth,PTH_X)){
			WriteOSDFntX(MASTER,WNDW_RG_DATA_B_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
		}
		if(BitSet(_pth,PTH_Y)){
			WriteOSDFntY(MASTER,WNDW_RG_DATA_B_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
		}
	}
}
//==================================================================================
void	SetWndwRgOSDDatHex(U8 _pth, U8 _pos_x, U8 _pos_y, U8 *_av_dat)
{
	U8 _t1_=0, _t2_, _t3_;
	
	for(_t2_=0;_t2_<2;_t2_++){

		_pos_x = 0;			//... temporal
//		if((WNDW_RG_DATA_H_X+_t2_) != _pos_x)	_t1_ = 0;//|OSD_MIX;
//		else	_t1_ = OSD_MIX;//1;//

		if(_t2_ == 0)	_t3_ = _av_dat[_pos_y]>>4;
		else	_t3_ = _av_dat[_pos_y]&0x0f;

		if(_t3_ > 9)	_t3_ += 0x07;

		if(BitSet(_pth,PTH_X)){
			WriteOSDFntX(MASTER,WNDW_RG_DATA_H_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
		}
		if(BitSet(_pth,PTH_Y)){
			WriteOSDFntY(MASTER,WNDW_RG_DATA_H_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
		}
	}
}
//==================================================================================
void	SetWndwRgOSDDat(U8 _pth, U8 _pos_x, U8 _pos_y, U8 *_av_dat)
{
//	for(_t2_=0;_t2_<8;_t2_++){
//		if((WNDW_RG_DATA_B_X+_t2_) != _pos_x)	_t1_ = 0;//|OSD_MIX;
//		else	_t1_ = OSD_MIX;//1;//
////		IfBitSet(_av_dat[_pos_y],BIT7>>_t2_)	_t3_ = 1;
//		if(BitSet(_av_dat[_pos_y],BIT7>>_t2_))	_t3_ = 1;
//		else	_t3_ = 0;
////		WriteAsic1Font(_pth,WNDW_RG_DATA_B_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
//		if(BitSet(_pth,PTH_X)){
//			WriteOSDFntX(MASTER,WNDW_RG_DATA_B_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
//		}
//		if(BitSet(_pth,PTH_Y)){
//			WriteOSDFntY(MASTER,WNDW_RG_DATA_B_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
//		}
//	}
//	for(_t2_=0;_t2_<2;_t2_++){
//		if((WNDW_RG_DATA_H_X+_t2_) != _pos_x)	_t1_ = 0;//|OSD_MIX;
//		else	_t1_ = OSD_MIX;//1;//
//		if(_t2_ == 0)	_t3_ = _av_dat[_pos_y]>>4;
//		else	_t3_ = _av_dat[_pos_y]&0x0f;
//
//		if(_t3_ > 9)	_t3_ += 0x07;
////		WriteAsic1Font(_pth,WNDW_RG_DATA_H_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_);
//		if(BitSet(_pth,PTH_X)){
//			WriteOSDFntX(MASTER,WNDW_RG_DATA_H_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
//		}
//		if(BitSet(_pth,PTH_Y)){
//			WriteOSDFntY(MASTER,WNDW_RG_DATA_H_X+_t2_,WNDW_RG_CTRL_Y+_pos_y,_t1_,_t3_+0x10);//0x30);
//		}
//	}
	SetWndwRgOSDDatBin(_pth,_pos_x,_pos_y,_av_dat);
	SetWndwRgOSDDatHex(_pth,_pos_x,_pos_y,_av_dat);
}
//==================================================================================
#if	defined(__WNDW_RG_EV__)
void	SetWndwRgOSDWrt(U8 _pth, U8 _pos_y)
{
	U8 _t1_;
	
	if(BitSet(wndw_rg_wrt_en,BIT0<<_pos_y))	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;

	if(BitSet(_pth,PTH_X)){
		WriteOSDFntX(MASTER,WNDW_RG_WRT_X,WNDW_RG_CTRL_Y+_pos_y,0x00,_t1_);
	}
	if(BitSet(_pth,PTH_Y)){
		WriteOSDFntY(MASTER,WNDW_RG_WRT_X,WNDW_RG_CTRL_Y+_pos_y,0x00,_t1_);
	}
}
#endif
//==================================================================================
void	SetWndwRgOSDRd(U8 _pth, U8 _pos_y)
{
	U8 _t1_;
	
	if(BitSet(wndw_rg_rd_en,BIT0<<_pos_y))	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;

	if(BitSet(_pth,PTH_X)){
		WriteOSDFntX(MASTER,WNDW_RG_READ_X,WNDW_RG_CTRL_Y+_pos_y,0x00,_t1_);
	}
	if(BitSet(_pth,PTH_Y)){
		WriteOSDFntY(MASTER,WNDW_RG_READ_X,WNDW_RG_CTRL_Y+_pos_y,0x00,_t1_);
	}
}
//==================================================================================
void	CreateWndwRg(U8 _pth)
{
	U8 _t1_;//, _t2_;

	b_cmn_wndw_mn = ON;
//	SetBit(cmn_flg,CMN_WNDW_MN);

//	ClearOSD(_pth,WNDW_RG_POS_X,WNDW_RG_POS_Y,WNDW_RG_L,WNDW_RG_H);
	if(BitSet(_pth,PTH_X))
		WriteOSDClrX(MASTER,WNDW_RG_POS_X,WNDW_RG_POS_Y,WNDW_RG_L,WNDW_RG_H);
	if(BitSet(_pth,PTH_Y))
		WriteOSDClrY(MASTER,WNDW_RG_POS_X,WNDW_RG_POS_Y,WNDW_RG_L,WNDW_RG_H);

	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_RG_POS_X,WNDW_RG_POS_Y,WNDW_RG_L,WNDW_RG_H,str_wndw_ttl_reg_ctrl);

#if	defined(__WNDW_RG_EV__)
	if(BitSet(_pth,PTH_X)){
		WriteOSDFntX(MASTER,WNDW_RG_DATA_B_X+7-wndw_rg_bit_ptr_l,WNDW_RG_RNG_Y,OSD_MIX,OSD_ARW_D_SML);
		WriteOSDFntX(MASTER,WNDW_RG_DATA_B_X+7-wndw_rg_bit_ptr_r,WNDW_RG_RNG_Y,OSD_MIX,OSD_ARW_D_SML);
		WriteOSDFntX(MASTER,WNDW_RG_APLY_W_X,WNDW_RG_RNG_Y,OSD_MIX,'A'-0x20);
		WriteOSDFntX(MASTER,WNDW_RG_WRT_X,WNDW_RG_RNG_Y,OSD_MIX,OSD_W_UPPER);
	}
	if(BitSet(_pth,PTH_Y)){
		WriteOSDFntY(MASTER,WNDW_RG_DATA_B_X+7-wndw_rg_bit_ptr_l,WNDW_RG_RNG_Y,OSD_MIX,OSD_ARW_D_SML);
		WriteOSDFntY(MASTER,WNDW_RG_DATA_B_X+7-wndw_rg_bit_ptr_r,WNDW_RG_RNG_Y,OSD_MIX,OSD_ARW_D_SML);
		WriteOSDFntY(MASTER,WNDW_RG_APLY_W_X,WNDW_RG_RNG_Y,OSD_MIX,'A'-0x20);
		WriteOSDFntY(MASTER,WNDW_RG_WRT_X,WNDW_RG_RNG_Y,OSD_MIX,OSD_W_UPPER);
	}
#elif	defined(__WNDW_RG_PRO__)
	if(BitSet(_pth,PTH_X)){
		WriteOSDStrX(MASTER,WNDW_RG_DATA_B_X+3,WNDW_RG_RNG_Y,OSD_MIX,str_wndw_rg_radx);
		WriteOSDFntX(MASTER,WNDW_RG_APLY_W_X,WNDW_RG_RNG_Y,OSD_MIX,OSD_W_UPPER);
	}
	if(BitSet(_pth,PTH_Y)){
		WriteOSDStrY(MASTER,WNDW_RG_DATA_B_X+3,WNDW_RG_RNG_Y,OSD_MIX,str_wndw_rg_radx);
		WriteOSDFntY(MASTER,WNDW_RG_APLY_W_X,WNDW_RG_RNG_Y,OSD_MIX,OSD_W_UPPER);
	}
#endif
	if(BitSet(_pth,PTH_X))
		WriteOSDFntX(MASTER,WNDW_RG_READ_X,WNDW_RG_RNG_Y,OSD_MIX,OSD_R_UPPER);
	if(BitSet(_pth,PTH_Y))
		WriteOSDFntY(MASTER,WNDW_RG_READ_X,WNDW_RG_RNG_Y,OSD_MIX,OSD_R_UPPER);

	for(_t1_=0;_t1_<WNDW_RG_NUM;_t1_++){
		SetWndwRgOSDDvc(_pth,50,_t1_,wndw_rg_av_dvc);
		SetWndwRgOSDPg(_pth,50,_t1_,wndw_rg_av_pg);
		SetWndwRgOSDAddr(_pth,50,_t1_,wndw_rg_av_addr);

		if(BitSet(_pth,PTH_X))
			WriteOSDFntX(MASTER,WNDW_RG_PAGE_X+1,WNDW_RG_CTRL_Y+_t1_,OSD_MIX,OSD_X_SMALL);
		if(BitSet(_pth,PTH_Y))
			WriteOSDFntY(MASTER,WNDW_RG_PAGE_X+1,WNDW_RG_CTRL_Y+_t1_,OSD_MIX,OSD_X_SMALL);
		wndw_rg_av_dat[_t1_] = ReadAsicByte(wndw_rg_av_dvc[_t1_],wndw_rg_av_pg[_t1_],wndw_rg_av_addr[_t1_]);

		SetWndwRgOSDDat(_pth,50,_t1_,wndw_rg_av_dat);
		if(BitSet(_pth,PTH_X)){
			WriteOSDFntX(MASTER,WNDW_RG_DATA_B_X+8,WNDW_RG_CTRL_Y+_t1_,OSD_MIX,OSD_DD);
			WriteOSDFntX(MASTER,WNDW_RG_APLY_W_X,WNDW_RG_CTRL_Y+_t1_,0x00,OSD_W_SML);
		}
		if(BitSet(_pth,PTH_Y)){
			WriteOSDFntY(MASTER,WNDW_RG_DATA_B_X+8,WNDW_RG_CTRL_Y+_t1_,OSD_MIX,OSD_DD);
			WriteOSDFntY(MASTER,WNDW_RG_APLY_W_X,WNDW_RG_CTRL_Y+_t1_,0x00,OSD_W_SML);
		}
#if	defined(__WNDW_RG_EV__)
		if(BitSet(_pth,PTH_X)){
			WriteOSDFntX(MASTER,WNDW_RG_APLY_I_X,WNDW_RG_CTRL_Y+_t1_,0x00,OSD_PLUS_SML);
			WriteOSDFntX(MASTER,WNDW_RG_APLY_D_X,WNDW_RG_CTRL_Y+_t1_,0x00,OSD_MINUS_SML);
		}
		if(BitSet(_pth,PTH_Y)){
			WriteOSDFntY(MASTER,WNDW_RG_APLY_I_X,WNDW_RG_CTRL_Y+_t1_,0x00,OSD_PLUS_SML);
			WriteOSDFntY(MASTER,WNDW_RG_APLY_D_X,WNDW_RG_CTRL_Y+_t1_,0x00,OSD_MINUS_SML);
		}
		SetWndwRgOSDWrt(_pth,_t1_);
#endif

		SetWndwRgOSDRd(_pth,_t1_);
	}

//	mouse_flag_on_osd = 0x00;
	mse_flg_on_osd = 0x00;
}
//==================================================================================
void	RunWndwRgInc(U8 _pth, U8 _osd_pos_x, U8 _osd_pos_y)
{
	_osd_pos_y -= WNDW_RG_CTRL_Y;

#if	defined(__4CH__)
	if((_osd_pos_x == WNDW_RG_PAGE_X)||(_osd_pos_x == WNDW_RG_ADDR_X)||(_osd_pos_x == (WNDW_RG_ADDR_X+1))){
		if(_osd_pos_x == WNDW_RG_PAGE_X){
#elif	defined(__16CH__)
	if((_osd_pos_x == WNDW_RG_DVC_X)||(_osd_pos_x == WNDW_RG_DVC_X+1)||
		(_osd_pos_x == WNDW_RG_PAGE_X)||(_osd_pos_x == WNDW_RG_ADDR_X)||(_osd_pos_x == (WNDW_RG_ADDR_X+1))){

		if((_osd_pos_x == WNDW_RG_DVC_X)||(_osd_pos_x == WNDW_RG_DVC_X+1)){
			if(wndw_rg_av_dvc[_osd_pos_y] > MASTER)	wndw_rg_av_dvc[_osd_pos_y] >>= 2;
			else	wndw_rg_av_dvc[_osd_pos_y] = SLAVE3;
			SetWndwRgOSDDvc(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_dvc);
		}
		else if(_osd_pos_x == WNDW_RG_PAGE_X){
#endif

			if(wndw_rg_av_pg[_osd_pos_y] < 2)	wndw_rg_av_pg[_osd_pos_y]++;
			else	wndw_rg_av_pg[_osd_pos_y] = 0;
			SetWndwRgOSDPg(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_pg);
		}
		else if((_osd_pos_x == WNDW_RG_ADDR_X)||(_osd_pos_x == (WNDW_RG_ADDR_X+1))){
			if(_osd_pos_x == WNDW_RG_ADDR_X){
				if((wndw_rg_av_addr[_osd_pos_y]&0xf0) < 0xf0)	wndw_rg_av_addr[_osd_pos_y] += 0x10;
				else	wndw_rg_av_addr[_osd_pos_y] &= 0x0f;
			}
			else{
				if((wndw_rg_av_addr[_osd_pos_y]&0x0f) < 0x0f)	wndw_rg_av_addr[_osd_pos_y]++;
				else	wndw_rg_av_addr[_osd_pos_y] &= 0xf0;
			}
			SetWndwRgOSDAddr(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_addr);
		}
		wndw_rg_av_dat[_osd_pos_y] = ReadAsicByte(wndw_rg_av_dvc[_osd_pos_y],wndw_rg_av_pg[_osd_pos_y],wndw_rg_av_addr[_osd_pos_y]);
		SetWndwRgOSDDat(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_dat);
	}
	else if((_osd_pos_x >= WNDW_RG_DATA_B_X)&&(_osd_pos_x < (WNDW_RG_DATA_B_X+8))){
		wndw_rg_av_dat[_osd_pos_y] ^= BIT7>>( _osd_pos_x-WNDW_RG_DATA_B_X);
		SetWndwRgOSDDat(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_dat);
	}
	else if((_osd_pos_x >= WNDW_RG_DATA_H_X)&&(_osd_pos_x < (WNDW_RG_DATA_H_X+2))){
		if(_osd_pos_x == WNDW_RG_DATA_H_X){
			if((wndw_rg_av_dat[_osd_pos_y]&0xf0) < 0xf0)	wndw_rg_av_dat[_osd_pos_y] += 0x10;
			else	wndw_rg_av_dat[_osd_pos_y] &= 0x0f;
		}
		else{
			if((wndw_rg_av_dat[_osd_pos_y]&0x0f) < 0x0f)	wndw_rg_av_dat[_osd_pos_y]++;
			else	wndw_rg_av_dat[_osd_pos_y] &= 0xf0;
		}
		SetWndwRgOSDDat(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_dat);
	}
}
//==================================================================================
void	RunWndwRgDec(U8 _pth, U8 _osd_pos_x, U8 _osd_pos_y)
{
	_osd_pos_y -= WNDW_RG_CTRL_Y;

#if	defined(__4CH__)
	if((_osd_pos_x == WNDW_RG_PAGE_X)||(_osd_pos_x == WNDW_RG_ADDR_X)||(_osd_pos_x == (WNDW_RG_ADDR_X+1))){
		if(_osd_pos_x == WNDW_RG_PAGE_X){
#elif	defined(__16CH__)
	if((_osd_pos_x == WNDW_RG_DVC_X)||(_osd_pos_x == WNDW_RG_DVC_X+1)||
		(_osd_pos_x == WNDW_RG_PAGE_X)||(_osd_pos_x == WNDW_RG_ADDR_X)||(_osd_pos_x == (WNDW_RG_ADDR_X+1))){

		if((_osd_pos_x == WNDW_RG_DVC_X)||(_osd_pos_x == WNDW_RG_DVC_X+1)){
			if(wndw_rg_av_dvc[_osd_pos_y] < SLAVE3)	wndw_rg_av_dvc[_osd_pos_y] <<= 2;
			else	wndw_rg_av_dvc[_osd_pos_y] = MASTER;
			SetWndwRgOSDDvc(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_dvc);
		}
		else if(_osd_pos_x == WNDW_RG_PAGE_X){
#endif

			if(wndw_rg_av_pg[_osd_pos_y] > 0)	wndw_rg_av_pg[_osd_pos_y]--;
			else	wndw_rg_av_pg[_osd_pos_y] = 2;
			SetWndwRgOSDPg(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_pg);
		}
		else if((_osd_pos_x == WNDW_RG_ADDR_X)||(_osd_pos_x == (WNDW_RG_ADDR_X+1))){
			if(_osd_pos_x == WNDW_RG_ADDR_X){
				if((wndw_rg_av_addr[_osd_pos_y]&0xf0) > 0)	wndw_rg_av_addr[_osd_pos_y] -= 0x10;
				else	wndw_rg_av_addr[_osd_pos_y] |= 0xf0;
			}
			else{
				if((wndw_rg_av_addr[_osd_pos_y]&0x0f) > 0)	wndw_rg_av_addr[_osd_pos_y]--;
				else	wndw_rg_av_addr[_osd_pos_y] |= 0x0f;
			}
			SetWndwRgOSDAddr(_pth,_osd_pos_x,_osd_pos_y,wndw_rg_av_addr);
		}

⌨️ 快捷键说明

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