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 + -
显示快捷键?