开窗函数代码如下:
void OV7670_Window_Set(u16 sx,u16 sy,u16 width,u16 height)
{
u16 endx;
u16 endy;
u8 temp;
endx=sx+width*2; //V*2
endy=sy+height*2;
if(endy>784)endy-=784; //??不懂
temp=SCCB_RD_Reg(0X03); //读取Vref之前的值
temp&=0XF0; //将VREF的结束和开始的低两位均置0
temp|=((endx&0X03)<<2)|(sx&0X03);
SCCB_WR_Reg(0X03,temp); //设置Vref的start和end的最低2位
SCCB_WR_Reg(0X19,sx>>2); //设置Vref的start高8位
SCCB_WR_Reg(0X1A,endx>>2); //设置Vref的end的高8位
temp=SCCB_RD_Reg(0X32); //读取Href之前的值
temp&=0XC0; //保存HREF的高两位
temp|=((endy&0X07)<<3)|(sy&0X07);
SCCB_WR_Reg(0X17,sy>>3); //设置Href的start高8位
SCCB_WR_Reg(0X18,endy>>3); //设置Href的end的高8位
}
if(endy>784)endy-=784; //??不懂
这句话中为什么要拿endy和784比较和处理呢?
函数调用语句:
OV7670_Window_Set(10,174,240,320); //设置窗口
这句话中的10和174是起始的x,y值,那么为什么是这两个数而不是其他数呢?
最近想改改开窗,可是这一块的代码不懂啊,真心求教!
|