cmn.c
来自「一个比较好用的TW2835音视频芯片开发板的程序,」· C语言 代码 · 共 313 行
C
313 行
#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_fld_od = cmn_flg^5;
//sbit b_cmn_fld_evn = cmn_flg^6;
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 = DVC_ALL;
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 )
//==================================================================================
#if defined(__16CH__)
void WaitCmnFldOd(void)
{
U16 _dly_=0xffff;
b_cmn_fld_od = 0;
while(!b_cmn_fld_od){
if(!_dly_) break;
_dly_--;
}
}
#endif
//==================================================================================
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);
}
// */
//==================================================================================
U16 ChkNoVdo(void)
{
U16 _rdat_=0;
_rdat_ = GetAsicFlgType(MASTER,DVC_PG1,0x78,0x0f);
_rdat_ |= GetAsicFlgType(SLAVE1,DVC_PG1,0x78,0x0f)<<4;
_rdat_ |= GetAsicFlgType(SLAVE2,DVC_PG1,0x78,0x0f)<<8;
_rdat_ |= GetAsicFlgType(SLAVE3,DVC_PG1,0x78,0x0f)<<12;
return _rdat_;
}
//==================================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?