📄 ap_tw2835.c
字号:
#include <REG_MPC82G516.h>//"C:\Keil\C51\INC\Megawin\REG_MPC82G516.h" //REG_MPC82G516.h //reg82xx.h
#include <Ap_tw2835.h>
#include <Tw2835.h>
extern void I2cInitial(void);
extern BOOL MotionSettingMode;
BOOL IndexPartToggle = FALSE;
BOOL Flg_MotionStart = FALSE;
//------------------------------------------------------------------------------------------------//
BOOL Ap_channel_select(char channel)
{
int _t1_;
unsigned char _pos_hl_[] = {0x00,0x5a,0x00,0x5a};
unsigned char _pos_hr_[] = {0x5a,0xb4,0x5a,0xb4};
unsigned char _pos_vt_[] = {0x00,0x00,0x3c,0x3c};
unsigned char _pos_vb_[] = {0x3c,0x3c,0x78,0x78};
if(channel > 5)
return FALSE;//FAIL;
WriteAsicByte(DVC_PG1,0x10,0x80);
WriteAsicByte(DVC_PG1,0x18,0x81);
WriteAsicByte(DVC_PG1,0x20,0x82);
WriteAsicByte(DVC_PG1,0x28,0x83);
switch(channel) {
case 1 :
WriteAsicByte(DVC_PG0,0x02,0x18);
WriteAsicByte(DVC_PG0,0x03,0xd0);
WriteAsicByte(DVC_PG0,0x04,0x06);
WriteAsicByte(DVC_PG0,0x05,0xf0);
WriteAsicByte(DVC_PG0,0x06,0x08);
WriteAsicByte(DVC_PG0,0x80,0x01);
WriteAsicByte(DVC_PG0,0x81,0xff);
WriteAsicByte(DVC_PG0,0x82,0xff);
WriteAsicByte(DVC_PG0,0x83,0xff);
WriteAsicByte(DVC_PG0,0x84,0xff);
WriteAsicByte(DVC_PG0,0x85,0x00);
WriteAsicByte(DVC_PG0,0x86,0xff);
WriteAsicByte(DVC_PG0,0x87,0xff);
WriteAsicByte(DVC_PG0,0x88,0xff);
WriteAsicByte(DVC_PG0,0x89,0xff);
WriteAsicByte(DVC_PG0,0x8a,0x00);
WriteAsicByte(DVC_PG1,0x30,0x00);
WriteAsicByte(DVC_PG1,0x31,180);
WriteAsicByte(DVC_PG1,0x32,0x00);
WriteAsicByte(DVC_PG1,0x33,120);
WriteAsicByte(DVC_PG1,0x10,0xc0);
return TRUE;
//break;
case 2 :
WriteAsicByte(DVC_PG0,0x12,0x18);
WriteAsicByte(DVC_PG0,0x13,0xd0);
WriteAsicByte(DVC_PG0,0x14,0x06);
WriteAsicByte(DVC_PG0,0x15,0xf0);
WriteAsicByte(DVC_PG0,0x16,0x08);
WriteAsicByte(DVC_PG0,0x90,0x41);
WriteAsicByte(DVC_PG0,0x91,0xff);
WriteAsicByte(DVC_PG0,0x92,0xff);
WriteAsicByte(DVC_PG0,0x93,0xff);
WriteAsicByte(DVC_PG0,0x94,0xff);
WriteAsicByte(DVC_PG0,0x95,0x00);
WriteAsicByte(DVC_PG0,0x96,0xff);
WriteAsicByte(DVC_PG0,0x97,0xff);
WriteAsicByte(DVC_PG0,0x98,0xff);
WriteAsicByte(DVC_PG0,0x99,0xff);
WriteAsicByte(DVC_PG0,0x9a,0x00);
WriteAsicByte(DVC_PG1,0x34,0x00);
WriteAsicByte(DVC_PG1,0x35,180);
WriteAsicByte(DVC_PG1,0x36,0x00);
WriteAsicByte(DVC_PG1,0x37,120);
WriteAsicByte(DVC_PG1,0x18,0xc1);
return TRUE;
//break;
case 3 :
WriteAsicByte(DVC_PG0,0x22,0x18);
WriteAsicByte(DVC_PG0,0x23,0xd0);
WriteAsicByte(DVC_PG0,0x24,0x06);
WriteAsicByte(DVC_PG0,0x25,0xf0);
WriteAsicByte(DVC_PG0,0x26,0x08);
WriteAsicByte(DVC_PG0,0xa0,0x81);
WriteAsicByte(DVC_PG0,0xa1,0xff);
WriteAsicByte(DVC_PG0,0xa2,0xff);
WriteAsicByte(DVC_PG0,0xa3,0xff);
WriteAsicByte(DVC_PG0,0xa4,0xff);
WriteAsicByte(DVC_PG0,0xa5,0x00);
WriteAsicByte(DVC_PG0,0xa6,0xff);
WriteAsicByte(DVC_PG0,0xa7,0xff);
WriteAsicByte(DVC_PG0,0xa8,0xff);
WriteAsicByte(DVC_PG0,0xa9,0xff);
WriteAsicByte(DVC_PG0,0xaa,0x00);
WriteAsicByte(DVC_PG1,0x38,0x00);
WriteAsicByte(DVC_PG1,0x39,180);
WriteAsicByte(DVC_PG1,0x3a,0x00);
WriteAsicByte(DVC_PG1,0x3b,120);
WriteAsicByte(DVC_PG1,0x20,0xc2);
return TRUE;
//reak;
case 4 :
WriteAsicByte(DVC_PG0,0x32,0x18);
WriteAsicByte(DVC_PG0,0x33,0xd0);
WriteAsicByte(DVC_PG0,0x34,0x06);
WriteAsicByte(DVC_PG0,0x35,0xf0);
WriteAsicByte(DVC_PG0,0x36,0x08);
WriteAsicByte(DVC_PG0,0xb0,0xc1);
WriteAsicByte(DVC_PG0,0xb1,0xff);
WriteAsicByte(DVC_PG0,0xb2,0xff);
WriteAsicByte(DVC_PG0,0xb3,0xff);
WriteAsicByte(DVC_PG0,0xb4,0xff);
WriteAsicByte(DVC_PG0,0xb5,0x00);
WriteAsicByte(DVC_PG0,0xb6,0xff);
WriteAsicByte(DVC_PG0,0xb7,0xff);
WriteAsicByte(DVC_PG0,0xb8,0xff);
WriteAsicByte(DVC_PG0,0xb9,0xff);
WriteAsicByte(DVC_PG0,0xba,0x00);
WriteAsicByte(DVC_PG1,0x3c,0x00);
WriteAsicByte(DVC_PG1,0x3d,180);
WriteAsicByte(DVC_PG1,0x3e,0x00);
WriteAsicByte(DVC_PG1,0x3f,120);
WriteAsicByte(DVC_PG1,0x28,0xc3);
return TRUE;
//break;
case 5 :
for(_t1_ = 0 ; _t1_ < 4 ;_t1_++) {
WriteAsicByte(DVC_PG0,0x02+(0x10*(_t1_)),0x18);
WriteAsicByte(DVC_PG0,0x03+(0x10*(_t1_)),0xd0);
WriteAsicByte(DVC_PG0,0x04+(0x10*(_t1_)),0x06);
WriteAsicByte(DVC_PG0,0x05+(0x10*(_t1_)),0xf0);
WriteAsicByte(DVC_PG0,0x06+(0x10*(_t1_)),0x08);
WriteAsicByte(DVC_PG0,0x80+(0x10*(_t1_)),_t1_<<6);
WriteAsicByte(DVC_PG0,0x81+(0x10*(_t1_)),0x7f);
WriteAsicByte(DVC_PG0,0x82+(0x10*(_t1_)),0xff);
WriteAsicByte(DVC_PG0,0x83+(0x10*(_t1_)),0x7f);
WriteAsicByte(DVC_PG0,0x84+(0x10*(_t1_)),0xff);
WriteAsicByte(DVC_PG0,0x85+(0x10*(_t1_)),0x00);
WriteAsicByte(DVC_PG0,0x86+(0x10*(_t1_)),0xff);
WriteAsicByte(DVC_PG0,0x87+(0x10*(_t1_)),0xff);
WriteAsicByte(DVC_PG0,0x88+(0x10*(_t1_)),0xff);
WriteAsicByte(DVC_PG0,0x89+(0x10*(_t1_)),0xff);
WriteAsicByte(DVC_PG0,0x8a+(0x10*(_t1_)),(_t1_<<6)|0x31);
WriteAsicByte(DVC_PG1,0x30+(0x04*(_t1_)),_pos_hl_[_t1_]);
WriteAsicByte(DVC_PG1,0x31+(0x04*(_t1_)),_pos_hr_[_t1_]);
WriteAsicByte(DVC_PG1,0x32+(0x04*(_t1_)),_pos_vt_[_t1_]);
WriteAsicByte(DVC_PG1,0x33+(0x04*(_t1_)),_pos_vb_[_t1_]);
}
return TRUE;
//break;
default :
return FALSE;//FAIL;FAIL;
//break;
}
}
//------------------------------------------------------------------------------------------------
BOOL Ap_getchannel_ntsc_pal(char channel,char* flag)
{
char _rd_,_t1_;
if(channel > 4)
return FALSE;//FAIL;
ReadAsicByte(DVC_PG0, (0x00+(0x10*(channel-1))), (unsigned char *)&_rd_ );
_t1_ = _rd_ >> 1 &0x01;
*flag = _rd_;
if(_t1_ == 0)
return FALSE;//FAIL;
else {return TRUE;}
}
//------------------------------------------------------------------------------------------------
BOOL Ap_change_DetectQuality(char channel,char md_tmpsens,char md_spsens) //--2x80~2x85 Motion Detect Register
{
unsigned char _t1_;
if(channel > 4)
return FALSE;//FAIL;FAIL;}
_t1_ = md_tmpsens<<4 + md_spsens;
WriteAsicByte(DVC_PG2+0x20*(channel-1),0x85,_t1_);
return TRUE;
}
//------------------------------------------------------------------------------------------------
BOOL Ap_MotionDetectOSDAreaSetingInit(void)
{
WriteAsicByte(DVC_PG2,0x38,0x0a);
WriteAsicByteOSD(0x00,OSD_MIX|OSD_COL_GRN); //--OSD COLOR
WriteAsicByteOSD(0x01,OSD_MIX|OSD_COL_GRN);
WriteAsicByteOSD(0x02,OSD_MIX|OSD_COL_GRN);
WriteAsicByteOSD(0x03,OSD_MIX|OSD_COL_GRN);
WriteAsicByteOSD(0x04,0x80); //--WRITER TO BUFFER
WriteAsicByteOSD(0x07,0x00);
WriteAsicByteOSD(0x08,0xef);
WriteAsicByteOSD(0x09,0x00);
WriteAsicByteOSD(0x05,0x1b);
WriteAsicByteOSD(0x06,0x1b);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
WriteAsicByteOSD(0x05,0x3d);
WriteAsicByteOSD(0x06,0x3d);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
WriteAsicByteOSD(0x05,0x78);
WriteAsicByteOSD(0x06,0x78);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
WriteAsicByteOSD(0x05,0x96);
WriteAsicByteOSD(0x06,0x96);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
WriteAsicByteOSD(0x05,0x00);
WriteAsicByteOSD(0x06,0xb3);
WriteAsicByteOSD(0x07,0x28);
WriteAsicByteOSD(0x08,0x28);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
WriteAsicByteOSD(0x07,0x50);
WriteAsicByteOSD(0x08,0x50);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
WriteAsicByteOSD(0x07,0xa0);
WriteAsicByteOSD(0x08,0xa0);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
WriteAsicByteOSD(0x07,0xc8);
WriteAsicByteOSD(0x08,0xc8);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7);
return TRUE;
}
//------------------------------------------------------------------------------------------------
BOOL Ap_MotionDetectOSDAreaSetingOFF(void)
{
unsigned char _pos_st_x,_pos_end_x,_t2_,_t3_;
WriteAsicByteOSD(0x00,OSD_MIX|OSD_CLR);
WriteAsicByteOSD(0x01,OSD_MIX|OSD_CLR);
WriteAsicByteOSD(0x02,OSD_MIX|OSD_CLR);
WriteAsicByteOSD(0x03,OSD_MIX|OSD_CLR);
WriteAsicByteOSD(0x04,0x80);
WriteAsicByteOSD(0x07,0x00);
WriteAsicByteOSD(0x08,0xef);
WriteAsicByteOSD(0x09,0x00);
_pos_st_x = 0x00;
_pos_end_x = 0xb3;
_t2_ = (_pos_end_x - _pos_st_x) >> 4;
_t3_ = (_pos_end_x - _pos_st_x) & 0xff;
if (_t2_ != 0) {
WriteAsicByteOSD(0x05,_pos_st_x);
WriteAsicByteOSD(0x06,_pos_st_x+(_t2_<<4));
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7){}
}
if (_t3_ != 0){
WriteAsicByteOSD(0x05,_pos_st_x+(_t2_<<4));
WriteAsicByteOSD(0x06,_pos_end_x);
WriteAsicByteOSD(0x0a,0xc0);
while(ReadAsicOSDMemWr()&BIT7){}
}
return TRUE;
}
//------------------------------------------------------------------------------------------------
//-- Motion detect channel 1 - 36 postion & motion register table
//------------------------------------------------------------------------------------------------
unsigned char _Ap_channel_[] = {
0x00,0x1a,0x00,0x27,0x87, //-- channel 1 Left ; Right ; Top ; Botton ; Motion Register.
0x1c,0x3c,0x00,0x27,0x87, //-- channel 2
0x3e,0x59,0x00,0x27,0x86, //-- channel 3
0x5a,0x77,0x00,0x27,0xa7, //-- channel 4
0x79,0x95,0x00,0x27,0xa7, //-- channel 5
0x97,0xb3,0x00,0x27,0xa6, //-- channel 6
0x00,0x1a,0x29,0x4f,0x8f, //-- channel 7
0x1c,0x3c,0x29,0x4f,0x8f, //-- channel 8
0x3e,0x59,0x29,0x4f,0x8e, //-- channel 9
0x5a,0x77,0x29,0x4f,0xaf, //-- channel 10
0x79,0x95,0x29,0x4f,0xaf, //-- channel 11
0x97,0xb3,0x29,0x4f,0xae, //-- channel 12
0x00,0x1a,0x51,0x77,0x97, //-- channel 13
0x1c,0x3c,0x51,0x77,0x97, //-- channel 14
0x3e,0x59,0x51,0x77,0x96, //-- channel 15
0x5a,0x77,0x51,0x77,0xb7, //-- channel 16
0x79,0x95,0x51,0x77,0xb7, //-- channel 17
0x97,0xb3,0x51,0x77,0xb6, //-- channel 18
0x00,0x1a,0x78,0x9f,0xc7, //-- channel 19
0x1c,0x3c,0x78,0x9f,0xc7, //-- channel 20
0x3e,0x59,0x78,0x9f,0xc6, //-- channel 21
0x5a,0x77,0x78,0x9f,0xe7, //-- channel 22
0x79,0x95,0x78,0x9f,0xe7, //-- channel 23
0x97,0xb3,0x78,0x9f,0xe6, //-- channel 24
0x00,0x1a,0xa1,0xc7,0xcf, //-- channel 25
0x1c,0x3c,0xa1,0xc7,0xcf, //-- channel 26
0x3e,0x59,0xa1,0xc7,0xce, //-- channel 27
0x5a,0x77,0xa1,0xc7,0xef, //-- channel 28
0x79,0x95,0xa1,0xc7,0xef, //-- channel 29
0x97,0xb3,0xa1,0xc7,0xee, //-- channel 30
0x00,0x1a,0xc9,0xef,0xd7, //-- channel 31
0x1c,0x3c,0xc9,0xef,0xd7, //-- channel 32
0x3e,0x59,0xc9,0xef,0xd6, //-- channel 33
0x5a,0x77,0xc9,0xef,0xf7, //-- channel 34
0x79,0x95,0xc9,0xef,0xf7, //-- channel 35
0x97,0xb3,0xc9,0xef,0xf6 //-- channel 36
};
//------------------------------------------------------------------------------------------------
BOOL Ap_Motion_Set(char channel, BOOL FLAG)
{
unsigned char _rw_value_,_t1_,_t2_;
unsigned char _md_;
if(channel > 36)
return FALSE;//FAIL;FAIL;}
_t1_ = (channel-1) * 5;
_md_ = _Ap_channel_[_t1_+4];//Ap_channel_[_t1_+4];
_t2_ = channel % 3;
if( _t2_ == 1 ){ //--Left
for(_t1_ = 0 ; _t1_ < 4 ; _t1_++) {
ReadAsicByte(DVC_PG2,_md_+(0x02*_t1_),(unsigned char *)&_rw_value_);
if(FLAG == TRUE) {_rw_value_ &= 0xe0;}
else {_rw_value_ |= 0x1f;}
WriteAsicByte(DVC_PG2,_md_+(0x02*_t1_),_rw_value_);
}
}
else if(_t2_ == 2) { //--Center
for(_t1_ = 0 ; _t1_ < 4 ; _t1_++) {
ReadAsicByte(DVC_PG2,_md_+(0x02*_t1_),(unsigned char *)&_rw_value_);
if(FLAG == TRUE) {_rw_value_ &= 0x1f;}
else {_rw_value_ |= 0xe0;}
WriteAsicByte(DVC_PG2,_md_+(0x02*_t1_),_rw_value_);
}
for(_t1_ = 0 ; _t1_ < 4 ; _t1_++) {
ReadAsicByte(DVC_PG2,_md_+(0x02*_t1_)-1,(unsigned char *)&_rw_value_);
if(FLAG == TRUE) {_rw_value_ &= 0xf8;}
else {_rw_value_ |= 0x07;}
WriteAsicByte(DVC_PG2,_md_+(0x02*_t1_)-1,_rw_value_);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -