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

📄 rf51.c.bak

📁 8051单片机用的315M射频发射及接收程序模块
💻 BAK
字号:
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar a _at_ 0x30; 
uchar b _at_ 0x31;
uchar c _at_ 0x32;
uchar d _at_ 0x33;
uchar counth,countl,countt,temp,countfh;

sfr AUXR=0x8e;
sbit rfin=P2^7;
sbit led=P1^0;
bit syncOK,flaghe;

void init();
bit sync();
void getdata();

void main()
{
	uchar m,n;
	init();
	while(1)
	{
		sync();
		if(syncOK)
			getdata();
		if(a==98|| b==98 || c==98 || d==98 )
		{
			led=0;
			for(m=255;m>0;m--)
				for(n=255;m>0;m--);
		}
	}
	
}

void init()
{
	counth=0;
	countl=0;
	countfh=0;
	flaghe=0;
	countt=0;
	syncOK=0;
	AUXR=0x01;
	P1=0xff;
	P3=0xff;
	TMOD=0x01;
	TH0=(65536-100)/256;
	TL0=(65536-100)%256;
	IE=0x82;
	TR0=1;

}

bit sync()
{
	while(countt<33)
		{
			if(counth>=2 && counth<=3)
			{
				if(!flaghe && countl==0)
				{
					countfh=counth;
					flaghe=1;
				}
				if(!flaghe && countl!=0)
				{
					break;
				}
				
				if(countfh==counth)
				{
					if(countl>=29 && countl<=30)
					{	
						syncOK=1;
						break;
					}
				}
				else
				{
					break;
				}
			}
		}
	
	counth=0;
	countl=0;
	countt=0;
	flaghe=0;
	countfh=0;
	return(syncOK);
}

void getdata()
{
	uchar countd;
	bit datain;
	while(!rfin);
	countl=0;
	while(countd<33)
	{
		if(counth>=2 && counth<=3)
		{
				if(countl>=8 && countl<=9)
				{
					temp=temp&0xfe;
					datain=1;
					counth=0;
					countl=0;
					countfh=0;
					flaghe=0;
					countd++;
					while(!rfin);	
				}
		}
		else if(counth>=8 && counth<=9)
		{
				if(countl>=2 && countl<=3)
				{
					temp=temp|0x01;
					datain=1;
					counth=0;
					countl=0;
					countfh=0;
					flaghe=0;
					countd++;
					while(!rfin);
				}
		}
		if(countd==8)
			a=temp;
		else if(countd==16)
			b=temp;
		else if(countd==24)
			c=temp;
		else if(countd==32)
			d=temp;
		if(datain)
		{
			temp<<=1;
			datain=0;
		}
	}
}

void timer0() interrupt 1
{
	TH0=(65536-100)/256;
	TL0=(65536-100)%256;
	countt++;
	if(rfin)	
		counth++;
	if(!rfin)
		countl++;
}

⌨️ 快捷键说明

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