⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ap_tw2835.c

📁 tecwell 2835 motion function 初始化及設定值 4channel 輸入 motion ebable
💻 C
📖 第 1 页 / 共 4 页
字号:

#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 + -