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

📄 ap_tw2835.c

📁 tecwell 2835 motion function 初始化及設定值 4channel 輸入 motion ebable
💻 C
📖 第 1 页 / 共 4 页
字号:
	WriteAsicByte(DVC_PG1,0x59,_t1_);							//... 
	WriteAsicByte(DVC_PG1,0x5a,BIT7|_t1_);							//... 
	}
#endif

//------------------------------------------------------------------------------------------------
	/*initPG2*/
//------------------------------------------------------------------------------------------------
	InitOSDCol();
	WriteAsicByte(DVC_PG2,0x0f,0x08);
	Ap_MotionDetectOSDAreaSetingOFF();
	Ap_MotionDetectOSDAreaSetingOFF();
	WriteAsicByte(DVC_PG2,0x10,0xf0);
	//... other ( mouse, single box, 2d box, mask ..)
	WriteAsicTable(DVC_PG2,0x10,tbl_pg2_mse_box,80);
	WriteAsicTable(DVC_PG2,0x60,tbl_ntsc_pg2_2dbox,32);	
	for(_t1_=0;_t1_<4;_t1_++) {
		WriteAsicTable(DVC_PG2,0x80+0x20*_t1_,tbl_ntsc_pg2_mtn1,32);
	}
//------------------------------------------------------------------------------------------------
//--	IRQENA register setting(Interrupt)
//------------------------------------------------------------------------------------------------

#if 1
	WriteAsicByte(DVC_PG1,0x76,0x82);//	0x82
	WriteAsicByte(DVC_PG1,0x77,0x00);
	WriteAsicByte(DVC_PG1,0x78,0x00);
	WriteAsicByte(DVC_PG1,0x79,0x0f);
	WriteAsicByte(DVC_PG1,0x7a,0x00);
	WriteAsicByte(DVC_PG1,0x7b,0x00);
	WriteAsicByte(DVC_PG1,0x76,0x02); 
#endif

//------------------------------------------------------------------------------------------------
//--	Motion detect quality setting
//------------------------------------------------------------------------------------------------
	for(_t1_=0;_t1_<4;_t1_++){
		WriteAsicByte(DVC_PG0,0x0d+0x10*_t1_,0x00);
		WriteAsicByte(DVC_PG2,0x80+0x20*_t1_,0x00);
		WriteAsicByte(DVC_PG2,0x81+0x20*_t1_,0x00);
		WriteAsicByte(DVC_PG2,0x82+0x20*_t1_,0x80);
		WriteAsicByte(DVC_PG2,0x83+0x20*_t1_,0x00);
		WriteAsicByte(DVC_PG2,0x84+0x20*_t1_,0x07);
		WriteAsicByte(DVC_PG2,0x85+0x20*_t1_,0xf4);	
	} 


	//WriteAsicByte(DVC_PG1,0xa2,0x98);//BECK TEST	
	_channel = 17;
	_sel_channel = 5;
//------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------	
#if 0

	while(1){
		if(P1_6 == 0) { 
			_channel_set = 0; 
			_t1_ = Ap_getTriggerchannel(_channel_set);
			if(_t1_ == TRUE) { 
				_t4_ = *_channel_set; 
				if(_t4_ == 0x01) {_t4_ = 1;} 
				else if(_t4_ == 0x02) {_t4_ = 2;}
				else if(_t4_ == 0x04) {_t4_ = 3;}
				else if(_t4_ == 0x08) {_t4_ = 4;}
				Ap_channel_select(_t4_);
				_timer_delay = 0;
				//_timer_delay2 = 0;
				//while(1){if(_timer_delay2 == 3)break;}
				//_t1_ = Ap_channel_select(5);
   			}
		}

		if(P2_6 == 0){ 
			Ap_MotionDetectOSDAreaSetingInit();
			for(_t4_ = 1 ; _t4_ < 37 ; _t4_++) {
				_t1_ = (_t4_-1)/8;
				_t2_ = (_t4_-1)%8; 
				switch(_t1_){
					case 0: _t3_ = md_byte_1; break;
					case 1: _t3_ = md_byte_2; break;
					case 2: _t3_ = md_byte_3; break;
					case 3: _t3_ = md_byte_4; break;
					case 4: _t3_ = md_byte_5; break;
				}
				switch(_t2_){
					case 0: _osd_md_flag = _t3_ & 0x01; break;
					case 1: _osd_md_flag = (_t3_>>1) & 0x01; break; 
					case 2: _osd_md_flag = (_t3_>>2) & 0x01; break; 
					case 3: _osd_md_flag = (_t3_>>3) & 0x01; break; 
					case 4: _osd_md_flag = (_t3_>>4) & 0x01; break; 
					case 5: _osd_md_flag = (_t3_>>5) & 0x01; break; 
					case 6: _osd_md_flag = (_t3_>>6) & 0x01; break; 
					case 7: _osd_md_flag = (_t3_>>7) & 0x01; break;
				}
				if(_osd_md_flag == 0){Ap_Draw_Index(_t4_,TRUE);}
			}
			_osd_flag=FALSE; 
			_timer_osd_sel = 0;  
			while(1) {
				
				if(_timer_osd_sel <= 3){
					_timer_osd_sel = 0;
					Ap_Draw_Index(_channel,_osd_flag);
					_osd_flag = ~_osd_flag;
				}

				if(P2_1 == 0) { 
					_channel++;
					if( _channel == 37){_channel=36;} 
					else {
						_t1_ = (_channel-2)/8;
						_t2_ = (_channel-2)%8;
						switch(_t1_){
							case 0: _t3_ = md_byte_1; break;
							case 1: _t3_ = md_byte_2; break;
							case 2: _t3_ = md_byte_3; break;
							case 3: _t3_ = md_byte_4; break;
							case 4: _t3_ = md_byte_5; break;
						}
						switch(_t2_){
							case 0: _osd_md_flag = _t3_ & 0x01; break;
							case 1: _osd_md_flag = (_t3_>>1) & 0x01; break;
							case 2: _osd_md_flag = (_t3_>>2) & 0x01; break;
							case 3: _osd_md_flag = (_t3_>>3) & 0x01; break;
							case 4: _osd_md_flag = (_t3_>>4) & 0x01; break;
							case 5: _osd_md_flag = (_t3_>>5) & 0x01; break;
							case 6: _osd_md_flag = (_t3_>>6) & 0x01; break;
							case 7: _osd_md_flag = (_t3_>>7) & 0x01; break;	
						}
						if(_osd_md_flag == 0){Ap_Draw_Index(_channel-1,TRUE);} 
						else {Ap_Draw_Index(_channel-1,FAIL);} 
					}
					//_timer_delay2 = 0;
					//while(1){if(_timer_delay2 == 1)break;}
				}
				if(P2_2 == 0) {
					if( _channel != 1){_channel--;} 
					_t1_ = (_channel)/8;
					_t2_ = (_channel)%8;
					switch(_t1_){
						case 0: _t3_ = md_byte_1; break;
						case 1: _t3_ = md_byte_2; break;
						case 2: _t3_ = md_byte_3; break;
						case 3: _t3_ = md_byte_4; break;
						case 4: _t3_ = md_byte_5; break;
					}
					switch(_t2_){
						case 0: _osd_md_flag = _t3_ & 0x01; break;
						case 1: _osd_md_flag = (_t3_>>1) & 0x01; break;
						case 2: _osd_md_flag = (_t3_>>2) & 0x01; break;
						case 3: _osd_md_flag = (_t3_>>3) & 0x01; break;
						case 4: _osd_md_flag = (_t3_>>4) & 0x01; break;
						case 5: _osd_md_flag = (_t3_>>5) & 0x01; break;
						case 6: _osd_md_flag = (_t3_>>6) & 0x01; break;
						case 7: _osd_md_flag = (_t3_>>7) & 0x01; break;	
					}
					if(_osd_md_flag == 0){Ap_Draw_Index(_channel+1,TRUE);}
					else {Ap_Draw_Index(_channel+1,FAIL);}
					//_timer_delay2 = 0;
					//while(1){if(_timer_delay2 == 1)break;}
				}
				if(P2_3 == 0){ 
					_t1_ = (_channel-1)/8;
					_t2_ = (_channel-1)%8;
					switch(_t1_){
						case 0: _t3_ = md_byte_1; break;
						case 1: _t3_ = md_byte_2; break;
						case 2: _t3_ = md_byte_3; break;
						case 3: _t3_ = md_byte_4; break;
						case 4: _t3_ = md_byte_5; break;
					}
					switch(_t2_){
						case 0: _t3_ &= 0xfe; break;
						case 1: _t3_ &= 0xfd; break;
						case 2: _t3_ &= 0xfb; break;
						case 3: _t3_ &= 0xf7; break;
						case 4: _t3_ &= 0xef; break;
						case 5: _t3_ &= 0xdf; break;
						case 6: _t3_ &= 0xbf; break;
						case 7: _t3_ &= 0x7f; break;
					}
					switch(_t1_){
						case 0: md_byte_1 = _t3_; break;
						case 1: md_byte_2 = _t3_; break;
						case 2: md_byte_3 = _t3_; break;
						case 3: md_byte_4 = _t3_; break;
						case 4: md_byte_5 = _t3_; break;
					}
					//_timer_delay2 = 0;
					//while(1){if(_timer_delay2 == 1)break;}
				}
				if(P2_4 == 0){ 
					_t1_ = (_channel-1)/8;
					_t2_ = (_channel-1)%8;
					switch(_t1_){
						case 0: _t3_ = md_byte_1; break;
						case 1: _t3_ = md_byte_2; break;
						case 2: _t3_ = md_byte_3; break;
						case 3: _t3_ = md_byte_4; break;
						case 4: _t3_ = md_byte_5; break;
					}
					switch(_t2_){
						case 0: _t3_ |= 0x01; break;
						case 1: _t3_ |= 0x02; break;
						case 2: _t3_ |= 0x04; break;
						case 3: _t3_ |= 0x08; break;
						case 4: _t3_ |= 0x10; break;
						case 5: _t3_ |= 0x20; break;
						case 6: _t3_ |= 0x40; break;
						case 7: _t3_ |= 0x80; break;
					}
					switch(_t1_){
						case 0: md_byte_1 = _t3_; break;
						case 1: md_byte_2 = _t3_; break;
						case 2: md_byte_3 = _t3_; break;
						case 3: md_byte_4 = _t3_; break;
						case 4: md_byte_5 = _t3_; break;
					}
					//_timer_delay2 = 0;
					//while(1){if(_timer_delay2 == 1)break;}
				}
				if(P2_5 == 0){
					for(_t4_ = 1 ; _t4_ < 37 ; _t4_++) {
						_t1_ = (_t4_-1)/8;
						_t2_ = (_t4_-1)%8;
						switch(_t1_){
							case 0: _t3_ = md_byte_1; break;
							case 1: _t3_ = md_byte_2; break;
							case 2: _t3_ = md_byte_3; break;
							case 3: _t3_ = md_byte_4; break;
							case 4: _t3_ = md_byte_5; break;
						}
						switch(_t2_){
							case 0: _osd_md_flag = _t3_ & 0x01; break;
							case 1: _osd_md_flag = (_t3_>>1) & 0x01; break;
							case 2: _osd_md_flag = (_t3_>>2) & 0x01; break;
							case 3: _osd_md_flag = (_t3_>>3) & 0x01; break;
							case 4: _osd_md_flag = (_t3_>>4) & 0x01; break;
							case 5: _osd_md_flag = (_t3_>>5) & 0x01; break;
							case 6: _osd_md_flag = (_t3_>>6) & 0x01; break;
							case 7: _osd_md_flag = (_t3_>>7) & 0x01; break;	
						}
						if(_osd_md_flag == 0){Ap_Motion_Set(_t4_,TRUE);}
						else  {Ap_Motion_Set(_t4_,FAIL);}
					}
					Ap_MotionDetectOSDAreaSetingOFF(); 
					Ap_MotionDetectOSDAreaSetingOFF();					
					break;
				}
			}
		}
//------------------------------------------------------------------------------------------------
		if(P2_3 == 0) { 
			_sel_channel++;
			if(_sel_channel == 6) {_sel_channel = 1;}
			Ap_channel_select(_sel_channel);
			_timer_delay = 0;
			_timer_delay2 = 0;
			while(1){
				if(_timer_delay2 == 1)break;
			}		
		}
		if(P2_4 == 0) {
			for(_t4_ = 1 ; _t4_ < 37 ; _t4_++) {
				_t1_ = (_t4_-1)/8;
				_t2_ = (_t4_-1)%8;
				switch(_t1_){
					case 0: _t3_ = md_byte_1; break;
					case 1: _t3_ = md_byte_2; break;
					case 2: _t3_ = md_byte_3; break;
					case 3: _t3_ = md_byte_4; break;
					case 4: _t3_ = md_byte_5; break;
				}
				switch(_t2_){
					case 0: _osd_md_flag = _t3_ & 0x01; break;
					case 1: _osd_md_flag = (_t3_>>1) & 0x01; break;
					case 2: _osd_md_flag = (_t3_>>2) & 0x01; break;
					case 3: _osd_md_flag = (_t3_>>3) & 0x01; break;
					case 4: _osd_md_flag = (_t3_>>4) & 0x01; break;
					case 5: _osd_md_flag = (_t3_>>5) & 0x01; break;
					case 6: _osd_md_flag = (_t3_>>6) & 0x01; break;
					case 7: _osd_md_flag = (_t3_>>7) & 0x01; break;	
				}
				if(_osd_md_flag == 0){Ap_Draw_Index(_t4_,TRUE);}
			}
			//_timer_delay2 = 0;
			//while(1){if(_timer_delay2 == 1)break;}
		}
		if(P2_5 == 0) { 
			Ap_MotionDetectOSDAreaSetingOFF();
			Ap_MotionDetectOSDAreaSetingOFF();
			//_timer_delay2 = 0;
			//while(1){if(_timer_delay2 == 1)break;}
		}
	}
	
#endif	
	
}


void key_13(void)
{

	unsigned char _read_value_=0,kk=0;
		
	ReadAsicByte(DVC_PG1,0x5f,(unsigned char *)&_read_value_);
	kk=0;
}


void key_12(void)//clear trigger by read data
{
//	while(1){
//		if(P1_6 == 0) { 
			_channel_set = 0; 
			_t1_ = Ap_getTriggerchannel(_channel_set);
			if(_t1_ == TRUE) { 
				_t4_ = *_channel_set; 
				if(_t4_ == 0x01) {_t4_ = 1;} 
				else if(_t4_ == 0x02) {_t4_ = 2;}
				else if(_t4_ == 0x04) {_t4_ = 3;}
				else if(_t4_ == 0x08) {_t4_ = 4;}
				//Ap_channel_select(_t4_);

   			}
//		}
}



void key_2(void)//trigger by interrupt from motion detect
{
//	while(1){
//		if(P1_6 == 0) { 
			_channel_set = 0; 
			_t1_ = Ap_getTriggerchannel(_channel_set);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -