找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1623|回复: 0
打印 上一主题 下一主题
收起左侧

N76E003 红外解码部分代码

[复制链接]
跳转到指定楼层
楼主
ID:281424 发表于 2018-11-23 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
UINT8 IR_SCAN(void)
{
        UINT8 i=0;
        UINT8 t1,t2;
       
       
    if(bIR_scan==0) return 0;
         bIR_scan=0;
         RmtRec=0;
       
       
        if(IR_IO==0)
          {
                clr_TR0;
                clr_TF0;
                TL0 =0;
                TH0 =0;
                set_TR0; //Start Timer0
                bIR=0;IR_cont=0;
                  
                while ((IR_IO==0)&&(bIR != 1)); //Check Timer0 Time-Out Flag
                        clr_TR0; //Stop Timer0
                        clr_TF0;
                        Dval=TIM0_GetCounter();
                  
                                if(Dval>8600&&Dval<9300) //9ms
                                {
                     
                                TL0 =0;
                                TH0 =0;
                                set_TR0; //Start Timer0
                                bIR=0;IR_cont=0;
                                       
                                while ((IR_IO==1)&&(bIR != 1)); //Check Timer0 Time-Out Flag
                                        clr_TR0; //Stop Timer0
                                        clr_TF0;
                                        Dval=TIM0_GetCounter();
                                        if(Dval>4200&&Dval<4700) //4.5ms  &&×óóò¶¼ÎaÕæÔòÎaÕæ
                                   {
//----------------------------------------------------------
                                                        do{
                                                                TL0 =0;
                                                                TH0 =0;
                                                                set_TR0;        //Start Timer0
                                                                bIR=0;IR_cont=0;
                                                        while ((IR_IO==0)&&(bIR != 1)); //Check Timer0 Time-Out Flag
                                                                clr_TR0;        //Stop Timer0
                                                                clr_TF0;
                                                                Dval=TIM0_GetCounter();
                                                        if(Dval<300&&Dval>800)        //560us
                                                                {
                                                                return 0;
                                                                }
                                                               
                                                        TL0 =0;
                                                        TH0 =0;
                                                        set_TR0;        //Start Timer0
                                                        bIR=0;IR_cont=0;
                                                                                       
                                                        while ((IR_IO==1)&&(bIR != 1)); //Check Timer0 Time-Out Flag
                                                                clr_TR0;        //Stop Timer0
                                                                clr_TF0;
                                                                Dval=TIM0_GetCounter();
                                                                                                               
                                                                if(Dval>300&&Dval<800)        //560????,560us
                                                                {
                                                                        RmtRec<<=1;
                                                                        RmtRec|=0;        //½óêÕμ½0
                                                                        i++;
                                                                }
                                                               
                                                                else if(Dval>1400&&Dval<1800)        //1680Îa±ê×¼Ö죬1680uS
                                                                {
                                                                        RmtRec<<=1;
                                                                        RmtRec|=1;        //½óêÕμ½1
                                                                        i++;
                                                                }
                                                                else if(Dval>2200&&Dval<2600)        //μÃμ½°′¼ü¼üÖμÔö¼óμÄDÅÏ¢£¬2500±ê×¼ÖμÎa2.5mS
                                                                {
                                                                }
                                                         }
                                                                while(i<32);
                                                        //--------------------------------------------------------------------
                                                                t1=RmtRec>>24;        //μÃμ½μØÖ·Âë
                                                                t2=(RmtRec>>16)&0xff;        //μÃμ½μØÖ··′Âë
                                         
                                                                if((t1==(UINT8)~t2)&&t1==REMOTE_ID)//¼ìÑéò£¿Ø궱eÂë(ID)¼°μØÖ·
                                                                {
                                                                                t1=RmtRec>>8;
                                                                                t2=RmtRec;
                                                                                IR_code=t1;
                                                                       
                                                                                if(t1==(UINT8)~t2)return 1;//¼üÖμÕyè·
                                                                                }
                //---------------------------------------------------------------------
                                }
                   }
                }
      return 0;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表