int1.c

来自「用51单片机实现IR解码」· C语言 代码 · 共 2,191 行 · 第 1/5 页

C
2,191
字号
					KEY_IR_,//							       0x37,
					KEY_IR_,//							       0x38,
					KEY_IR_,//							       0x39,
					KEY_IR_,//							       0x3A,
					KEY_IR_,//							       0x3B,
					KEY_IR_,//							       0x3C,
					KEY_IR_,//							       0x3D,
					KEY_IR_,//							       0x3E,
					KEY_IR_,//							       0x3F,

					KEY_IR_,//							0x40,
					KEY_IR_,//							       0x41,
					KEY_IR_,//							       0x42,
					KEY_IR_,//							       0x43,
					KEY_IR_,//							       0x44,
					KEY_IR_,//							       0x45,
					KEY_IR_,//							       0x46,
					KEY_IR_,//							       0x47,
					KEY_IR_,//							       0x48,
					KEY_IR_,//							       0x49,
					KEY_IR_,//							       0x4A,
					KEY_IR_,//							       0x4B,
					KEY_IR_,//							       0x4C,
					KEY_IR_,//							       0x4D,
					KEY_IR_,//							       0x4E,
					KEY_IR_,//							       0x4F,

					KEY_IR_,//								0x55,
					KEY_IR_,//							       0x51,
					KEY_IR_,//							       0x52,
					KEY_IR_,//							       0x53,
					KEY_IR_,//							       0x54,
					KEY_IR_,//							       0x55,
					KEY_IR_,//							       0x56,
					KEY_IR_,//							       0x57,
					KEY_IR_,//							       0x58,
					KEY_IR_,//							       0x59,
					KEY_IR_,//							       0x5A,
					KEY_IR_,//							       0x5B,
					KEY_IR_,//							       0x5C,
					KEY_IR_,//							       0x5D,
					KEY_IR_,//							       0x5E,
					KEY_IR_,//							       0x5F,

					KEY_IR_,//								6x60,
					KEY_IR_   ,//							       6x61,
					KEY_IR_  ,//							6x62,
					KEY_IR_    ,//							6x63,
					KEY_IR_    ,//						6x64,
					KEY_IR_    ,//							       6x65,
					KEY_IR_   ,//							       6x66,
					KEY_IR_,//							6x67,
					KEY_IR_,//							       6x68,
					KEY_IR_,//							       6x69,
					KEY_IR_,//							       6x6A,
					KEY_IR_,//							       6x6B,
					KEY_IR_,//						       	6x6C,
					KEY_IR_,//					       		6x6D,
					KEY_IR_,//		       				6x6E,
					KEY_IR_,//			 				6x6F,
					
					KEY_IR_,//							       0x70,
					KEY_IR_,//							       0x71,
					KEY_IR_  ,//							       0x72,
					KEY_IR_,//							       0x73,
					KEY_IR_,//							       0x74,
					KEY_IR_,//							       0x75,
					KEY_IR_,//							       0x76,
					KEY_IR_,//							       0x77,
					KEY_IR_,//							       0x78,
					KEY_IR_,//							       0x79,
					KEY_IR_,//							       0x7A,
					KEY_IR_,//							       0x7B,
					KEY_IR_,//							       0x7C,
					KEY_IR_,//							       0x7D,
					KEY_IR_,//							       0x7E,
					KEY_IR_,//							       0x7F,

					KEY_IR_,//							0x80,
					KEY_IR_,//							       0x81,
					KEY_IR_,//							       0x82,
					KEY_IR_,//							       0x83,
					KEY_IR_,//							       0x84,
					KEY_IR_,//							       0x85,
					KEY_IR_,//							       0x86,
					KEY_IR_,//							       0x87,
					KEY_IR_,//							       0x88,
					KEY_IR_,//							       0x89,
					KEY_IR_,//							       0x8A,
					KEY_IR_,//							       0x8B,
					KEY_IR_,//							       0x8C,
					KEY_IR_,//							       0x8D,
					KEY_IR_,//							       0x8E,
					KEY_IR_,//							       0x8F,

					KEY_IR_,//								0x90,
					KEY_IR_,//							       0x91,
					KEY_IR_,//							       0x92,
					KEY_IR_,//							       0x93,
					KEY_IR_,//							       0x94,
					KEY_IR_,//							       0x95,
					KEY_IR_,//							       0x96,
					KEY_IR_,//							       0x97,
					KEY_IR_,//							       0x98,
					KEY_IR_,//							       0x99,
					KEY_IR_,//							       0x9A,
					KEY_IR_,//							       0x9B,
					KEY_IR_,//							       0x9C,
					KEY_IR_,//							       0x9D,
					KEY_IR_,//							       0x9E,
					KEY_IR_,//							       0x9F,

					KEY_IR_,//							0xA0,
					KEY_IR_,//							       0xA1,
					KEY_IR_,//							       0xA2,
					KEY_IR_,//							       0xA3,
					KEY_IR_,//							       0xA4,
					KEY_IR_,//							       0xA5,
					KEY_IR_,//							       0xA6,
					KEY_IR_,//							       0xA7,
					KEY_IR_,//							       0xA8,
					KEY_IR_,//							       0xA9,
					KEY_IR_,//							       0xAA,
					KEY_IR_,//							       0xAB,
					KEY_IR_,//							       0xAC,
					KEY_IR_,//							       0xAD,
					KEY_IR_,//							       0xAE,
					KEY_IR_,//							       0xAF,

					KEY_IR_,//								0xB0,
					KEY_IR_,//							       0xB1,
					KEY_IR_,//							       0xB2,
					KEY_IR_,//							       0xB3,
					KEY_IR_,//							       0xB4,
					KEY_IR_,//							       0xBB,
					KEY_IR_,//							       0xB6,
					KEY_IR_,//							       0xB7,
					KEY_IR_,//							       0xB8,
					KEY_IR_,//							       0xB9,
					KEY_IR_,//							       0xBA,
					KEY_IR_,//							       0xBB,
					KEY_IR_,//							       0xBC,
					KEY_IR_,//							       0xBD,
					KEY_IR_,//							       0xBE,
					KEY_IR_,//							       0xBF,

					KEY_IR_,//								CxC0,
					KEY_IR_   ,//							       CxC1,
					KEY_IR_  ,//							CxC2,
					KEY_IR_    ,//							CxC3,
					KEY_IR_    ,//						CxC4,
					KEY_IR_    ,//							       CxC5,
					KEY_IR_   ,//							       CxC6,
					KEY_IR_,//							CxC7,
					KEY_IR_,//							       CxC8,
					KEY_IR_,//							       CxC9,
					KEY_IR_,//							       CxCA,
					KEY_IR_,//							       CxCB,
					KEY_IR_,//						       	CxCC,
					KEY_IR_,//					       		CxCD,
					KEY_IR_,//		       				CxCE,
					KEY_IR_,//			 				CxCF,
					
					KEY_IR_,//							       0xD0,
					KEY_IR_,//							       0xD1,
					KEY_IR_  ,//							       0xD2,
					KEY_IR_,//							       0xD3,
					KEY_IR_,//							       0xD4,
					KEY_IR_,//							       0xD5,
					KEY_IR_,//							       0xD6,
					KEY_IR_,//							       0xD7,
					KEY_IR_,//							       0xD8,
					KEY_IR_,//							       0xD9,
					KEY_IR_,//							       0xDA,
					KEY_IR_,//							       0xDB,
					KEY_IR_,//							       0xDC,
					KEY_IR_,//							       0xDD,
					KEY_IR_,//							       0xDE,
					KEY_IR_,//							       0xDF,

					KEY_IR_,//							0xE0,
					KEY_IR_,//							       0xE1,
					KEY_IR_,//							       0xE2,
					KEY_IR_,//							       0xE3,
					KEY_IR_,//							       0xE4,
					KEY_IR_,//							       0xE5,
					KEY_IR_,//							       0xE6,
					KEY_IR_,//							       0xE7,
					KEY_IR_,//							       0xE8,
					KEY_IR_,//							       0xE9,
					KEY_IR_,//							       0xEA,
					KEY_IR_MUTE,//							       0xEB,
					KEY_IR_,//							       0xEC,
					KEY_IR_,//							       0xED,
					KEY_IR_,//							       0xEE,
					KEY_IR_,//							       0xEF,

					KEY_IR_,//								0xF0,
					KEY_IR_,//							       0xF1,
					KEY_IR_,//							       0xF2,
					KEY_IR_,//							       0xFF,
					KEY_IR_,//							       0xF4,
					KEY_IR_,//							       0xF5,
					KEY_IR_,//							       0xF6,
					KEY_IR_,//							       0xF7,
					KEY_IR_,//							       0xF8,
					KEY_IR_,//							       0xF9,
					KEY_IR_,//							       0xFA,
					KEY_IR_,//							       0xFB,
					KEY_IR_,//							       0xFC,
					KEY_IR_,//							       0xFD,
					KEY_IR_,//							       0xFE,
					KEY_IR_//							       0xFF,

					
                            
};

enum{
	INT_INVALID,
	INT_1_T,
	INT_2_T,
	INT_3_T,
	INT_4_T,

	INT_5_T,
	INT_6_T,
	INT_7_T,
	INT_8_T
	
};

  #if(SYSTEM_CRYSTAL	==USE_CRYSTAL_27M)
	


#define INT_8_T_MIN	            	7000      /*            8  *0.44444ms/(12/fs)*1000            */
#define INT_8_T_MAX		     	9000	
#define INT_3_T_MIN		   	2500	
#define INT_3_T_MAX			3500
#define INT_2_T_MIN			1500
#define INT_2_T_MAX			2500
#define INT_5_T_MIN			4500
#define INT_5_T_MAX			5500
#define INT_6_T_MIN			5500
#define INT_6_T_MAX			6500
#define INT_4_T_MIN			3500
#define INT_4_T_MAX			4500
#elif(SYSTEM_CRYSTAL	==USE_CRYSTAL_27MX2)
	


#define INT_8_T_MIN	            	14000      /*            8  *0.44444ms/(12/fs)*1000            */
#define INT_8_T_MAX		     	18000	
#define INT_3_T_MIN		   	5000
#define INT_3_T_MAX			7000
#define INT_2_T_MIN			3000
#define INT_2_T_MAX			5000
#define INT_5_T_MIN			9000
#define INT_5_T_MAX			11000
#define INT_6_T_MIN			11000
#define INT_6_T_MAX			13000
#define INT_4_T_MIN			7000
#define INT_4_T_MAX			9000
#endif
	




enum{

No_Valid,
One_bit_End_Edge,
Zero_Bit_Falling_Edge,
TRAILER_Bit_Falling_Edge,
TRAILER_Bit_End_Edge

};
enum{
	GET_LEADER_STEP=0,          		//0
		
	GET_START_STEP=1	,		//    1
	GET_MODE_BIT0_STEP=2,
	GET_MODE_BIT1_STEP=3,
	GET_MODE_BIT2_STEP=4,
	GET_TRAILER_FALLING_STEP=5,         //5
	
	GET_TRAILER_STEP=6,				//6
	
	GET_CONTROL_BIT7_STEP=7,		//7
	GET_CONTROL_BIT6_STEP=8,
	GET_CONTROL_BIT5_STEP=9,
	GET_CONTROL_BIT4_STEP=10,		//   10
	
	GET_CONTROL_BIT3_STEP=11,
	GET_CONTROL_BIT2_STEP=12,
	GET_CONTROL_BIT1_STEP=13,
	GET_CONTROL_BIT0_STEP=14,
	
	GET_INFORMATION_BIT7_STEP=15,	//15
	GET_INFORMATION_BIT6_STEP=16,
	GET_INFORMATION_BIT5_STEP=17,
	GET_INFORMATION_BIT4_STEP=18,
	GET_INFORMATION_BIT3_STEP=19,
	
	GET_INFORMATION_BIT2_STEP=20,     //20
	
	GET_INFORMATION_BIT1_STEP=21,
	GET_INFORMATION_BIT0_STEP=22,  //22
	
	GET_IR_INVALID_STEP=0xff,
	

};
BOOL Get_Key_Code_Part=0;
U8 Philips_IR_RC6_Mode=0;

U8 Current_Interrupt_Time=0;
U8 Current_Intrrupt_data=0xff;
U8 Previous_Interrupt_Edge_Tape=No_Valid;
U8 Get_IR_Data_Step=GET_IR_INVALID_STEP;
U8 IR_Interrup_Time_Sequece[22];


DE_DATA U8 Process_Interrupt_Poiter;
BOOL System_Flag_Get_IR_Key=0;
void Parase_IR_Interrupt_Date()
{

//process interrupt 1
/*  if(IR_Interrup_Time_Sequece[1]!=INT_8_T) 
  	return;
  	*/
  	Process_Interrupt_Poiter=2;
  
//process interrupt 2
  switch(IR_Interrup_Time_Sequece[Process_Interrupt_Poiter])
  	{
  	case INT_2_T:
		Get_IR_Data_Step=GET_START_STEP;
		Previous_Interrupt_Edge_Tape=One_bit_End_Edge;
		
		break;
 	case INT_3_T:
		Get_IR_Data_Step=GET_MODE_BIT0_STEP;
		Previous_Interrupt_Edge_Tape=Zero_Bit_Falling_Edge;
	        IR_Input_Bits_Buffer=0;
		break;
		
	case INT_4_T:
		
       default:
	   	return;
  	}
  
   
	 Process_Interrupt_Poiter++;
	   
//	  Monitor=Get_IR_Data_Step;	  System_Flag_DispEvent=1; 
//process interrupt 3
switch(Get_IR_Data_Step)

{
		case GET_START_STEP: //Previous_Interrupt_Edge_Tape=One_bit_End_Edge;
			 switch(IR_Interrup_Time_Sequece[Process_Interrupt_Poiter])
			  	{
				case INT_2_T:
					Get_IR_Data_Step=GET_MODE_BIT0_STEP;
					Previous_Interrupt_Edge_Tape=One_bit_End_Edge;
					IR_Input_Bits_Buffer=1;    //get the mode 1XX
					break;
			 	case INT_3_T:
					Get_IR_Data_Step=GET_MODE_BIT1_STEP;
					Previous_Interrupt_Edge_Tape=Zero_Bit_Falling_Edge;
				        IR_Input_Bits_Buffer=0x02;   //get the mode 10X
					break;
					
				case INT_4_T:
					
			       default:
				   	return;
			  	}
		     break;
		case GET_MODE_BIT0_STEP://Previous_Interrupt_Edge_Tape=Zero_Bit_Falling_Edge;
			      switch(IR_Interrup_Time_Sequece[Process_Interrupt_Poiter])
			  	{
				case INT_2_T:
					Get_IR_Data_Step=GET_MODE_BIT1_STEP;
					Previous_Interrupt_Edge_Tape=Zero_Bit_Falling_Edge;
					IR_Input_Bits_Buffer=0x00;  //get the mode 00X
					break;
					
			      case INT_3_T:  
					Get_IR_Data_Step=GET_MODE_BIT1_STEP;
					Previous_Interrupt_Edge_Tape=One_bit_End_Edge;
				        IR_Input_Bits_Buffer=0x02;  // get the mode 01X
				      
					break;
					
					
				case INT_4_T:
					Get_IR_Data_Step=GET_MODE_BIT2_STEP;
					Previous_Interrupt_Edge_Tape=Zero_Bit_Falling_Edge;
				        IR_Input_Bits_Buffer=0x02;  // get the mode 010
				        Philips_IR_RC6_Mode=0x02;
					break;
			       default:
				   	return;
			  	}
			break;

}

  Process_Interrupt_Poiter++;
  
//process interrupt 4

//  Monitor=Get_IR_Data_Step;	  System_Flag_DispEvent=1; 

switch(Get_IR_Data_Step)

{
		case GET_MODE_BIT0_STEP:  //Previous_Interrupt_Edge_Tape=One_bit_End_Edge;
			 switch(IR_Interrup_Time_Sequece[Process_Interrupt_Poiter])
			  	{
				case INT_2_T:
					Get_IR_Data_Step=GET_MODE_BIT1_STEP;
					Previous_Interrupt_Edge_Tape=One_bit_End_Edge;
					IR_Input_Bits_Buffer=0x01; //get the mode 01X
					break;
			 	case INT_3_T:
					Get_IR_Data_Step=GET_MODE_BIT2_STEP;
					Previous_Interrupt_Edge_Tape=Zero_Bit_Falling_Edge;
				        IR_Input_Bits_Buffer=0x06; //get the mode 110
				        Philips_IR_RC6_Mode=0x06;
					break;
					
				case INT_4_T:

⌨️ 快捷键说明

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