微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 红外遥控的接收程序问题

红外遥控的接收程序问题

时间:10-02 整理:3721RD 点击:
各位高手我最近在做单片机红外遥控,仿照视频教程写的程序不知道哪里不对?以下是程序,烦请各位指教!
#include<reg52.h>
#define uchar unsigned char
#define uint  unsinged int
uchar irtime;
uchar startflag;
uchar bitnum;
uchar irreceok;
uchar ircode[4];
uchar irdata[33];
uchar irprosok;
//***************************************************************************   
void timer0init(void)                                //计时器0初始化
{
TMOD=0X02;
TH0=0X00;
TL0=0X00;
ET0=1;
EA=1;
TR0=1;
}
//****************************************************************************
void int0init(void)                                       //外部中断初始化
{
IT0=1;
EX0=1;
EA=1;
}
//************************************************************************
void irpros(void)                                     //取出irtime并解码
{ uchar k,i,j;
  uchar value;
  k=1;
  for(j=0;j<4;j++)
  {
    for(i=0;i<8;i++)
     {
        value=value>>1;
         if(irdata[k]>6)
   
       value=value|0X08;
       }
   
     k++;
   }
      
   ircode[j]=value;
   
  }
  irprosok=1;
}
//***************************************************************************
void main()                                                      //主函数
{uchar j,k;
timer0init();
int0init();
P2=0x00;
  while(1)
  {
    if(irreceok)
    {
     irpros();
   
     irreceok=0;
     
    }
   
    if(irprosok)
    {
     
     P1=ircode[2] ;   //想以8个led小灯显示遥控键值
     irprosok=0;
     
    }
   
  }
}
//******************************************************************************
void timer0() interrupt 1       //定时器0中断服务函数
{
irtime++;
}
//******************************************************************************
void int0() interrupt 0            //外部中断0服务函数
{               
if(startflag)
  {   
    if(irtime>52)
    {
      bitnum=0;
     
    }


   
  }
     irdata[bitnum]=irtime;
     irtime=0;
     bitnum++;
if(bitnum==33)
  {
    bitnum=0;
    irreceok=1;
  
  }
  else
  {
    startflag=1;
    irtime=0;
  
  }
}

这么长的程序,一般先自己找下问题的所在,然后针对实际的问题提出,如果不是问题很明显,别人是很难花那么多心思给你找出问题点,最后等于没问!

嗯嗯,正是因为找了好多天找不出才问的,不过现在问题解决了,谢谢哈!谢谢您的建议啊!

嗯嗯,正是因为找了好多天找不出才问的,不过现在问题解决了,谢谢哈!谢谢您的建议啊!

小编,加油。

嗯嗯,现在弄出来了,谢谢啊!

谢谢!

发出来呗,谢谢!QQ:3206488218

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top