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

📄 int1.c

📁 用51单片机实现IR解码
💻 C
📖 第 1 页 / 共 5 页
字号:
/**********************************************************************
*File		Name		:	int.c
*Creat		Time		:	2002/02/11
*Program	Author		:	mqli
*File		Discreption	: 
************************************************************************/
#include "common.h"


#include "i2c.h"

#include "key.h"
#include "main.h"
#include "Var.h"





 void EX0_int (void) interrupt 0	  /* External Interrupt 0 */
{

	
} 

 void EX1_int (void) interrupt 2	  /* External Interrupt 1 */
{

	
} 


 void T0_int (void)   interrupt 1  /* Timer 0 Overflow */
{   
            TF0=0;

	
	TR0=0;
	
	
#if ( SYSTEM_CRYSTAL	==USE_CRYSTAL_40M)
	TH0=0x00;			 /*reload value 19.6ms for X=40M*/
	TL0=0x00;		        /*reload value 19.6ms for X=40M*/

#elif(SYSTEM_CRYSTAL	==USE_CRYSTAL_27M)
	//TH0=0xDC;			 /*reload value 4ms for X=27M*/
	//TL0=0xCF;		        /*reload value 4ms for X=27M*/

      TH0=0x50;			 /*reload value 20ms for X=27M*/
	TL0=0x37;		        /*reload value 20ms for X=27M*/

#elif (USE_CRYSTAL_27MX2)

      TH0=0x50;			 /*reload value 20ms for X=27M*/
	TL0=0x37;		        /*reload value 20ms for X=27M*/
   
#elif( SYSTEM_CRYSTAL== USE_CRYSTAL_24M598_X2)

	   TH0=0xCC;               /*reload value 3ms for 25.598*2**/
         TL0=0xD5;
#elif( SYSTEM_CRYSTAL== USE_CRYSTAL_40M039_X2)

    
        TH0=0x97;               /*reload value 4ms for 40.039*2**/
       TL0=0xBC;


#elif( SYSTEM_CRYSTAL== USE_CRYSTAL_12M_X2)
		TH0=0xE0;		/*reload value 4ms for 12M*2**/
		TL0=0xB8;
#else


	TH0=0xff;			 /*reload value 25ms for X=22.118M*/ 
	TL0=0x4b;		        /*reload value 25ms for X=22.118M*/ 
#endif

      
                      

			Timer_for_Refresh_LCD_Display++;

		  if(System_Flag_Being_Scrolling||System_Flag_Temp_DisplaY)
        	     {
        	     Timer_for_Sytem_Display++; 
		    }

		

	TR0=1;
	
	
}
void T1_int (void)  interrupt 3     /* Timer 1 Overflow */
{
	
}
DE_DATA U8 RS232_Receive_Buffer;

void SCON_int (void)  interrupt 4  /* Serial Port */
{




  
	//mast the transfer interrupt
	if (TI)	
	{
		TI=0; 
		return;
	}
    //get four bytes of a frame 
	RS232_Receive_Buffer=SBUF; 
	
 
 		RI=0;
		
		
}


#if (IR_SYSTEM==NEC_IR_SYSTEM)
#if( SYSTEM_CRYSTAL	==USE_CRYSTAL_40M)

#define NEC_IR_KEY_VALID_INTERVAL	         5          //  >(108-9-2.75)/19.6                //crystal=40M
#define NEC_IR_0_BIT_WIDTH                       3750     /* //1.125ms/(12/fs*1000)*/
#define NEC_IR_1_BIT_WIDTH				7500      /* //2.25ms/(12/fs*1000)*/
#define NEC_IR_START_BIT_WIDTH	       45000    /* //13.5ms/(12/fs*1000)*/
#define NEC_IR_TIME_BIAS                          1000       /* //0.3ms/(12/fs*1000)*/
#define NEC_IR_REPEAT_BIT_WIDTH	      37500      /*//11.25ms/(12/fs*1000)*/

#define NEC_IR_0_BIT_WIDTH_MIN                       2750      //3750-1000
#define NEC_IR_1_BIT_WIDTH_MIN			6500       //7500-1000
#define NEC_IR_START_BIT_WIDTH_MIN	       35000     //4500-1000
#define NEC_IR_REPEAT_BIT_WIDTH_MIN	      36948     //37500-552

#define NEC_IR_0_BIT_WIDTH_MAX                      4750      //3750+1000
#define NEC_IR_1_BIT_WIDTH_MAX			8500       //7500+1000
#define NEC_IR_START_BIT_WIDTH_MAX	       46000     //45000+000
#define NEC_IR_REPEAT_BIT_WIDTH_MAX	      38052     //37500+552

#elif ( SYSTEM_CRYSTAL	==USE_CRYSTAL_24M598_X2)




//the timer2 max overflow T=15.98ms
#define NEC_IR_KEY_VALID_INTERVAL	         7         //  >(108-9-2.75)/15.98                //crystal=24.598 X2M=49.196072
#define NEC_IR_0_BIT_WIDTH                       4612    /*  1.125ms/(12/fs*1000)*/
#define NEC_IR_1_BIT_WIDTH				9224    /*  2.25ms/(12/fs*1000)*/
#define NEC_IR_START_BIT_WIDTH	       55345  /*  13.5ms/(12/fs*1000)*/
#define NEC_IR_TIME_BIAS                          1229     /* 0.3ms/(12/fs*1000)*/
#define NEC_IR_REPEAT_BIT_WIDTH	      46121    /* 11.25ms/(12/fs*1000)*/

#define NEC_IR_0_BIT_WIDTH_MIN                       3612      //4612-1000
#define NEC_IR_1_BIT_WIDTH_MIN			8224       //9224-1000
#define NEC_IR_START_BIT_WIDTH_MIN	       54345     //55345-1000
#define NEC_IR_REPEAT_BIT_WIDTH_MIN	      45121   //46121-1000

#define NEC_IR_0_BIT_WIDTH_MAX                      5712      //4612+1000
#define NEC_IR_1_BIT_WIDTH_MAX			10224       //9224+1000
#define NEC_IR_START_BIT_WIDTH_MAX	       56345     //55345+1000
#define NEC_IR_REPEAT_BIT_WIDTH_MAX	      47121    //46121+1000



#elif ( SYSTEM_CRYSTAL	==USE_CRYSTAL_40M039_X2)




//the timer2 max overflow T=15.98ms
#define NEC_IR_KEY_VALID_INTERVAL	         12         //  >(108-9-2.75)/            //crystal=80.078096

#define NEC_IR_0_BIT_WIDTH                       7507      /* 1. 125ms/(12/fs)*1000*/
#define NEC_IR_1_BIT_WIDTH				15014     /*2.25ms/(12/fs)*1000*/
//#define NEC_IR_START_BIT_WIDTH	      90085    /*13.5ms/(12/fs)*1000*/

//for the X=80.07, the MAX time of TIMER2 is 9.8ms, so the 11.25 mean that a overflow will take place ,then remain 11.25-9.8=1.45ms

#define NEC_IR_REPEAT_BIT_WIDTH	     9675              /*(11.25-9.8)ms/(12/fs*1000)*/


//#define NEC_IR_TIME_BIAS                          2001      /*0.2ms/(12/fs)*1000)*/


#define NEC_IR_0_BIT_WIDTH_MIN                    6007   
#define NEC_IR_1_BIT_WIDTH_MIN			13514
//#define NEC_IR_START_BIT_WIDTH_MIN	       5000   
#define NEC_IR_REPEAT_BIT_WIDTH_MIN	        9001 

#define NEC_IR_0_BIT_WIDTH_MAX                     9000 
#define NEC_IR_1_BIT_WIDTH_MAX			16514 
//#define NEC_IR_START_BIT_WIDTH_MAX	       5800    
#define NEC_IR_REPEAT_BIT_WIDTH_MAX	      11613     

#elif(SYSTEM_CRYSTAL	==USE_CRYSTAL_27M)
	


#define NEC_IR_KEY_VALID_INTERVAL	         4        //  >(108-9-2.75)/            //crystal=27

#define NEC_IR_0_BIT_WIDTH                       2531      /* 1.125ms/(12/fs)*1000*/
#define NEC_IR_1_BIT_WIDTH				5062     /*2.25ms/(12/fs)*1000*/

//for the X=27, the MAX time of TIMER2 is 28.9ms, so it mean that only one overflow will take place between key code part and  the repeat part
//then there is  11.25ms bit

#define NEC_IR_REPEAT_BIT_WIDTH	        25312              /*11.25ms/(12/fs)*1000*/

//err=0.4ms =900(X=27M)
#define NEC_IR_0_BIT_WIDTH_MIN                  1900 // 1600  // 2025     
#define NEC_IR_1_BIT_WIDTH_MIN			4100  //4557
#define NEC_IR_REPEAT_BIT_WIDTH_MIN	        21000

#define NEC_IR_0_BIT_WIDTH_MAX                 3400//    3034 
#define NEC_IR_1_BIT_WIDTH_MAX		     5900//	5568
#define NEC_IR_REPEAT_BIT_WIDTH_MAX	      29000   


#else

#define NEC_IR_KEY_VALID_INTERVAL	        3         //  >(108-9-2.75)/35.7			//crystal=22118M
#define NEC_IR_0_BIT_WIDTH                       2073    /*  //1.125ms/(12/fs*1000)*/
#define NEC_IR_1_BIT_WIDTH				4147     /*  //2.25ms/(12/fs*1000)*/
#define NEC_IR_START_BIT_WIDTH	       24882    /*13.5ms/(12/fs*1000)*/
#define NEC_IR_TIME_BIAS                           552         /*0.3ms/(12/fs*1000)*/
#define NEC_IR_REPEAT_BIT_WIDTH	      20736     /*11.25ms/(12/fs*1000)*/

#define NEC_IR_0_BIT_WIDTH_MIN             1521                 //2073-552
#define NEC_IR_1_BIT_WIDTH_MIN		3595	         //4147-552
#define NEC_IR_START_BIT_WIDTH_MIN	 24330           //24882-552
#define NEC_IR_REPEAT_BIT_WIDTH_MIN	      20184     //20736-552

#define NEC_IR_0_BIT_WIDTH_MAX                     2625     //2073+552
#define NEC_IR_1_BIT_WIDTH_MAX			 4699      //4147+552
#define NEC_IR_START_BIT_WIDTH_MAX	      25434     //24882+552

#define NEC_IR_REPEAT_BIT_WIDTH_MAX	      21288     //20736+552

#endif

CODE U8  IR_Key_Repeat_Enable_Table[]=
{
                                   0,//KEY_IR_0=								0x00,
					0,//KEY_IR_1   =							       0x01,
					0,//KEY_IR_2  =							0x02,
					0,//KEY_IR_3    =							0x03,
					0,//KEY_IR_4    =						0x04,
					0,//KEY_IR_5    =							       0x05,
					0,//KEY_IR_6   =							       0x06,
					0,//KEY_IR_7=							0x07,
					0,//KEY_IR_8=							       0x08,
					0,//KEY_IR_9=							       0x09,
					0,//KEY_IR_BAND=							       0x0A,
					0,//KEY_IR_AUTO_ALL=							       0x0B,
					0,//KEY_IR_VOL_P=						       	0x0C,
					0,//KEY_IR_VOL_M=					       		0x0D,
					0,//KEY_IR_TUNER_AREA=		       				0x0E,
					0,//KEY_IR_STOP=			 				0x0F,
					
					0,//KEY_IR_PROGRAM=							       0x10,
					0,//KEY_IR_UP=							       0x11,
					0,//KEY_IR_PREVIOUS  =							       0x12,
					0,//KEY_IR_NEXT=							       0x13,
					0,//KEY_IR_DOWN=							       0x14,
					0,//KEY_IR_TRACK_DOWN=							       0x15,
					0,//KEY_IR_TRACK_UP=							       0x16,
					0,//KEY_IR_SEEK_DOWN=							       0x17,
					0,//KEY_IR_SEEK_UP=							       0x18,
					1,//KEY_IR_RDS_DISPLAY=							       0x19,
					1,//KEY_IR_RDS_PTY=							       0x1A,
					0,//KEY_IR_SLOW=							       0x1B,
					0,//KEY_IR_MUTE=							       0x1C,
					0,//KEY_IR_STEREO=							       0x1D,
					0,//KEY_IR_REPEAT=							       0x1E,
					0,//KEY_IR_P_I=							       0x1F,

				       1,//KEY_IR_VOL_UP=							       0x20,
					1,//KEY_IR_VOL_DOWN=							       0x21,
					0,//KEY_IR_PREVIOUS  =							       0x22,
					0,//KEY_IR_NEXT=							       0x23,
					0,//KEY_IR_DOWN=							       0x24,
					0,//KEY_IR_TRACK_DOWN=							       0x25,
					0,//KEY_IR_TRACK_UP=							       0x26,
					0,//KEY_IR_SEEK_DOWN=							       0x27,
					0,//KEY_IR_SEEK_UP=							       0x28,
					0,//KEY_IR_RDS_DISPLAY=							       0x29,
					0,//KEY_IR_RDS_PTY=							       0x2A,
					0,//KEY_IR_SLOW=							       0x2B,
					0,//KEY_IR_MUTE=							       0x2C,
					0,//KEY_IR_STEREO=							       0x2D,
					0,//KEY_IR_REPEAT=							       0x2E,
					0,//KEY_IR_P_I=							       0x2F,

};

CODE U8 IR_Key_Assign_Table[]={
		
					KEY_IR_,//								0x00,
					KEY_IR_   ,//							       0x01,
					KEY_IR_,//							0x02,
					KEY_IR_    ,//							0x03,
					KEY_IR_    ,//						0x04,
					KEY_IR_    ,//							       0x05,
					KEY_IR_   ,//							       0x06,
					KEY_IR_,//							0x07,
					KEY_IR_,//							       0x08,
					KEY_IR_,//							       0x09,
					KEY_IR_,//							       0x0A,
					KEY_IR_,//							       0x0B,
					KEY_IR_,//						       	0x0C,
					KEY_IR_,//					       		0x0D,
					KEY_IR_NEXT,//		       				0x0E,
					KEY_IR_STOP,//			 				0x0F,
					
					KEY_IR_OK,//							       0x10,
					KEY_IR_UP,//							       0x11,
					KEY_IR_FB,//							       0x12,
					KEY_IR_FF,//							       0x13,
					KEY_IR_DOWN,//							       0x14,
					KEY_IR_,//							       0x15,
					KEY_IR_,//							       0x16,
					KEY_IR_PREVIOUS,//							       0x17,
					KEY_IR_PLAY,//							       0x18,
					KEY_IR_VOLOUME_DOWN,//							       0x19,
					KEY_IR_VOLOUME_UP,//							       0x1A,
					KEY_IR_,//							       0x1B,
					KEY_IR_,//							       0x1C,
					KEY_IR_,//							       0x1D,
					KEY_IR_,//							       0x1E,
					KEY_IR_MENU,//							       0x1F,

					KEY_IR_,//							0x20,
					KEY_IR_,//							       0x21,
					KEY_IR_,//							       0x22,
					KEY_IR_,//							       0x23,
					KEY_IR_,//							       0x24,
					KEY_IR_,//							       0x25,
					KEY_IR_,//							       0x26,
					KEY_IR_,//							       0x27,
					KEY_IR_,//							       0x28,
					KEY_IR_,//							       0x29,
					KEY_IR_,//							       0x2A,
					KEY_IR_,//							       0x2B,
					KEY_IR_,//							       0x2C,
					KEY_IR_,//							       0x2D,
					KEY_IR_MUTE,//							       0x2E,
					KEY_IR_,//							       0x2F,		    

					KEY_IR_,//								0x33,
					KEY_IR_,//							       0x31,
					KEY_IR_,//							       0x32,
					KEY_IR_,//							       0x33,
					KEY_IR_,//							       0x34,
					KEY_IR_,//							       0x35,
					KEY_IR_,//							       0x36,
					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,

⌨️ 快捷键说明

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