cmn.c

来自「TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KE」· C语言 代码 · 共 286 行

C
286
字号
#include "hdr.h"
//#include "cmn.h"

U8	bdata	cmn_flg=0;
sbit	b_cmn_dtct_vs	= cmn_flg^0;
sbit	b_cmn_jp_vdo	= cmn_flg^1;
sbit	b_cmn_wndw_pop	= cmn_flg^2;
sbit	b_cmn_wndw_mn	= cmn_flg^3;
sbit	b_cmn_irq		= cmn_flg^4;

sbit	b_cmn_tmp		= cmn_flg^7;


U8	bdata	cmn_flg_cnt=0;
sbit b_cmn_cnt_vs		= cmn_flg_cnt^0;
sbit b_cmn_cnt_fld	= cmn_flg_cnt^1;
sbit b_cmn_cnt_tgl	= cmn_flg_cnt^2;
sbit b_cmn_cnt_01s	= cmn_flg_cnt^3;
sbit b_cmn_cnt_02s	= cmn_flg_cnt^4;
sbit b_cmn_cnt_05s	= cmn_flg_cnt^5;
sbit b_cmn_cnt_1s		= cmn_flg_cnt^6;




//------------------------------------------------------------------------------------------
U8 bdata	wndw_flg_ds = BIT4;//0x00;
sbit	b_ds_pb_cif = wndw_flg_ds^7;
sbit	b_ds_wth_4pb = wndw_flg_ds^6;
sbit	b_ds_wth_16pb = wndw_flg_ds^5;
sbit	b_ds_wth_rc = wndw_flg_ds^4;						//... default=1
//sbit	b_ds_in_eror = wndw_flg_ds^5;
sbit	b_ds_in_run = wndw_flg_ds^3;
sbit	b_ds_in_auto = wndw_flg_ds^2;

//U8 bdata	wndw_flg_rc_in = 0x00;
//sbit	b_rc_in_bnd = wndw_flg_rc_in^7;
//sbit	b_rc_in_dgtl = wndw_flg_rc_in^6;
//sbit	b_rc_in_anlg = wndw_flg_rc_in^5;
//sbit	b_rc_in_dtct = wndw_flg_rc_in^4;
//sbit	b_rc_in_run = wndw_flg_rc_in^3;
//
//U8 idata	wndw_rc_fm_cif_type = CIF_TYPE_FR;
//U8 idata	wndw_rc_fm_mux_type = MUX_TYPE_FL;


//#if defined(__4CH__)
//U8 idata	wndw_ds_sc_fmt = SC_FMT_4CH;
//#elif	defined(__16CH__)
//U8 idata	wndw_ds_sc_fmt = SC_FMT_16CH;
//#endif


U8 bdata	wndw_flg = 0x00;
sbit	b_ch_src = wndw_flg^7;
sbit	b_ado_lv_mr = wndw_flg^6;
sbit	b_ado_lv_mr_arw_pb = wndw_flg^5;
//------------------------------------------------------------------------------------------



U8	cmn_bot;
//U8	run_8ch_cnt_ana_sw;
U8	cmn_cnt_vs=0;
U8	cmn_cnt_vs_sub=0;
U8	idata	cmn_vga_det=0;				//... __WTH_VGA__老锭 idata 绝局搁 compile矫 error 惯积.

#if defined(__4CH__)
U8	cmn_dvc = MASTER;
U8	cmn_lst_slvr_x = MASTER;
U8	cmn_lst_slvr_y = MASTER;
U8	cmn_max_ch = 4;//8;
#elif	defined(__16CH__)
U8	cmn_rc_md;
U8	cmn_dvc = ALL_CHIP;
U8	cmn_lst_slvr_x = SLAVE3;
U8	cmn_lst_slvr_y = SLAVE3;
U8	cmn_max_ch = 16;
#endif

//==================================================================================
//						Common function description ( old one of 8051 )
//==================================================================================
U8	GetCodeLength(unsigned char code *_str)
{
	 U8 _cnt_=0;

  while((*_str++)!='\0')++_cnt_;
  return (_cnt_);
}
//==================================================================================
U8	ConvDec2Bcd(U8 _dat)	// ex : 38 -> 0x38, 99 -> 0x99 (BCD蔼捞骨肺 a~f绰 器窃捞 救 等促绰 啊沥俊辑, decimal蔼 10付促 6究 歹秦霖促.)
{
    U8  _bcd_=0;
    
    _bcd_=(_dat/10)*6;//((BCDValue<<2)+(BCDValue<<1));
    _dat+=_bcd_;

    return _dat;
}
//==================================================================================
/*
U8	ConvBcd2Dec(U8 _dat)	// ex : 0x38 -> 38, 0xaf -> X (BCD蔼捞骨肺 a~f绰 器窃捞 救 等促绰 啊沥俊辑, hex蔼 0x10付促 6究 哗霖促.)
{
    U8  _bin_=0;
        
    _bin_=(_dat/0x10)*6;//((_dat>>4)<<2)+(_dat>>4)<<1));
    _dat-=_bin_;

    return _dat;
}
//==================================================================================
//==================================================================================
U8	GetBitFlgType(U8 _var, U8 _flg)
{
	return	(_var&_flg);						//... status of destination bit
}
//==================================================================================
void	SetBitFlgType(U8 *_p_var, U8 _flg, U8 _data)
{
	*_p_var = (*_p_var & ~_flg)|_data;
}
//==================================================================================
U8	GetBitVarType(U8 _var, U8 _bit_ofst, U8 _bit_wdth)	//... 
{
	U8 _t1_,_t2_=0;
	
	for(_t1_=0;_t1_<_bit_wdth;_t1_++)	_t2_ |= (BIT0<<_t1_);
	
	return	(_var&(_t2_<<_bit_ofst))>>_bit_ofst;						//... value of destination bit
}
//==================================================================================
void	SetBitVarType(U8 *_p_var, U8 _bit_ofst, U8 _bit_wdth, U8 _data)
{
	U8 _t1_,_t2_=0;
	
	for(_t1_=0;_t1_<_bit_wdth;_t1_++)	_t2_ |= (BIT0<<_t1_);
	
	*_p_var = (*_p_var & ~(_t2_<<_bit_ofst))|(_data<<_bit_ofst);
}
//	*/
//==================================================================================
//==================================================================================
void	SetCrntDvcCh(U8 _ch, U8 *_crnt_dvc, U8 *_crnt_ch)
{
#if defined(__4CH__)
	*_crnt_dvc = MASTER;
	*_crnt_ch = _ch;
#elif	defined(__16CH__)
	*_crnt_dvc = MASTER<<((_ch&0x0c)>>1);
	*_crnt_ch = _ch&0x03;
#endif
}
//==================================================================================
U8	GetAsicFlgType(U8 _dvc, U8 _pg, U8 _addr, U8 _flg)
{
	U8 _t1_=0;

	_t1_ = ReadAsicByte(_dvc,_pg,_addr);

//	return	(_t1_&_flg) ? (ON):(OFF);			//... only 0 or 1
	return	_t1_&_flg;								//... status of destination bit
}
//==================================================================================
void	SetAsicFlgType(U8 _dvc, U8 _pg, U8 _addr, U8 _flg, U8 _data)
{
	U8 _t1_;

	_t1_ = ReadAsicByte(_dvc,_pg,_addr);
	_t1_ = (_t1_ & ~_flg)|_data;
	WriteAsicByte(_dvc,_pg,_addr,_t1_);
}
//==================================================================================
//*
U8	GetAsicVar8Type(U8 _dvc, U8 _pg, U8 _addr, U8 _flg)
{
	U8 _ofst_, _wdth_;
	U8 _t1_;

	_ofst_ = (_flg&0xf0)>>4;
	_wdth_ = _flg&0x0f;

	_flg = 0;
	for(_t1_=0;_t1_<_wdth_;_t1_++)	_flg += BIT0<<_t1_;
//	if(_wdth_ == 1)	_wdth_ = 0x01;
//	else if(_wdth_ == 2)	_wdth_ = 0x03;	
//	else if(_wdth_ == 3)	_wdth_ = 0x07;
//	else if(_wdth_ == 4)	_wdth_ = 0x0f;
//	else if(_wdth_ == 5)	_wdth_ = 0x1f;
//	else if(_wdth_ == 6)	_wdth_ = 0x3f;
//	else if(_wdth_ == 7)	_wdth_ = 0x7f;
//	else if(_wdth_ == 8)	_wdth_ = 0xff;

	_flg <<= _ofst_;
	_t1_ = ReadAsicByte(_dvc,_pg,_addr)&_flg;

	return	_t1_>>_ofst_;										//... value of destination bit
//	return	_t1_&_flg;							//... status of destination bit
//	return	(_t1_&_flg) ? (ON):(OFF);		//... only 0 or 1
}
//==================================================================================
void	SetAsicVar8Type(U8 _dvc, U8 _pg, U8 _addr, U8 _flg, U8 _data)
{
	U8 _ofst_, _wdth_;
	U8 _t1_;

	_ofst_ = (_flg&0xf0)>>4;
	_wdth_ = _flg&0x0f;

	_flg = 0;
	for(_t1_=0;_t1_<_wdth_;_t1_++)	_flg += BIT0<<_t1_;
//	if(_wdth_ == 1)	_wdth_ = 0x01;
//	else if(_wdth_ == 2)	_wdth_ = 0x03;	
//	else if(_wdth_ == 3)	_wdth_ = 0x07;
//	else if(_wdth_ == 4)	_wdth_ = 0x0f;
//	else if(_wdth_ == 5)	_wdth_ = 0x1f;
//	else if(_wdth_ == 6)	_wdth_ = 0x3f;
//	else if(_wdth_ == 7)	_wdth_ = 0x7f;
//	else if(_wdth_ == 8)	_wdth_ = 0xff;

	_flg <<= _ofst_;
	_t1_ = ReadAsicByte(_dvc,_pg,_addr);
	_t1_ = (_t1_ & ~_flg)|(_data<<_ofst_);
	WriteAsicByte(_dvc,_pg,_addr,_t1_);
}
//	*/
//==================================================================================
/*
U8	GetAsicBi_1_6Msb(U8 _dvc, U8 _pg, U8 _addr_msb, U8 _bit_msb, U8 _addr_lsb)
{
	U8 t_w=0;
	U8 _ofst_, _wdth_;
//	U8 _t1_;

	_ofst_ = (_bit_msb&0xf0)>>4;
	_wdth_ = _bit_msb&0x0f;

//	for(_t1_=_wdth_;_t1_>0;_t1_--)	_wdth_ |= (BIT0<<(_t1_-1));
	if(_wdth_ == 1)	_wdth_ = 0x01;
	else if(_wdth_ == 2)	_wdth_ = 0x03;	
	else if(_wdth_ == 3)	_wdth_ = 0x07;
	else if(_wdth_ == 4)	_wdth_ = 0x0f;
	else if(_wdth_ == 5)	_wdth_ = 0x1f;
	else if(_wdth_ == 6)	_wdth_ = 0x3f;
	else if(_wdth_ == 7)	_wdth_ = 0x7f;
	else if(_wdth_ == 8)	_wdth_ = 0xff;

	_wdth_ <<= _ofst_;
	t_w = ReadAsicByte(_dvc,_pg,_addr_msb) & _wdth_;
	t_w <<= (8-_ofst_);
	t_w |= ReadAsicByte(_dvc,_pg,_addr_lsb);

	return	t_w;
}
//==================================================================================
void	SetAsicBi_1_6Msb(U8 _dvc, U8 _pg, U8 _addr_msb, U8 _bit_msb, U8 _addr_lsb, U8 _data)
{
//	U8 t_w=0;
	U8 _ofst_, _wdth_;
	U8 t_data=0;
	U8 _t1_;

	_ofst_ = (_bit_msb&0xf0)>>4;
	_wdth_ = _bit_msb&0x0f;

//	for(_t1_=_wdth_;_t1_>0;_t1_--)	_wdth_ |= (BIT0<<(_t1_-1));
	if(_wdth_ == 1)	_wdth_ = 0x01;
	else if(_wdth_ == 2)	_wdth_ = 0x03;	
	else if(_wdth_ == 3)	_wdth_ = 0x07;
	else if(_wdth_ == 4)	_wdth_ = 0x0f;
	else if(_wdth_ == 5)	_wdth_ = 0x1f;
	else if(_wdth_ == 6)	_wdth_ = 0x3f;
	else if(_wdth_ == 7)	_wdth_ = 0x7f;
	else if(_wdth_ == 8)	_wdth_ = 0xff;

	WriteAsicByte(_dvc,_pg,_addr_lsb,(U8)_data);
	t_data = (U8)(_data>>8);
	t_data = (t_data&_wdth_)<<_ofst_;
	_wdth_ <<= _ofst_;
	_t1_ = ReadAsicByte(_dvc,_pg,_addr_msb);
	t_data = (_t1_ & ~_wdth_)|t_data;
	WriteAsicByte(_dvc,_pg,_addr_msb,t_data);
}
//	*/
//==================================================================================

⌨️ 快捷键说明

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