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

📄 ir.c

📁 IR识别程序,由INT0输入.适合51单片机.
💻 C
字号:
#include "header.h"
#include "IR.h"
#define IR_c

enum IrState
{
	IrStart=0,
	IrLead,
	IrData,
	IrStop
};
enum IrState  Ir_State  =   IrStart;

uchar IsDataOk=0;
unsigned long ircode=0x0,irlogic=0x80000000;

void IrCaptureISR(void) interrupt 0
{
	uint IrIntervalTime;
    switch(Ir_State)
	  	{
         	case IrStart:
			timer0_stop();
            		timer0_start();
			Ir_State = IrLead;
                	IsDataOk = 0;
			ircode=0x0;
			irlogic=0x80000000;
			break;
		case IrLead:
		       timer0_stop();
			IrIntervalTime = read_timer0();
			timer0_start();
                	if(IrIntervalTime>=Ir_LeadMin&&IrIntervalTime<=Ir_LeadMax)
                        	Ir_State = IrData;
			else
                        	Ir_State = IrStart;
			break;
          	case IrData:
  		 	timer0_stop();
      		    	IrIntervalTime = read_timer0();
			timer0_start();
			if(IrIntervalTime>=Ir_0_Min&&IrIntervalTime<=Ir_0_Max)
				;          
			else if(IrIntervalTime>=Ir_1_Min&&IrIntervalTime<=Ir_1_Max)
                    		ircode |=irlogic;
			else
				{
				timer0_stop();
				Ir_State = IrStart;
                     	break;
				}
			irlogic>>=1;
			if(irlogic==0)
				{
				timer0_stop();
				IsDataOk = 1;
				Ir_State = IrStart;
				}
			break;
		default:
			timer0_stop();
			Ir_State = IrStart;
	   }
}

#undef IR_c

⌨️ 快捷键说明

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