OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3396|回复: 1

STC12C60S2红外无法解码怎么回事

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-12-12
在线时间
9 小时
发表于 2016-11-3 21:26:59 | 显示全部楼层 |阅读模式
#include<intrins.h>
#include"lcd.h"



void Int0Configure(void);
void delay140us(int i);

sbit Ir=P3^2;
unsigned char code CS1[]=" RED CONTROL ";
unsigned char code CS2[]=" IR-CODE:--H ";
unsigned char IrValue[6];
unsigned char t;
void main()
{
    unsigned char i;
        delayms(70);

    LcdInit();
        Int0Configure();
        LcdWrite(0,0x80);
        for(i=0;i<13;i++)
        {
           LcdWrite(1,CS1[i]);
        }
        LcdWrite(0,0x80+0X40);
        for(i=0;i<13;i++)
        {
           LcdWrite(1,CS2[i]);
        }
   while(1)
   {
      IrValue[4]=IrValue[2]>>4;
          IrValue[5]=IrValue[2]&0x0f;
             if(IrValue[4]>9)
          {
              LcdWrite(0,0xc0+0x09);
                  LcdWrite(1,0x37+IrValue[4]);
          }
          else
          {
              LcdWrite(0,0xc0+0x09);
                  LcdWrite(1,0x30+IrValue[4]);
          }
          if(IrValue[5]>9)
          {
              LcdWrite(0,0xc0+0x0a);
                  LcdWrite(1,0x37+IrValue[5]);
          }
          else
          {
              LcdWrite(0,0xc0+0x0a);
                  LcdWrite(1,0x30+IrValue[5]);
          }
   }
}

void Int0Configure(void)
{
    IT0=1;
        EX0=1;
        EA=1;
        Ir=1;
}
void delay140us(int i)
{
     unsigned char k;
         while(i--)
         {
            for(k=0;k<114;k++)
                {}
         }
}

void Ir_read() interrupt 0
{
   unsigned char j,k;
   unsigned int err;

   delayms(70);
   t=0;
   if(Ir==0)  
   {
       err=1000;
       while((Ir==0)&&(err>0))       
           {
             err--;
                 delayms(1);
           }
           if(Ir==1)
           {
              err=500;
                  while((Ir==1)&&(err>0))
              {
                 err--;
                     delayms(1);
              }
                  for(k=0;k<4;k++)
                  {
                      for(j=0;j<8;j++)
                          {
                             err=60;
                                  while((Ir==0)&&(err>0))
                            {
                                   err--;
                                     delayms(1);
                                      }
                                         err=500;
                                        while((Ir==1)&&(err>0))
                                        {
                                           err--;
                                           t++;
                                            delay140us(1);
                                                if(t>30)
                                                {
                                                   EX0=1;
                                                   return;
                                                }          
                                          }
                                        IrValue[k]>>=1;
                                        if(t>=5)
                                        {
                                           IrValue[k]|=0x80;
                                        }
                                        t=0;
                               

                          }
                  }
           }
   if(IrValue[2]!=IrValue[3])
                                        {
                                   return;
                                        }
   }
          
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-12-12
在线时间
9 小时
 楼主| 发表于 2016-11-4 10:18:17 来自手机 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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