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

📄 p_eyeview_d.c

📁 这是监视器行业常见的键盘与球机通讯协议的C语言源代码
💻 C
字号:
#include "config.h"

unsigned char data pp = 0; // for seq point
bit start_set_fg = 0;

unsigned char data b01_data1,b01_data2,b01_data3,b01_data6,b01_data7,b01_data8,b01_data9,b01_datax,data_dir2;

unsigned char bdata b01_data4;
//sbit sense_fg1       = b01_data3^7;
//sbit swing_fg1       = b01_data3^4;
//sbit power_fg       = data3^3;
sbit iris_open_fg2 	 = b01_data4^4;
sbit iris_close_fg2  = b01_data4^3;
sbit focus_near_fg2  = b01_data4^1;
sbit focus_far_fg2 	 = b01_data4^0;

unsigned char bdata b01_data5;
sbit zoom_wide_fg2  = b01_data5^6;
sbit zoom_tele_fg2  = b01_data5^5;
sbit down_fg2       = b01_data5^4;
sbit up_fg2         = b01_data5^3;
sbit left_fg2       = b01_data5^2;
sbit right_fg2      = b01_data5^1;
//sbit ext_fg2        = b01_data5^0;

bit ptn_stop_fg2;

void (code *ext1)(unsigned char rc);
void b01_word1(unsigned char rc);
void b01_word2(unsigned char rc);
void b01_word3(unsigned char rc);
void b01_word4(unsigned char rc);
void b01_word5(unsigned char rc);
void b01_word6(unsigned char rc);
void b01_word7(unsigned char rc);
void b01_word8(unsigned char rc);
void b01_word9(unsigned char rc);
void b01_word10(unsigned char rc);
void b01_word11(unsigned char rc);
void b01_word11x(unsigned char rc);
void b01_word12(unsigned char rc);
void b01_word12x(unsigned char rc);
void b01_word1s(unsigned char rc);


void b01_word1(unsigned char rc) using 1
{
	if (rc == 0xa0) rr = b01_word2;
}

void b01_word2(unsigned char rc) using 1
{
	if (rc != id ) 
		rr = b01_word1;
	else
	{
		rr = b01_word3;
		b01_datax = rc;
	}
}

void b01_word3(unsigned char rc) using 1
{
	b01_datax += rc;
	rr = b01_word4;
}

void b01_word4(unsigned char rc) using 1
{
	b01_data4 = rc;
	b01_datax += rc;
	rr = b01_word5;
}

void b01_word5(unsigned char rc) using 1
{
	b01_data5 = rc;
	b01_datax += rc;
	if ((b01_data5 & 0x01) == 0x01)
	{
		if (b01_data5 == 0x23)
		    ext1 = b01_word1s;
		else if (b01_data4)
			ext1 = b01_word12x;
		else
		    ext1 = b01_word11x;
	}
	else
	{
		ext1 = b01_word11;
	}
	rr = b01_word6;
}
void b01_word6(unsigned char rc) using 1
{
	b01_data6 = rc;
	b01_datax += rc;
	rr = b01_word7;
}

void b01_word7(unsigned char rc) using 1
{
	b01_data7 = rc;
	b01_datax += rc;
	rr = b01_word8;
}

void b01_word8(unsigned char rc) using 1
{
	b01_data8 = rc;
	b01_datax += rc;
	rr = b01_word9;
}

void b01_word9(unsigned char rc) using 1
{
	b01_data9 = rc;
	b01_datax += rc;
	rr = b01_word10;
}

void b01_word10(unsigned char rc) using 1
{
	if (rc != 0xaf) 
		rr = b01_word1;
	else
	{
		b01_datax = ~b01_datax;
		rr = ext1;//word11;
	}
}

void b01_word11(unsigned char rc) using 1
{
	rr = b01_word1;

	if (rc == b01_datax)
 	{
		if (iris_close_fg2)
			iris_close_fg = 1;
		if (iris_open_fg2)
			iris_open_fg = 1;
		if (focus_near_fg2)
		{
			focu_near_fg = 1;
			focus_need_stop = 1;
		}
		if (focus_far_fg2)
		{
			focu_far_fg = 1;
			focus_need_stop = 1;
		}
 	    if (zoom_wide_fg2)
		{
			zoom_wide_fg = 1;
			zoom_need_stop = 1;
		}
		if (zoom_tele_fg2)
		{
			zoom_tele_fg = 1;
			zoom_need_stop = 1;
		}
		if (down_fg2||up_fg2||left_fg2||right_fg2)
 	    {
			data_dir2 = b01_data5 & 0x1f;
			switch(data_dir2)
			{
				case 0x02:	//pan turn right
				case 0x04:	//pan turn left
				case 0x10:	//titl down
				case 0x08:	//titl up    						
				case 0x0c:	//pan turn left and titl up								
				case 0x14:	//pan turn right and titl down							
				case 0x0a:	//pan turn right and titl up					
				case 0x12:	//pan turn left and titl down
					cont_fg = 1;
					ptn_stop_fg2 = 1;
					run_swing_fg = 0;
					run_swing2_fg = 0;
					run_seq2_fg = 0;
					seq[12] = data_dir2; 
					seq[13] = b01_data6;
					seq[14] = b01_data7;
					break;
			}
		}
		if ((!zoom_wide_fg2) && (!zoom_tele_fg2) && (!down_fg2) && (!up_fg2) && (!left_fg2) && (!right_fg2))
		{
			if((zoom_need_stop) && (ptn_stop_fg2))
			{
				stop_all_fg = 1;
				zoom_need_stop = 0;
				ptn_stop_fg2 = 0;
			}
		} 
		if ((!focus_near_fg2) && (!focus_far_fg2))
		{
			if(_testbit_(focus_need_stop))
				focu_stop_fg = 1;
		}
		if ((!zoom_wide_fg2) && (!zoom_tele_fg2))
		{
			if(_testbit_(zoom_need_stop))
				zoom_stop_fg = 1;
		}
		if ((!down_fg2) && (!up_fg2) && (!left_fg2) && (!right_fg2))
		{
			if (_testbit_(ptn_stop_fg2))
			{
				cont_fg = 1;
				seq[12] = 0;
			}		
		}
		SIGNAL = 0;
	}
}

void b01_word11x(unsigned char rc) using 1
{
	rr = b01_word1;

	if (rc == b01_datax)
	{
		{
			run_swing_fg = 0;
			run_seq_fg = 0;
			switch (b01_data5)
			{
				case 03:
					if (data6 == 0x33)
					{
						set_pre_fg = 1;
						seq[15] = F_SCAN_START;					
						seq[17] = F_SCAN_START;			//start point
					}
					else
					{
						set_pre_fg = 1;							
						seq[15] = data6+1;		  //preset_no
					}
					break;
				case 0x05:
					del_pre_fg = 1;
					seq[15] = data6 + 1;
					break;
				case 07:
					call_pre_fg = 1;
					seq[15] = b01_data6+1;
					break;
				case 0x11:
					run_swing_fg = 1;
					seq[17] = b01_data7+1;		 //first_no
					seq[18] = b01_data8+1;  		 // second no
					break;
				case 0x1b:
					set_pre_fg = 1;
					seq[15] = F_SCAN_START;					
					seq[17] = F_SCAN_START;			//start point
					break;
				case 0x1f:
					set_pre_fg = 1;
					seq[15] = F_SCAN_END;
					seq[18] = F_SCAN_END;			//end point
					run_swing_fg = 1;
					break;
				case 0x21:
					run_seq3_fg = 1;
					seq[48] = b01_data6+1;	   //seq_no
					break;
				case 0x23:	
					if (b01_data7 == 0x80)
					{
						seq[48] = b01_data6+1;
						start_set_fg = 1;
						pp = 0;
					}
					else if (b01_data7 == 0x40)
					{
						set_seq_fg = 1;
						if (pp != 48) seq[pp] = 0;
						pp = 0;
					}
					else
					{
						if (_testbit_(start_set_fg)) pp = 0;
						seq[pp] = b01_data7+1;                                
						pp++;
						seq[pp] = b01_data8;
						pp++;
						seq[pp] = b01_data9;
						pp++;
					}
					break;
					/*
				case 0x23:
					switch (data7)
					{
						case 0x80:
							seq[48] = data6+1;
							pp = 0;
							break;
						case 0x40:
							set_seq_fg = 1;
							if (pp != 48) seq[pp] = 0;
							pp = 0;
							break;
						default:
							seq[pp] = data7+1;                                
							pp++;
							seq[pp] = data8;
							pp++;
							seq[pp] = data9;
							pp++;
							break;
					}
					break;
					*/
				case 0x43:
					if (b01_data6)
						disp_on_fg = 1;
					else
						disp_off_fg = 1;
					break;
				case 0x6f:
					if (b01_data6)
						power_on_fg = 1;
					else
						power_off_fg = 1;
					break;
			}
		}
		SIGNAL = 0;
	}
}

void b01_word1s(unsigned char rc) using 1
{
	rr = b01_word1;

	if (rc == b01_datax)
	{
				switch (b01_data7)
					{
						case 0x80:
							//seq[48] = data6+1;
							pp = 0;
							break;
						case 0x40:
							set_seq_fg = 1;
							if (pp != 48) seq[pp] = 0;
							pp = 0;
							break;
						default:
							seq[pp] = b01_data7+1;                                
							pp++;
							seq[pp] = b01_data8;
							pp++;
							seq[pp] = b01_data9;
							pp++;
							break;
					}
		SIGNAL = 0;
	}
}

void b01_word12x(unsigned char rc)	using 1
{
	rr = b01_word1;

	if (rc == b01_datax)
	{
		//if (data4)
		{
			addon_fg = 1;
			seq[10] = b01_data6;
			seq[11] = b01_data7;
		}
		SIGNAL = 0;
	}
}

⌨️ 快捷键说明

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