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

📄 receive.c

📁 315M无线收发系统编码,解码程序
💻 C
字号:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

bit begin;//开始解码标志位
uint time;
uchar num=0;//数脉冲个数
unsigned char addrh,addrl;//接收地址
unsigned char key;//接收数据

void init()
{
	INT0=1;

	TMOD=0x01;
	TH0=0;
	TL0=0;
	EA=1; //开总中断
	EX0=1; //开外部中断
	IT0=1; //跳变沿触发中断         
}

void main()
{
	init();
	begin=0;
	P2=0x00;
	P1=0x00;

	while(1)
	{
		//P2=addrh;
		P1=addrl;
		P2=key;
	}

}

void accept_tongbu() interrupt 0          
{	
    static unsigned char tempaddrl,tempaddrh;//接收地址缓存
    static unsigned char tempkey;//接收数据缓存	EX0=0;			
	TR0=1;
	while(!INT0);	   //等待低电平结束
	TR0=0;
	time=(TH0<<8)+TL0;
	if((time>14000)&&(time<18000)) //检测同步码	  同步码16 500us
	{
		TH0=0;TL0=0;	
		EX0=1;//关闭外部中断
	}
	else
	{
		TH0=0;TL0=0;
		EX0=1;
		begin=1;
	}
	
	if(begin)//开始解码了
	{
       if(num<8)//接收地址码低八位
        {
                tempaddrl=tempaddrl>>1;//将接收的到最低位移到最高位
                if(time<800)//1000为宽脉冲与低脉冲界线,当振荡电阻为1M时,窄脉冲为110uS,宽脉冲为320uS
                {
                        tempaddrl|=0x80;//宽脉冲为1
                }
                num++;//中断次数加1
        }
       else if(num<16)//接收地址码高八位
        {
                 tempaddrh=tempaddrh>>1;//将接收的到最低位移到最高位
                if(time<800)//210为宽脉冲与低脉冲界线,当振荡电阻为1M时,窄脉冲为110uS,宽脉冲为320uS
                {
                        tempaddrh|=0x80;//宽脉冲为1
                }
               num++;//中断次数加1
        }
        else if(num<24)//接收数据码
        {
                tempkey=tempkey>>1;
                if(time<800)
                {
                        tempkey|=0x80;
                }
                num++;
        }
        else//cntint大于24也就是中断了25次时,关闭外部中断0,等待同步码
        {
                TH0=0;
                TL0=0;
				EX0=1;
                time=0;
				num=0;
				begin=0;

				addrh=tempaddrh;
				addrl=tempaddrl;
				key=tempkey;

                tempaddrh=0;
                tempaddrl=0;
                tempkey=0;
        }  
	}
	
}

⌨️ 快捷键说明

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