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

📄 p_lilin_jm-2.c

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

unsigned char count = 0;
unsigned char tmp;

unsigned char data1,data2,data3,data4;
unsigned char bdata data3;
sbit data37 = data3^7;
sbit data36 = data3^6;

unsigned char x_speed,y_speed;

bit manu_need_stop = 1;



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 (RI)
	{
		RI = 0;
		tmp = SBUF;
		switch (count)
		{
           case 0:
                 if (tmp == id) 
		         count = 1;
			     else if (tmp == 0xca)
				 count = 3; 
			     else if (tmp == (id + 0x40))
				 count = 5; // for call
			     else if (tmp == (id + 0x80))
			     count = 7; // for set
			     else 
				 count = 0;
			     break;
	      case 1:
			    if (tmp == 0xca)
				count = 3;
			    else
			   {
				data2 = tmp;
				count = 2;
			   }
			   break;
		  case 2:
			   if (tmp == 0xca)
			   count = 3;
			   else
			  {
			   data3 = tmp;
			   count = 0;
			
				 switch(data2)
				 {
                   case 0x00:
				       switch(data3)
					   {
                            case 0x00:
					             iris_open_fg = 1;
						         break;
					        case 0x01:
					             iris_close_fg = 1;
						         break;
					        case 0xd0:
					             addon_fg = 1;
	  	                         seq[10] = A_FOCU;		
	  	                         seq[11] = AUTO;
						         break;
					       case 0xd4:
					             addon_fg = 1;         
	  	                         seq[10] = A_IRIS;
	  	                         seq[11] = AUTO;
					       	     break;
                           case 0xff:
						       {
				                if (_testbit_(zoom_need_stop)) 
								{
									zoom_stop_fg = 1;
									count = 9;
								}
				                else if (_testbit_(focus_need_stop))
 							    {
									focu_stop_fg = 1;
									count = 9;
								}
								else if (_testbit_(manu_need_stop))
								{
								    cont_fg = 1;
									seq[12] = 0;
							    }
				                break;
							   }   //endcase0xff
						 }  //endswithch(data3)
					 }   //endswithc(data2)
                     switch(data3)
					    {
						   case 0xff:
						       switch(data2)
							         {
				    case 0x01: 
				         cont_fg = 1;
					     run_swing2_fg = 0;
					     manu_need_stop = 1;
					     seq[12] = 2;
					     seq[13] = 0x40;
					     seq[14] = 0;
					     break;
			        case 0x02:   
				         cont_fg = 1;
                         run_swing2_fg = 0;
				         manu_need_stop = 1;
                         seq[12] = 4;
                         seq[13] = 0x40;
                         seq[14] = 0;
                         break;
			       case 0x04:  
				        cont_fg = 1;
			            run_swing2_fg = 0;
				        manu_need_stop = 1;
			            seq[12] = 8;
			            seq[13] = 0;
			            seq[14] = 0x40;
			            break;
			       case 0x08:  
				        cont_fg = 1;
			            run_swing2_fg = 0;
				        manu_need_stop = 1;
			            seq[12] = 16;
			            seq[13] = 0;
			            seq[14] = 0x40;
			            break;
                   case 0x05:  
				        cont_fg = 1;
                        run_swing2_fg = 0;
				        manu_need_stop = 1;
				        seq[12] = 10;
                        seq[13] = 0x40;
                        seq[14] = 0x40;
                        break;
                   case 0x06:  
				        cont_fg = 1;
                        run_swing2_fg = 0;
				        manu_need_stop = 1;
				        seq[12] = 12;
                        seq[13] = 0x40;
                        seq[14] = 0x40;
                        break;
			       case 0x09:    
			            cont_fg = 1;
                        run_swing2_fg = 0;
				        manu_need_stop = 1;
				        seq[12] = 18;
                        seq[13] = 0x40;
                        seq[14] = 0x40;
                        break;
			       case 0x0a:   
			            cont_fg = 1;
                        run_swing2_fg = 0;
				        manu_need_stop = 1;
				        seq[12] = 20;
                        seq[13] = 0x40;
                        seq[14] = 0x40;
                        break;
			       case 0x10:     
			            zoom_tele_fg = 1;
				        zoom_need_stop = 1;
                        break;
			       case 0x20:    
			            zoom_wide_fg = 1;
				        zoom_need_stop = 1;
				        break;
			       case 0x40:   
			            focu_far_fg = 1;
				        focus_need_stop = 1;
					    break;
			       case 0x80:   
			            focu_near_fg = 1;
				        focus_need_stop = 1;
					    break;
					 }  //endswitch(data2)
				   }    //endswitch(data3)
				   break;
			   }        //endcase2
          case 3:
			        if (tmp == 0xca) 
				        count = 3;
			        else	
				        count = 4;
			       break;
		   case 4:
			       if (tmp == 0xca)
				       count = 3;
			       else
				       count = 9;
			       break;
		   case 5:
			       if (tmp == 0xca)
				       count = 3;
			       else
			      {
				   data2 = tmp;
				   count = 6;
			      }
			       break;
		   case 6:
			       if (tmp == 0xca)
				       count = 3;
			       else
			      { 
				   call_pre_fg = 1;
                   run_swing_fg=0;
				   run_seq2_fg=0;
				   seq[15] = data2 + 1;
                   count = 0;
			      }
		         break;
		  case 7:
			     if (tmp == 0xca)
			        count = 3;
			     else
			    {
			     data2 = tmp;
			     count = 8;
			    }
		        break;
		 case 8:
			    if (tmp == 0xca)
				    count = 3;
			    else
			    {
                set_pre_fg = 1;
                run_swing_fg=0;
				run_seq2_fg=0;
				seq[15] = data2;
                count = 0;
			   }
	           break;
         case 9:
         case 10:
         case 11:
                  count++;
               break;
         default:
               count = 0;
               break;
		}   //   endcount
    }        //endif(RI)
    ES = 1;
}


bit power_fg = 1;
extern bit do_set_addon(unsigned char no)
{
//#ifndef DIS660
	switch (no)
	{
	case F_SCAN_START:   		
	case F_SCAN_END:   
		no = no;
		return 0;
	case F_SEQ_SET:
		run_seq_fg = 0;
		run_seq2_fg = 0;
		return 1;
#ifndef DIS660
	case F_CAM_RESET:			//camera reset
		addon_fg = 1;
		seq[10] = A_RESET;
		seq[11] = ON;
		return 1;
	case F_BLC_OFF:			
		addon_fg = 1;   
		seq[10] = A_BLC;
		seq[11] = OFF;
		return 1;
	case F_ZERO_OFF:			
		addon_fg = 1;
		seq[10] = A_ZERO;
		seq[11] = OFF;
		return 1;
	case F_MENU_OFF:			//diaplay off
		disp_off_fg = 1;
		return 1;
	case F_DIGI_OFF:
		addon_fg = 1;		//camera digital off
	 	seq[10] = A_DIGI;
	 	seq[11] = OFF;
	 	return 1;
	 case F_FOCU_MANU:
	 	addon_fg = 1;
	  	seq[10] = A_FOCU;		
	  	seq[11] = MANU;
	  	return 1;
	  case F_IRIS_MANU:			
	  	addon_fg = 1;
	  	seq[10] = A_IRIS;
	  	seq[11] = MANU;
	  	return 1;
	  case F_WB_MANU:		
	  	addon_fg = 1;
	  	seq[10] = A_WB;
	  	seq[11] = MANU;
	  	return 1;
	  case F_BLACK:			
	  	addon_fg = 1;
	  	seq[10] = A_BLACK;
	  	seq[11] = OFF;
	  	return 1;
	  case F_FREEZE_OFF:		
	  	addon_fg = 1;
	  	seq[10] = A_FRZE;
	  	seq[11] = OFF;
	  	return 1;
	  case F_MIRRO_OFF:			
	  	addon_fg = 1;
	  	seq[10] = A_MIRR;
	  	seq[11] = OFF;
	  	return 1;
#endif
	  default:
		no = no;
		return 0;
	}
/*
#else
    no = no;
	return 0;
#endif
*/
}


extern bit do_call_addon(unsigned char no)
{
//#ifndef DIS660
switch (no)
	{
	case 0x60:
	case 0x61:
	case 0x63:
		run_seq_fg = 0;
		run_swing_fg = 0;
		run_swing2_fg = 1;
		return 1;
	case F_SCAN_RUN:
	    run_swing_fg = 1;
		seq[17] = F_SCAN_START;			//start point
		seq[18] = F_SCAN_END;			//end point
		return 1;
	case F_SCAN_STOP:
		run_swing_fg = 0;
		run_swing2_fg = 0;
		return 1;
	case F_SEQ_RUN:
	    run_seq2_fg = 1;		
		return 1;
#ifndef DIS660
	case F_CAM_POWER:
		power_fg = !power_fg;
		power_on_fg = power_fg;
		power_off_fg = !power_fg;
	    return 1;
	case F_BLC_ON:			
		addon_fg = 1;
		seq[10] = A_BLC;
		seq[11] = ON;
		return 1;
	case F_ZERO_ON:			
		addon_fg = 1;
		seq[10] = A_ZERO;
		seq[11] = ON;
		return 1;
	case F_MENU_ON:		
		disp_on_fg = 1;
		return 1;
	case F_DIGI_ON:		
		addon_fg = 1;
	 	seq[10] = A_DIGI;
	 	seq[11] = ON;
	 	return 1;
	 case F_FOCU_AUTO:
	    addon_fg = 1;
	  	seq[10] = A_FOCU;	
	  	seq[11] = AUTO;
	  	return 1;
	  case F_IRIS_AUTO:			
	  	addon_fg = 1;
	  	seq[10] = A_IRIS;
	  	seq[11] = AUTO;
	  	return 1;
	  case F_WB_AUTO:			
	  	addon_fg = 1;
	  	seq[10] = A_WB;
	  	seq[11] = AUTO;
	  	return 1;
	  case F_COLOR:		
	  	addon_fg = 1;
	  	seq[10] = A_BLACK;
	  	seq[11] = ON;
	  	return 1;
	  case F_FREEZE_ON:			
	  	addon_fg = 1;
	  	seq[10] = A_FRZE;
	  	seq[11] = ON;
	  	return 1;
	  case F_MIRRO_ON:		
	  	addon_fg = 1;
	  	seq[10] = A_MIRR;
	  	seq[11] = ON;
	  	return 1;
#endif
	default:
		no = no;
		return 0;
	}
//#else
//    no = no;
//	return 0;
//#endif
}

⌨️ 快捷键说明

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