打印

求高手帮忙看下我这个pt2262解码程序是否有误!!

[复制链接]
3089|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duhui75|  楼主 | 2009-4-29 07:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我要用这个程序解  PT2262的反码    单片机用AT89C52,4M晶振,pt2262震荡电阻为4.7M.   求高手帮忙看下我这个pt2262解码程序是否有误!! 

#include<AT89X52.h>
#include<stdio.h>
sbit RemPin  =   P3^2  ; 

unsigned char receive[24];

void RemIn(void) interrupt 0 using 1
{
    unsigned char i,j;
    unsigned int temp;
     EA=0;
     TH0=0; 
       TL0=0; //计时器清0 
    while(!RemPin); //等待高电平

    TR0=1;//开始计时
    while (RemPin)  //等待低电平
        if (TF0==1)  goto RemExit;  //超时就退出;
    TR0=0;
    temp=TH0;
    temp=(temp<<8)+TL0;
    if (temp>6000 || temp<4000)   //判断同步码的宽度
  goto RemExit;//同步码检测不成功就退出
   
//同步码检测成功
  开始解码,pt2262每位0,1 由两个高脉冲组成,我规定宽脉冲为1,窄脉冲为0,1由1,1(两个宽脉冲)组成,0由0,0(两个窄脉冲)组成
解到宽脉冲就存1
解反码则解到宽脉冲就存0
pt2262每组数据有12个0,1组成 ,所以我们解码为24为数据,把它们存到receive[24];

     for (i=0; i<24; i++) 
     {
      while (!RemPin){};   //等待高电平

        TH0=0;
        TL0=0;  //计时器清0
        TR0=1; //开始计时

    while (RemPin) {}; //等待低电平

     
     if (TF0==1) goto RemExit; 
        TR0=0;
        temp=TH0;
        temp=((temp<<8)+TL0);
  
     if (temp>400 && temp<600)
        { receive=0; //解到宽脉冲

        }
     else if (temp>100 && temp<234)
            {
                receive=1;   //解到窄脉冲
            }
            else goto RemExit;
     } 

 
    RemExit:
    {
        TR0=0;
        EA=1;
        RemPin=1;
        TF0=0;
        return; 
    } 
}

///*
main()
{
    RemPin=1;
    EA=1;
    IT0=1;  //设定INT0的触发方式为脉冲负边沿触发
    EX0=1;  //打开INT0中断请求
    TMOD=0x01;
    while (1);  
 //RemPin=1;
}

相关帖子

沙发
aolin| | 2009-5-4 11:53 | 只看该作者

用51来解2262比较吃力

用4MHz的51来解2262就更吃力了,即使能解得出来,在实际中也应用不起来。

使用特权

评论回复
板凳
mugenwon| | 2009-5-4 16:23 | 只看该作者

硬解码方便稳定

市场上有这种模块,很便宜。自己来解总觉得麻烦。

使用特权

评论回复
地板
luchen66| | 2011-7-7 09:45 | 只看该作者
4.7M的电阻,频率是800KHZ的,你用4MHZ晶振,还是89C52,呵呵,程序都处理不过来,最起码要12MHZ晶振,要不把电阻换成1M的,

使用特权

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

本版积分规则

4

主题

11

帖子

1

粉丝