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

📄 p_star_test.c

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

/*

history;
  V 1.00 build 2003.05.24 by zh

*/

#include <REG54.H>
#include <INTRINS.H>
#include "protocol.h"
#include "kernel.h"
#include "config.h"

#ifdef TAIWAN
	bit slow_speed = 0;
#endif
//bit fast_focu = 0;

/*
	extern bit slow_speed;
	extern bit fast_focu;
	
	if (slow_speed)
	{
		if (x_level = alevel) return;

		if (alevel == 0) 
			TR1 = 0;
		else
		{
			x_level = alevel;
			t0_hi = 0x3f;
			t0_lo = 0x1a;
			TR1 = 1;
		}
		return;
	}

extern void cam_focus_auto()		
{
	unsigned char code _cam_set_af_mode[] = {0x81,0x01,0x04,0x27,0x00,0x01,0x00,0x01,0xff};
	unsigned char code _cam_af_mode[] = {0x81,0x01,0x04,0x57,0x01,0xff};
	unsigned char code _cam_af_mode2[] = {0x81,0x01,0x04,0x57,0x00,0xff};
	f_auto_fg = 1;	

	if (fast_focu)
	{
		cam_send_command(_cam_set_af_mode);
		delay_xms(20);
		cam_send_command(_cam_af_mode);
		delay_xms(20);
	}
	else
	{
		cam_send_command(_cam_af_mode2);
		delay_xms(20);
	}
	cam_send_command(cam_focus_auto_);
}
*/

unsigned char data rr = 0;
unsigned char data recv_code;

unsigned char data word4,word6,word7,word8,word9,wordx;
unsigned char bdata word5;
sbit ext_fg = word5^0;

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

extern bit do_set_addon(unsigned char no)
{
#ifdef TAIWAN
	unsigned char tmp;
	if (no == 99)
	{
		tmp = 0;
		slow_speed = 0;
		write(2046,&tmp,1);
		return 1;
	}
	else
#endif
	{
		no = no;
		return 0;
	}
}

extern bit do_call_addon(unsigned char no)
{
#ifdef TAIWAN
	unsigned char tmp;
	if (no == 99)
	{
		_nop_();
		tmp = 80;
		slow_speed = 1;
		write(2046,&tmp,1);
		return 1;
	}
	else
#endif
	{
		no = no;
		return 0;
	}
}

extern void init_serial(void)
{
	PCON = 0x00;SCON = 0x50;
	TH2 = 0xff; RCAP2H = 0xff;
#ifdef FOCS_40M
	TL2 = 0x7e; RCAP2L = 0x7e;
#else // for 22.1184
	TL2 = 0xb8; RCAP2L = 0xb8;
#endif
	T2CON = 0x34;
}

void serial_int(void) interrupt 4 using 1
{ 
	ES = 0;

	if (_testbit_(RI))
	{									
		recv_code = SBUF;
		rr++;
		switch (rr)
		{
			case 1:
				if (recv_code != 0xa0) rr = 0;
				break;
			case 2:
				if (recv_code != id) rr = 0;
				wordx = id;
				break;
			case 3:
				wordx += recv_code;
				break;
			case 4:
				word4 = recv_code;
				wordx += word4;
				break;
			case 5:
				word5 = recv_code;
				wordx += word5;
				break;
			case 6:
				word6 = recv_code;
				wordx += word6;
				break;
			case 7:
				word7 = recv_code;
				wordx += word7;
				break;
			case 8:
				word8 = recv_code;
				wordx += word8;
				break;
			case 9:
				word9 = recv_code;
				wordx += word9;
				break;
			case 10:			
				if (recv_code != 0xaf) rr = 0;
				wordx = ~wordx;
				break;
			case 11:
				if (recv_code == wordx)
 			    {
					if (ext_fg)
					{
						if (word4)
						{
							addon_fg = 1;
							seq[10] = word6;
							seq[11] = word7;
						}
						else
						{
							run_swing_fg = 0;
							run_seq_fg = 0;
							switch (word5)
							{
							case 03:
								set_pre_fg = 1;							
								seq[15] = word6+1;		  //preset_no
								break;
							case 07:
								call_pre_fg = 1;
								seq[15] = word6+1;
								break;
							case 0x11:
								run_swing_fg = 1;
								seq[17] = word7+1;		 //first_no
								seq[18] = word8+1;  		 // second no
								break;
						
							case 0x1f:
								run_swing_fg = 0;
								break;
					
							case 0x21:
								run_seq_fg = 1;
								seq[48] = word6+1;	   //seq_no
								break;
							case 0x23:	
								if (word7 == 0x80)
								{
									seq[48] = word6+1;
									start_set_fg = 1;
									pp = 0;
								}
								else if (word7 == 0x40)
								{
									set_seq_fg = 1;
									if (pp != 48) seq[pp] = 0;
									pp = 0;
								}
								else
								{
									if (_testbit_(start_set_fg)) pp = 0;
									seq[pp] = word7+1;                                
									pp++;
									seq[pp] = word8;
									pp++;
									seq[pp] = word9;
									pp++;
								}
								break;
							case 0x43:
								if (word6)
									disp_on_fg = 1;
								else
									disp_off_fg = 1;
								break;
							case 0x6f:
								if (word6)
									power_on_fg = 1;
								else
									power_off_fg = 1;
								break;
							}
						}
					}
					else
					{
						if (word4)
						{
							switch (word4)
							{	
							case 1:
								focu_far_fg = 1;
								focus_need_stop = 1;
								break;
							case 2:
								focu_near_fg = 1;
								focus_need_stop = 1;
								break;
							case 8:
								iris_close_fg = 1;
								break;
							case 16:
								iris_open_fg = 1;
								break;						
							}
						}
						else
						{
							switch (word5)
							{
							case 2:
							case 4:
							case 8:
							case 16:
							case 10:
							case 18:
							case 12:
							case 20:
								cont_fg = 1;
								run_swing_fg = 0;
								run_seq_fg = 0;
								seq[12] = word5;	//dir
								seq[13] = word6;	//x_speed
								seq[14] = word7;	//y_speed
								break;
							case 0x20:
								zoom_tele_fg = 1;
								zoom_need_stop = 1;
								break;
							case 0x40:
								zoom_wide_fg = 1;
								zoom_need_stop = 1;
								break;
							default:
								if (_testbit_(zoom_need_stop)) zoom_stop_fg = 1;
								if (_testbit_(focus_need_stop)) focu_stop_fg = 1;
								seq[12] = 0;
								cont_fg = 1;
								break;
							}
						}
					}
				}
			default:
				rr = 0;
				break;
		} // end switch
	}
	ES = 1;
}

⌨️ 快捷键说明

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