caihong001 发表于 2012-6-2 22:57:27

红外遥控,一个简单的测试程序,帮我找找问题在哪

接触到红外遥控,先写了个简单的测试程序,有点问题,就是找不到问题在哪
#include        <reg52.h>
#include    <intrins.h>

#defineucharunsigned char
#defineuint   unsigned int
#defineulongunsigned long

sbitIR=P3^2;

uintcount;
ulong abc;

void   InfraredRayMgrRemoteInit(void)
{
      TMOD = 0x09;      
      TH0= 0;
      TL0= 0;
         IT0        = 1;      //设定中断1为边沿触发方式
      EX0        = 1;      //开启开部中断1
         EA        =1;              //开启中断               
}
void main (void)
{       
      InfraredRayMgrRemoteInit();
      IR=1;
      P2=0XFF;
       while(1)
      {
            if(abc==0x00ff16e9)P2=0;   // 00 ff为地址码和反码,16是某一键的碥码,e9当然是反码喽
       }
}
void   InfraredRayMgrINT1Data(void)        interrupt        0    //在这个中断中我没有去考虑前导的9ms和4.5ms
{       
        TR0=0;       
        count=((uint)TH0 <<8)|TL0;            
        TH0=0;
        TL0=0;
        TR0=1;

        if(count<0xbb8)   //0xbb8=3000,   排除4.5ms
        {
          abc = abc >> 1;
          if((count>=0x05c8)&&(count<=0x0758)) //1480--1880us
                   abc = abc|0x80000000;
        }
}
脉宽0:560us   1:1680us                     首先,硬件肯定没问题,但代码上望各路高人帮我再找找问题,谢!
页: [1]
查看完整版本: 红外遥控,一个简单的测试程序,帮我找找问题在哪