找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

求助,帮我看看我红外解码的程序出在哪里。

[复制链接]
dengyong002 发表于 2014-2-20 11:36:18 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
这是我自己写的红外接收解码,但是解码不成功,解出来的不是红外码,下面是程序,小弟在这里谢过了


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP = P1^5;
sbit irin=P3^3;
uchar tap[33];
uchar tep[4];
uchar time0,kaishi,irok,num;
uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(uchar i)
{
        uchar x,y;
        for(x=i;x>0;x--)
        for(y=200;y>0;y--);
}

void timeinit()
{
                  
    TMOD = 0x20;               
        TH1=0X00;
        TL1=0X00;
//        ET1=1;
        EA=1;
//        TR1=1;
}

void int1init()
{
        irin=1;
        IT1=1;
        EX1=1;
        EA=1;
}
void beep()
{
  unsigned char i;
  for (i=0;i<100;i++)
   {
   delay(255);
   BEEP=!BEEP;                 //BEEP取反
   }
  //BEEP=1;                      //关闭蜂鸣器
}

void jiema()
{
        uchar i,j,k,l;
       
        l=1;
        if(irok==1)
        {
                EX1=0;
                for(i=0;i<4;i++)
                {
                        for(j=8;j>0;j--)
                        {
                                k=k>>1;
                                if(tap[l]>6)
                                {
                                        k=k|0x80;
                                }
                                l++;       
                        }
                        tep[i]=k;
                }
               
        }
        kaishi=0;
        EX1=1;                                                                                                                                                                                               
        l=1;
}

void xianshi()
{
          P2=0x00;
        P0=table[tep[0]/16];

        delay(5);
        P2=0x01;
        P0=table[tep[0]%16];

        delay(5);
        P2=0x02;
        P0=table[tep[1]/16];
        delay(5);
        P2=0x03;
        P0=table[tep[1]%16];
        delay(5);
        P2=0x04;
        P0=table[tep[2]/16];
        delay(5);
        P2=0x05;
        P0=table[tep[2]%16];
        delay(5);
        P2=0x06;
        P0=table[tep[3]/16];
        delay(5);
        P2=0x07;
        P0=table[tep[3]%16];
        delay(5);


}
void main()
{
        timeinit();
        int1init();
        while(1)
        {
                xianshi();
                jiema();
               
        }
}
void time() interrupt 3
{                
        TH1=0X00;
        TL1=0X00;
        time0++;
}
void ir() interrupt 2
{
         
        TR1=1;
//        ET0=1;

        if(kaishi==1)
        {
                if(time0>=40)
                {
                  num=0;
                  time0=0;
                }
                tap[num]=time0;
                time0=0;
                num++;
                if(num==33)
                {

                num=0;
                        TR1=0;
                        irok=1;
                }       
        }
        else
        {
                kaishi=1;
                time0=0;
        }
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 11:05 , Processed in 0.060970 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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