📄 venb.c
字号:
VIDEO3_LED=0;
VIDEO4_LED=0;
break;
case 8:
VIDEO1_LED=0;
VIDEO2_LED=1;
VIDEO3_LED=1;
VIDEO4_LED=1;
break;
case 9:
VIDEO1_LED=0;
VIDEO2_LED=1;
VIDEO3_LED=1;
VIDEO4_LED=0;
break;
case 0x0a:
VIDEO1_LED=0;
VIDEO2_LED=1;
VIDEO3_LED=0;
VIDEO4_LED=1;
break;
case 0x0b:
VIDEO1_LED=0;
VIDEO2_LED=1;
VIDEO3_LED=0;
VIDEO4_LED=0;
break;
case 0x0c:
VIDEO1_LED=0;
VIDEO2_LED=0;
VIDEO3_LED=1;
VIDEO4_LED=1;
break;
default:
VIDEO1_LED=1;
VIDEO2_LED=1;
VIDEO3_LED=1;
VIDEO4_LED=0;
break;
}
}
/*****************************************************************************
* 函数名称:void InitAdg406(void) *
* 简要描述:初始化Adg406 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void InitAdg406(byte nCurrentVideo)
{
WATCHD=!WATCHD;
VIDEO_CS=1; //设定片选信号有效
WR=1;
P0=(nCurrentVideo-1); //对任意地址写速率控制字,低2位有效
WR=0; //负脉冲为有效的写操作
Delay();
WR=1;
VIDEO_CS=0; //设定片选信号无效
return;
}
/*****************************************************************************
* 函数名称:void InitSaa7111(void) *
* 简要描述:初始化SAA7111 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void InitSaa7111(void)
{
WATCHD=!WATCHD;
SendToSaa7111(0x0,0x0); //地址00,Chip version
SendToSaa7111(0x1,0x0); //地址01,Reserved
switch(m_nCurrentVideo) //地址02,Analog input control 1
{
case 4:
SendToSaa7111(0x2,0xdb); //视频4
break;
case 3:
SendToSaa7111(0x2,0xda); //视频3
break;
case 2:
SendToSaa7111(0x2,0xd9); //视频2
break;
case 1:
default:
SendToSaa7111(0x2,0xd8); //缺省为视频1
break;
}
SendToSaa7111(0x3,0x23); //地址03,Analog input control 2
SendToSaa7111(0x4,0x0); //地址04,Analog input control 3
SendToSaa7111(0x5,0x0); //地址05,Analog input control 4
SendToSaa7111(0x6,0x30); //地址06,Horizontal sync start
SendToSaa7111(0x7,0x30); //地址07,Horizontal sync stop
SendToSaa7111(0x8,0x8); //地址08,Sync control
SendToSaa7111(0x9,0x1); //地址09,Luminance control
SendToSaa7111(0xa,m_nBright); //地址0A,Luminance brightness
SendToSaa7111(0xb,m_nContrast); //地址0B,Luminance contrast
SendToSaa7111(0xc,m_nSaturation); //地址0C,Chroma saturation
SendToSaa7111(0xd,m_nHue); //地址0D,Chroma hue control
SendToSaa7111(0xe,0x1); //地址0E,Chroma control
SendToSaa7111(0xf,0x0); //地址0F,Reserved
SendToSaa7111(0x10,0x48); //地址10,Format/delah control
SendToSaa7111(0x11,0xc); //地址11,Output control 1
if(m_nCurrentVideo<2) //地址12,Output control 2
{
SendToSaa7111(0x12,0x5); //输出AOUT与AD1连
}
else
{
SendToSaa7111(0x12,0x6); //输出AOUT与AD2连
}
SendToSaa7111(0x13,0x0); //地址13,Output control 3
SendToSaa7111(0x14,0x0); //地址14,Reserved
SendToSaa7111(0x15,0x0); //地址15,V_GATE1_START
SendToSaa7111(0x16,0x0); //地址16,V_GATE1_STOP
SendToSaa7111(0x17,0x0); //地址17,V_GATE1_MSB
SendToSaa7111(0x18,0x0); //地址18,Reserved
SendToSaa7111(0x19,0x0); //地址19,Reserved
SendToSaa7111(0x1a,0x0); //地址1A,Text slicer status
SendToSaa7111(0x1b,0x0); //地址1B,Decoded bytes of the text slicer
SendToSaa7111(0x1c,0x0); //地址1C,Reserved
SendToSaa7111(0x1d,0x0); //地址1D,Reserved
SendToSaa7111(0x1e,0x0); //地址1E,Reserved
VIDEO1_LED=0; //指示SAA7111初始化正常
return;
}
/*****************************************************************************
* 函数名称:void InitVp520enc(void) *
* 简要描述:初始化VP520芯片 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void InitVp520enc(void)
{
byte data temp;
WATCHD=!WATCHD;
RATE_CS=1; //地址锁存逻辑使能
BUTTON_CS=1;
VP520_CS=0; //片选有效
SetRegister(0x9,0x2a); //Control register 1,Disable frame ready flag
SetRegister(0x8,0x60); //Control register 0
SetRegister(0xa,0x00); //Line delay from VREF to first active line
SetRegister(0xb,0x03); //Pixel delay from HREF to first active pixel
SetRegister(0xc,0x7c); //Blanked screen Y value
SetRegister(0xd,0x7f); //Blanked screen U value
SetRegister(0xe,0x7f); //Blanked screen V value
SetRegister(0x3,0x00); //Special modes register
SetRegister(0xf,0x00); //Clear all address counters
SetRegister(0x1,0x00); //0,Horizontal luminance coefficients
SetRegister(0x1,0x00); //1
SetRegister(0x1,0x00); //2
SetRegister(0x1,0x7f); //3
SetRegister(0x1,0x00); //4
SetRegister(0x1,0x00); //5
SetRegister(0x1,0x00); //6
SetRegister(0x1,0x00); //7
SetRegister(0xf,0x00); //Clear all address counters
SetRegister(0x2,0x00); //0,Horizontal chrominance coefficients
SetRegister(0x2,0x00); //1
SetRegister(0x2,0x00); //2
SetRegister(0x2,0x7f); //3
SetRegister(0x2,0x00); //4
SetRegister(0x2,0x00); //5
SetRegister(0x2,0x00); //6
SetRegister(0x2,0x00); //7
SetRegister(0xf,0x00); //Clear all address counters
SetRegister(0x5,0x00); //0,Vertical luminance coefficients
SetRegister(0x5,0x18); //1
SetRegister(0x5,0x7f); //2
SetRegister(0x5,0x00); //3
SetRegister(0x5,0x00); //4
SetRegister(0xf,0x00); //Clear all address counters
SetRegister(0x6,0x00); //0,Vertical chrominance coefficients
SetRegister(0x6,0x00); //1
SetRegister(0x6,0x7f); //2
SetRegister(0x6,0x00); //3
SetRegister(0x6,0x00); //4
SetRegister(0x7,0x01); //Register 7,with 0x21 is test mode
SetRegister(0x8,0xe0); //Control register 0
SetRegister(0x9,0x0a); //Enable frame ready flag
//读寄存器以测试VP520是否正常
SetRegister(0xf,0x00); //Clear all address counters
temp=ReadRegister(0x6); //0,Read Vertical chrominance coefficients;
temp=ReadRegister(0x6); //1
temp=ReadRegister(0x6); //2,应为先前写入的参数
RATE_CS=1; //地址锁存逻辑使能
BUTTON_CS=1;
VP520_CS=1; //片选无效
while(temp!=0x7f); //VP520故障,应复位
VIDEO2_LED=0; //指示VP520初始化正常
return;
}
/*****************************************************************************
* 函数名称:void InitVp2611() *
* 简要描述:初始化VP2611芯片 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void InitVp2611(void)
{
byte data temp;
WATCHD=!WATCHD;
RATE_CS=1; //地址锁存逻辑使能
BUTTON_CS=1;
VP2611_CS=0; //片选有效
SetRegister(0x00,0x00); //选择命令0: 输入VAR门限
SetRegister(0x01,0x08);
SetRegister(0x00,0x02); //选择命令2: 输入帧间量化系数
SetRegister(0x01,0x05);
SetRegister(0x00,0x03); //选择命令3: 输入帧内量化系数
SetRegister(0x01,0x05);
SetRegister(0x00,0x04); //选择命令4: 输入设置参数
SetRegister(0x01,0x60);
SetRegister(0x00,0x05); //选择命令5: 输入控制功能
SetRegister(0x01,0xa0); //FASTUPDATE
//读寄存器以测试VP2611是否正常
SetRegister(0x00,0x0c); //选择命令12:输出设置参数
temp=ReadRegister(0x01);//应为命令4中输入的参数
RATE_CS=1; //地址锁存逻辑使能
BUTTON_CS=1;
VP2611_CS=1; //片选无效
while(temp!=0x60); //VP2611故障,应复位
VIDEO3_LED=0; //指示VP2611初始化正常
return;
}
/**********)*******************************************************************
* 函数名称:void InitVp2612 () *
* 简要描述:初始化VP2612芯片 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void InitVp2612(void)
{
byte data i;
WATCHD=!WATCHD;
RATE_CS=1; //地址锁存逻辑使能
BUTTON_CS=1;
VP2612_CS=0; //片选有效
// SetRegister(0x00,0x38); //选择命令0: 输入PTYPE
SetRegister(0x01,0x1f); //选择命令1: 输入Temporal Reference
SetRegister(0x03,0x00); //选择命令3: 输入TR Source
SetRegister(0x04,0x8f); //选择命令4: 输入GSPARE
SetRegister(0x0c,0x03); //选择命令C: 输入FEC/VMUX status word
SetRegister(0x0d,0xff); //选择命令D: 输入Bits per Picture Threshold
VIDEO4_LED=0; //指示VP2612初始化结束
//发图象解冻命令
SetRegister(0x00,0x3c); //选择命令0: 输入PTYPE,Freeze picture release on
for(i=0;i<100;i++) Delay();
SetRegister(0x00,0x38); //选择命令0: 输入PTYPE,Freeze picture release off
RATE_CS=1; //地址锁存逻辑使能
BUTTON_CS=1;
VP2612_CS=1; //片选无效
return;
}
/*****************************************************************************
* 函数名称:void SetRegister(byte nAddress,byte nData) *
* 简要描述:配置VP系列芯片内部寄存器 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void SetRegister(byte nAddress,byte nData)
{
ALE=0; //先锁存地址
P0=nAddress;
ALE=1;
ALE=0;
WR=1; //写入配置数据
P0=nData;
WR=0;
WR=1;
return;
}
/*****************************************************************************
* 函数名称:byte ReadRegister(byte nAddress) *
* 简要描述:读VP系列芯片内部寄存器 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
byte ReadRegister(byte nAddress)
{
byte data temp;
ALE=0; //先锁存地址
P0=nAddress;
ALE=1;
ALE=0;
P0=0xff;
RD=1; //读出数据
RD=0;
temp=P0;
RD=1;
return(temp);
}
/*****************************************************************************
* 函数名称:void I_start(void) *
* 简要描述:提供IIC总线工作时序的起始位 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void I_Start( void )
{
SCL=HIGH;
Delay();
SDA=LOW;
Delay();
SCL=LOW;
Delay();
return;
}
/*****************************************************************************
* 函数名称:void I_stop(void) *
* 简要描述:提供IIC总线工作时序的停始位 *
* *
* 时 间:2000年1月 *
*****************************************************************************/
void I_Stop(void)
{
SDA=LOW;
Delay();
SCL=HIGH;
Delay();
SDA=HIGH;
Delay();
SCL=LOW;
Delay();
return;
}
/*****************************************************************************
* 函数名称:bit I_clock(void) *
* 简要描述:提供IIC总线的时钟信号 *
* 输 出:时钟电平为高期间SDA信号线上的状态 *
* 时 间:2000年1月 *
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -