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

📄 remote_detect.c

📁 红外遥控器解码程序详情
💻 C
字号:
/*=================================================================================
文件名:Remote_detect.c
说  明:
=================================================================================*/
#include"Remote_detect.h"
uint8 a[4];
uint8 ASCII[16]={48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70};
/*=================================================================================
函数名称:unit LowTime() 
函数功能:检测端口低电平的时间
入口参数:无
出口参数:低电平的时间
=================================================================================*/
uint16 LowTime(void)
{
  uint16 Num0;
  PITMTLD0 = 32-1;
  PITLD0 = 0xffff;
  PITCE_PCE0 = 1;
  while(PORTE_PE0 == 0);
  Num0 = PITCNT0;
  PITCE_PCE0 = 0;
  return 65535-Num0;
}
/*=================================================================================
函数名称:uint16 HighTime(void)
函数功能:检测端口高电平的时间
入口参数:无
出口参数:高电平的时间
=================================================================================*/
uint16 HighTime(void)
{
  uint16 Num1;
  PITMTLD0 = 32-1;
  PITLD0 = 0xffff;
  PITCE_PCE0 = 1;
  while(!PORTE_PE0 == 0);
  Num1 = PITCNT0;
  PITCE_PCE0 = 0;
  return 65535-Num1;
}
/*=================================================================================
函数名称:void receiving()
函数功能:receiving data from Remote interface
入口参数:nothing
出口参数:nothing
==================================================================================*/
void receiving(void)   
{
	uint8 i,j,num1;
  uint16 num;
  while(1)
	{	 
		restart:
		  while(PORTE_PE0);  //waite receiving
		  num = LowTime();	//detect low time
		  if(num<8500||num>9500)	//
			  continue; 
		  num = HighTime();	//detect hight time
		  if(num<4000||num>5000)// hight time 
			  continue;
		  for(i=0;i<4;i++)  //four size data receiving
		  {
			  for(j=0;j<8;j++)   //eight bit data receiving
			  {
				  num = LowTime();
				  if(num<400||num>700) 
				    goto restart;
				  num = HighTime();
				  if(num<400||num>2000) 
				    goto restart;
				  num1>>=1;
				  if(num>1120)   //if beyound 1120,the result bit as enable ,other result bit as disable 
				    num1|=0x80;
			  }
			  a[i] = num1;	 //momery one size
		  }
		  Write_Cmd(0x80);
			Write_Data(ASCII[a[0]/16]);
			Write_Data(ASCII[a[0]%16]);
			Write_Data(ASCII[a[1]/16]);
			Write_Data(ASCII[a[1]%16]);
			Write_Data(ASCII[a[2]/16]);
			Write_Data(ASCII[a[2]%16]);
      Write_Data(ASCII[a[3]/16]);
			Write_Data(ASCII[a[3]%16]);
			Display_ADValue();
			Beep();
  }
}

⌨️ 快捷键说明

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