定时器的capture中断

[复制链接]
 楼主| 宋倩2010 发表于 2014-12-15 20:55 | 显示全部楼层 |阅读模式
谁用过定时器的capture中断有没有实例可以分享一下啊?

void TimerTx1_ISR(void)   
{
M8C_DisableGInt;
cap2=TimerTx_wReadCompareValue();
cap=cap1-cap2;
cap1=cap2;
M8C_EnableGInt;
}

Period=65535 ,cap计算两次上升沿的差值,

do{}while(cap<4000||cap>5500);
     for(j=0;j<3;j++)
       {
      for(i=0;i<8;i++)
           {
          cap=0;
         do{}while(cap==0);  
          do{}while(cap>20&&cap<35);

             if(cap>300&&cap<900)//0信号
            {
              tep=LearningData[j];
              if(i<7){tep=(tep>>1);}
              LearningData[j]=tep;
            }
          else if(cap>900)//1信号
            {
           tep=LearningData[j];
           tep=(tep|0x80);
          if(i<7){tep=(tep>>1);}
                LearningData[j]=tep;
        }   
          }
chenho 发表于 2014-12-15 20:56 | 显示全部楼层
什么问题
 楼主| 宋倩2010 发表于 2014-12-15 20:57 | 显示全部楼层

所有的do{}while()语句都可以执行下去,可是就是检测不到if语句的范围
gongche 发表于 2014-12-15 20:58 | 显示全部楼层
for(i=0;i<8;i++)
           {
          cap=0;
这里为什么要给0?

可以发您整个project?
 楼主| 宋倩2010 发表于 2014-12-15 21:00 | 显示全部楼层
发射部分验证过是正确的。解码时读到的地址码和数据码都是初始值0,0和1编码识别不出来,可是4.5ms的低电平和26us载波都能识别的话0和1为什么不行呢?
huwr 发表于 2014-12-15 22:40 | 显示全部楼层
奇怪,不懂了。。。
 楼主| 宋倩2010 发表于 2014-12-15 22:43 | 显示全部楼层
只能进一个if语句,而且就算
if(cap<300&&cap>900)//0信号
            {
              LED_On();
              tep=LearningData[j];
              if(i<7){tep=(tep>>1);}
              LearningData[j]=tep;
            }
LED也会亮,这很奇怪啊!麻烦大家了
huanghuac 发表于 2014-12-15 22:52 | 显示全部楼层
换个方法吧
 楼主| 宋倩2010 发表于 2014-12-15 22:53 | 显示全部楼层
好吧,先结贴了吧
 楼主| 宋倩2010 发表于 2014-12-15 22:55 | 显示全部楼层
多谢大家了,晚安
您需要登录后才可以回帖 登录 | 注册

本版积分规则

322

主题

3217

帖子

2

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

322

主题

3217

帖子

2

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