打印

帮忙看一下无线的解码程序,谢谢

[复制链接]
1648|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuanghaiyang|  楼主 | 2012-9-16 13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是315M无线2262的解码程序,有时候能解码成功,有时不能,距离也很短,用的超再生无线模块接收的

bit receive_2262()//解2262数据位
{
        uchar a,b;
        uint time;
        for(a=0;a<3;a++)
        {       
                for(b=0;b<8;b++)
                {
                        TL0=0;
                        TH0=0;
                        TR0=1;
                        arrest=0;
                        while(IR==0)
                        {
                                arrest++;
                                if(arrest>=7000)
                                return 0;                       
                        }
                        TR0=0;
                        time=TL0+TH0*256;
                        if(time<300)
                        return 0;
                        key[a]=key[a]>>1;
                        if(time>400&&time<700)
                        key[a]=key[a]&0x7f;
                        else
                        if(time>700&&time<1900)
                        key[a]=key[a]|0x80;
                        else
                        return 0;       
                        arrest=0;
                        while(IR==1)
                        {
                                arrest++;
                                if(arrest>=10000)
                                return 0;               
                        }
                }
        }
        impulse_disposal();        //合成数据
        ashion_flag=1;  //规定编码方式为1
        return 1;         //解码成功
}


incept()   //无线接收起始位
{
        TL0=0;
        TH0=0;
        TR0=1;
        arrest=0;
        while(IR==0)
        {
                arrest++;
                if(arrest>=40000)
                return ;
        }
        TR0=0;
        LowTime=TH0*256+TL0;
        if(LowTime<10000&&LowTime>17000)
        return ;
        TH0=0;
        TL0=0;
        TR0=1;
        arrest=0;
        while(IR==1)
        {
                arrest++;
                if(arrest>=10000)
                return ;
        }
        TR0=0;
        HighTime=TH0*256+TL0;
        if((LowTime>15000)&&(LowTime<17000))    //检测同步码
        {       
                if(receive_2262()==1)
                {
                        succeed_flag=1;
                }
        }
        else
        if((LowTime>10000)&&(LowTime<12000))   //起始位解码成功
        {
                lamp2=!lamp2;
                if(receive_1527()==1)  //数据解码成功
                {
                                                lamp1=!lamp1;

                        succeed_flag=1;  //成功标志置一

                }
                else
                lamp3=!lamp3;
        }
}


int0()interrupt 0
{
        incept();
        if(succeed_flag==1)
        {
                succeed_flag=0;
                Delay_ms(20);
        }
}

相关帖子

沙发
xyz769| | 2012-9-18 14:59 | 只看该作者
用的哪颗单片机?可能是干扰问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:广交单片机编程的朋友,QQ:446579893

5

主题

132

帖子

1

粉丝