红外解码程序怎么都写不成,求救!

#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char

uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管0~9  共阴极数码管
uchar table1[33];         //储存低电平
uchar table2[4];       //储存4位数据

sbit duan = P2^6;
sbit wei  = P2^7;
sbit IR   = P3^2;
sbit FM   = P2^3;

bit IR_ok,IR_tf;
uchar IR_time;


void init_T()       //外部中断0初始化
{
 TMOD|=0x02;      //方式2 8位自动载装
 TH0  =0;
 TL0  =0;
 TR0  = 1;
 ET0  = 1;
}

void init_0()       //定时器T0初始化
{
 IT0 = 1;       //设置下降沿触发
 EX0 = 1;
 EA  = 1;
}

void decode()       //解码数据
{
 uint i,j,k;
 uchar byte,x;
 k=1;        //越过第0位引导码时间的解码
 for(i=0;i<4;i++)
  {
   for(j=1;j<=8;j++)
   {
    x=table1[k];
    if(x>6)  //超过了"0"的时间但小于"1"的时间 也就是"1"
      byte|=0x80;
    else
     byte=byte;
    if(i<8)
    {
     byte>>=1;
    }
    k++;    //开始分析table1[]下一位的时间
   }
   table2[i]=byte;
   x=0;
  }
// if(table2[2]=~table2[3])
  IR_tf=1;       //数据解码完成标志位
}

void EX0zhongduan() interrupt 0   //外部中断0中断
{
 static uchar num=0;
 static bit m;
 if(!m)
 {
  m=1;
  IR_time=0;
 }
 else if(m)
 {
  if((IR_time<49)&&(IR_time>=32))
   num=0;
  table1[num]=IR_time;
  IR_time=0;
  num++;
  if(num==33)
  {
   num=0;
   IR_ok=1;
   m=0;
  }

 }      
}

void T0zhongduan() interrupt 1   //定时器T0中断
{
   IR_time++;
}

void display()       //显示函数

 switch(table2[2])//判断第三个数码值
      {
   case 0x0C:P0=table[1];break; //1 显示相应的按键值
   case 0x18:P0=table[2];break; //2
   case 0x5e:P0=table[3];break; //3
   case 0x08:P0=table[4];break; //4
   case 0x1c:P0=table[5];break; //5
   case 0x5a:P0=table[6];break; //6
   case 0x42:P0=table[7];break; //7
   case 0x52:P0=table[8];break; //8
   case 0x4a:P0=table[9];break; //9
      default:break;
   }
 duan=1;
 duan=0;
 IR_tf=0;       //处理完成标志 
}
void main()
{
 init_0();
 init_T();

 P0=0xf0;
 wei=1;
 wei=0;
 while(1)
 {
  if(IR_ok)       //数据储存完成
  {
   decode();
   IR_ok=0;
  }
  if(IR_tf)       //数据解码完成
  {
   FM=0;
   display();      //数码管显示结果
  }
 }
}

都搞了两天了,原理也懂了,就是写不成功哇,我跟着人家正确的程序都写得一模一样了还是不行。。。

哇擦勒 发表于11-26 19:45 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

哇擦勒
哇擦勒(上士)
金币:79个|学分:433个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号