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

📄 box.c

📁 TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KEIL C51 平台编译,
💻 C
字号:
#include	"hdr.h"

//==================================================================================
//						Box function description
//==================================================================================
//void SetBox3DEffect(U8 tgl_dim, U8 tgl_emp)
//{
//	U8	r_box_mode;
//	
//	r_box_mode = ReadAsicByte(MASTER,DVC_PG2,REG_BOX_MODE);
//	if(tgl_dim == ON)	SetBit(r_box_mode,BOX_TYPE);
//	else	ClearBit(r_box_mode,BOX_TYPE);
//	if(tgl_emp == ON)	SetBit(r_box_mode,BOX_EMP);
//	else	ClearBit(r_box_mode,BOX_EMP);
//	WriteAsicByte(MASTER,DVC_PG2,REG_BOX_MODE,r_box_mode);
//}
////==================================================================================
//void SetBoxPlaneCol(U8 _box_strt, U8 _box_end, U8 _col)
//{
//	U8	_rdat_;
//	U8	_t1_, _t2_;
//
//	for(_t1_ = _box_strt ; _t1_ <= _box_end ; _t1_++){
//		_rdat_ = ReadAsicByte(MASTER,DVC_PG2,REG_BOXCOL10+(_t1_>>1));
//		_t2_ = (_t1_&0x01)<<2;														//... _t2_ = 0 or _t2_ = 4
//		_rdat_ = (_rdat_ & (0xf0>>_t2_))|_col<<_t2_;
//		WriteAsicByte(MASTER,DVC_PG2,REG_BOXCOL10+(_t1_>>1),_rdat_);
//	}
//}
////==================================================================================
//void SetBoxPlane(U8 _box_strt, U8 _box_end, U8 tgl_pln)
//{
//	U8	_rdat_;
//	U8 _t1_;
//	
//	for(_t1_ = _box_strt ; _t1_ <= _box_end ; _t1_++){
//		_rdat_ = ReadAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_);
//		if(tgl_pln == ON)	SetBit(_rdat_,BOX_PLN_EN);
//		else	ClearBit(_rdat_,BOX_PLN_EN);
//		WriteAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_,_rdat_);
//	}
//}
////==================================================================================
//void EnableBox(U8 _pth, U8 _box_num)//U8 _box_strt, U8 _box_end)
//{
////	U8	_rdat_;
////	U8 _t1_=0;
////
////	for(_t1_ = _box_strt ; _t1_ <= _box_end ; _t1_++){
////		_rdat_ = ReadAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_);
////		ClearBit(_rdat_,BOX_EN_X|BOX_EN_Y);
////		WriteAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_,_pth|_rdat_);
////	}
//
//	if(BitSet(_pth,PTH_X))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT0,BIT0);
//	if(BitSet(_pth,PTH_Y))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT3,BIT3);
//}
////==================================================================================
void DisableBox(U8 _pth, U8 _box_num)//, U8 _box_strt, U8 _box_end)
{
//	U8	_rdat_;
//	U8 _t1_;
//
//	for(_t1_ = _box_strt ; _t1_ <= _box_end ; _t1_++){
//		_rdat_ = ReadAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_);
//		WriteAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_,(~ _pth) & _rdat_);
//	}

	if(BitSet(_pth,PTH_X))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT1|BIT0,0x00);
	if(BitSet(_pth,PTH_Y))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT4|BIT3,0x00);
}
//==================================================================================
void SetBoxPln(U8 _pth, U8 _box_num, U8 _tgl)//U8 _box_strt, U8 _box_end)
{
//	U8	_rdat_;
//	U8 _t1_=0;
//
//	for(_t1_ = _box_strt ; _t1_ <= _box_end ; _t1_++){
//		_rdat_ = ReadAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_);
//		ClearBit(_rdat_,BOX_EN_X|BOX_EN_Y);
//		WriteAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_,_pth|_rdat_);
//	}

	if(BitSet(_pth,PTH_X))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT0,_tgl);
	if(BitSet(_pth,PTH_Y))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT3,_tgl<<3);
}
//==================================================================================
void SetBoxBnd(U8 _pth, U8 _box_num, U8 _tgl)//U8 _box_strt, U8 _box_end, U8 boundary)
{	//... single box boundary is generated same as channel boundary structure.
	//... that is, boxhl/boxvt is inside of box area, boxhw/boxvw is outside of box area.
//	U8	_rdat_;
//	U8	_t1_;
//
//	for(_t1_ = _box_strt ; _t1_ <= _box_end ; _t1_++){
//		_rdat_ = ReadAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_);
//		ClearBit(_rdat_,(BOX_OBND|BOX_IBND));
//		WriteAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_,_rdat_|boundary);
//	}

	if(BitSet(_pth,PTH_X))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT1,_tgl<<1);
	if(BitSet(_pth,PTH_Y))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT4,_tgl<<4);
}
//==================================================================================
void SetBoxMix(U8 _pth, U8 _box_num, U8 _tgl)//U8 _box_strt, U8 _box_end, U8 tgl_ht)
{
//	U8	_rdat_;
//	U8	_t1_;
//
//	for(_t1_ = _box_strt ; _t1_ <= _box_end ; _t1_++){
//		_rdat_ = ReadAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_);
//		if(tgl_ht == ON)	SetBit(_rdat_,BOX_PLN_MIX);
//		else	ClearBit(_rdat_,BOX_PLN_MIX);
//		WriteAsicByte(MASTER,DVC_PG2,REG_BOXCTL+5*_t1_,_rdat_);
//	}
	if(BitSet(_pth,PTH_X))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT2,_tgl<<2);
	if(BitSet(_pth,PTH_Y))	SetAsicFlgType(MASTER,DVC_PG2,0x20+_box_num*6,BIT5,_tgl<<5);
}
//==================================================================================
void SetBoxPos(U8 _box_num, U16 _boxhl, U16 _boxvt)
{
	U8	_rdat_;

	_rdat_ = ReadAsicByte(MASTER,DVC_PG2,0x21+_box_num*6);

	if(BitSet(_boxhl, BIT0))	SetBit(_rdat_, BIT3);
	else	ClearBit(_rdat_, BIT3);
	if(BitSet(_boxvt, BIT0))	SetBit(_rdat_, BIT1);
	else	ClearBit(_rdat_, BIT1);

	WriteAsicByte(MASTER,DVC_PG2,0x21+_box_num*6,_rdat_);
	WriteAsicByte(MASTER,DVC_PG2,0x22+_box_num*6,(U8)(_boxhl>>1));
	WriteAsicByte(MASTER,DVC_PG2,0x24+_box_num*6,(U8)(_boxvt>>1));
}
//==================================================================================
void SetBoxSize(U8 _box_num, U16 _boxhw, U16 _boxvw)
{
//	WriteAsicByte(MASTER,DVC_PG2,REG_BOXHW+5*_box_num,_boxhw);
//	WriteAsicByte(MASTER,DVC_PG2,REG_BOXVW+5*_box_num,_boxvw);

	U8	_rdat_;

	_rdat_ = ReadAsicByte(MASTER,DVC_PG2,0x21+_box_num*6);

	if(BitSet(_boxhw, BIT0))	SetBit(_rdat_, BIT2);
	else	ClearBit(_rdat_, BIT2);
	if(BitSet(_boxvw, BIT0))	SetBit(_rdat_, BIT0);
	else	ClearBit(_rdat_, BIT0);

	WriteAsicByte(MASTER,DVC_PG2,0x21+_box_num*6,_rdat_);
	WriteAsicByte(MASTER,DVC_PG2,0x23+_box_num*6,(U8)(_boxhw>>1));
	WriteAsicByte(MASTER,DVC_PG2,0x25+_box_num*6,(U8)(_boxvw>>1));
}
//==================================================================================
void SetBox(U8 _box_num, U16 _boxhl, U16 _boxhw, U16 _boxvt, U16 _boxvw)
{
	SetBoxPos(_box_num,_boxhl,_boxvt);
	SetBoxSize(_box_num,_boxhw,_boxvw);
}
//==================================================================================
//void DisableBox(U8 _pth, U8 _box_num)//U8 _box_strt, U8 _box_end)
//{
//	DisableBox(_pth,_box_num);//_box_strt,_box_end);
//}
//==================================================================================

⌨️ 快捷键说明

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