remote_detect.c

来自「红外遥控器解码程序详情」· C语言 代码 · 共 90 行

C
90
字号
/*=================================================================================
文件名: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 + =
减小字号Ctrl + -
显示快捷键?