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

📄 redreceive.h

📁 带有24C02的红外数据接收程序
💻 H
字号:
#ifndef RED_RECEIVE_2004_3_12
#define RED_RECEIVE_2004_3_12

#include "User.h"

#define RED_TIME1	4
#define RED_TIME2	10
#define RED_VERIFY	0xE2
#define INT_FOOT	P3_3

// 使用定时器0, TH<RED_TIME1 时判为0 
// RED_TIME1<=TH<=RED_TIME2 时总判为1
// RED_VERIFY 为八位的校验码

void InitRedReceive()
{
	TMOD=0x1;
	TH0=0x00;
	TL0=0x00;
	
	TR0=1; ET0=0;
	IT1=1; EX1=1;
}

struct{
	byte Code;
	byte Flag;
}RedKeyReceive={0xFF,0};

byte GetRedCode()
{
	if(RedKeyReceive.Flag)
	{
		RedKeyReceive.Flag=FALSE;
		return RedKeyReceive.Code;
	}
	else 
		return 0xFF;  
}

void Int1(void) interrupt 2
{
	byte TempL;
	union { byte x[2]; word w; } Code;
 	
	TH0=TL0=0; TR0=1;

	while(1)
	{
		while((TempL=TH0)<RED_TIME2 && INT_FOOT==0);
		TH0=TL0=0;
		
		if(TempL<RED_TIME1)
			Code.w=Code.w<<1;
		else if(TempL>=RED_TIME1 && TempL<RED_TIME2)
		{
			Code.w=Code.w<<1;
			Code.w=Code.w|0x0001;
		}
		else if(TempL>=RED_TIME2)
		{
			if(Code.x[0]==RED_VERIFY)
			{
				RedKeyReceive.Code=Code.x[1];
				RedKeyReceive.Flag=TRUE;
			}
			return;
		}

		while(INT_FOOT==1);
		TH0=TL0=0;	
	}	
}

#endif

⌨️ 快捷键说明

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