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

📄 remote.c

📁 独具一格
💻 C
字号:
#include "Reg52.h"
#include "remote.h"

unsigned char idata ir_data; 
unsigned char idata ir_origin_data;        //
unsigned int idata ir_addr_code;  // replace "ir_raw_data"
bit data ir_command_ok=0;
bit data ir_low9ms_ok=0;     
bit data ir_repeat_mark=0;
unsigned char idata ir_1000us_count=0;  
unsigned int idata no_ir_count=0;  // for new ir receive check
unsigned char idata ir_i;            //
unsigned int  data delay_time=0;    // for ir interrupt

extern unsigned int time_count;
       
void ISR_Timer0(void) interrupt 1 using 0       //interrupt per 100us
{ 
	 if(IR_PORT)                 // sbit IR_PORT = P1^3
	 	{
	 		ir_1000us_count=0;
	 		no_ir_count++;
	 		if(ir_low9ms_ok) 
	 			{
	 			
	 			if(!ir_command_ok) 
	 			                             
	 				{
	 	//****************read ir data****
	 				while(!IR_PORT);  
     				        TH0 = 0x0; TL0 = 0x0;	
	 				while(IR_PORT)    
	 				        { 
       						delay_time = TH0; delay_time <<= 8; delay_time += TL0; 
       			                        if(delay_time > 65000) break;
       		                                }
     					//TR0 = 1 ;
	 					 				
	 				for( ir_i=0;ir_i<32;ir_i++)
	 					{
	 					TH0 = 0x0; TL0 = 0x0;	
	 					while(!IR_PORT)  
      							{  
       							delay_time = TH0; delay_time <<= 8; delay_time += TL0; 
       			                                 if(delay_time > 65000) break;
       		                                         }
       			                        TH0 = 0x0; TL0 = 0x0;
							 	
  						do
       							{
  							delay_time = TH0;
  							delay_time <<= 8;
  							delay_time += TL0;
  							}
       						while(delay_time<IR_SAMPLE_TIME);	 
  					        // now read the bit data
  						if(IR_PORT)   //"1"
  							{
  							if(ir_i < 16)
       							            {
       	     							     ir_addr_code>>=1;
                      			        	             ir_addr_code|=0x8000;
                                                                     }
                                                        if(ir_i < 24)
                                                        	    {
                                	                            ir_origin_data >>=1;
                                                                    ir_origin_data |=0x80;
                                                                    }
                                                        ir_data >>=1;
                                                	ir_data |= 0x80;
  							}
  						else{          // "0"
       					       		if(ir_i < 16)
       							            {
       	     							     ir_addr_code >>= 1;
                      			        	            }
                                                        if(ir_i < 24)
                                                        	    {
                                	                            ir_origin_data >>= 1; 
                                                                     }
                                                        ir_data >>=1;
  							}
	 					
	 					TH0 = 0x0; TL0 = 0x0;
	 					while(IR_PORT)
      						         {   //  in case loop for ever, write "if(delay_time > 65000)..."
       						         delay_time = TH0; delay_time <<= 8; delay_time += TL0; 
       			                                 if(delay_time > 65000) break;
       		                                         }
	 					}
	 			  
	 				ir_command_ok=1;
     					ir_low9ms_ok =0;      
       				        if((ir_addr_code==0xffff)&&(ir_origin_data==0xff)&&(ir_data==0xff))
	    					{
	    					ir_repeat_mark=1;
	    					ir_command_ok=0;    //for continuously detect repeat signal
	    					}
	    				}
	   	//**************************************
	 			}
	 	 }
	 	
	 else   
	 	{
	 		ir_1000us_count++;
	 		no_ir_count =0;
	 		if(ir_1000us_count>6)    //test: no-80 yes-60|40 in 11Mhz  yes-60 in24Mhz
   			   ir_low9ms_ok=1;
	 	}
	 //For 100us IR
        TH0 = TMRH;    TL0 = TMRL;  
         //For OSD
        time_count++; 
       
}   

⌨️ 快捷键说明

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