【求助】关于红外~~

[复制链接]
 楼主| larryliuhao 发表于 2012-4-13 13:31 | 显示全部楼层 |阅读模式
请问下为什么我一用红外遥控器控制单片机结果我的其他按键功能都没了?连LCD,18B20也没反应了,只能按复位。。。
我想过是计算时间的那个while出问题,可是我加个i上去给了个while的循环上限,可还是出问题,求各位帮帮忙看看。。。
  1. /*************************************
  2.           红外线触发的外中断处理函数
  3. **************************************/
  4. void Int0(void) interrupt 0
  5. {
  6.         unsigned int i;

  7.         EX0 = 0;      //关闭外中断0,不再接收二次红外信号的中断
  8.        
  9.         TH0 = 0;      //定时器T0清0
  10.         TL0 = 0;
  11.         i = 0;      
  12.         TR0 = 1;            //开启定时器T0         
  13.         while(IR==0 && i<10000)
  14.                 i++;          //低电平计时
  15.         TR0 = 0;                //关闭定时器T0     
  16.         LowTime = TH0*256+TL0;  //保存低电平时间

  17.         TH0 = 0;              //定时器T0清0
  18.         TL0 = 0;
  19.         i = 0;      
  20.         TR0 = 1;                    //开启定时器T0
  21.         while(IR==1 && i<6000)
  22.                 i++;        //高电平计时
  23.         TR0 = 0;                //关闭定时器T0
  24.         HighTime = TH0*256+TL0;             //保存引导码的高电平长度

  25.     if((LowTime>7800) && (LowTime<8800) && (HighTime>3600) && (HighTime<=4700))
  26.         {
  27.                  if(DeCode() == 1)        //解码
  28.                 {
  29.                         if(a[2] == 0x45)
  30.                         {
  31.                                 jdq2 = ~jdq2;
  32.                         }
  33.                 }
  34.         }
  35.         EX0 = 1;   //开启外中断
  36. }
liang7143 发表于 2012-4-13 16:21 | 显示全部楼层
LZ 能不能用了一个状态机实现啊
liang7143 发表于 2012-4-13 16:23 | 显示全部楼层
状态机实现 可以参考写XWJ的博客

http://blog.21ic.com/user1/2240/archives/2006/10268.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

13

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部