打印

定时器capture中断

[复制链接]
2000|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangyp1987|  楼主 | 2012-7-10 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁用过定时器的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;
        }   
          }
所有的do{}while()语句都可以执行下去,可是就是检测不到if语句的范围,高人指点下为什么啊!万分感谢!!!
沙发
xiariguodong| | 2012-7-11 17:05 | 只看该作者
顶 坐等高手

使用特权

评论回复
板凳
jxin| | 2012-7-11 18:43 | 只看该作者
for(i=0;i<8;i++)
          {
         cap=0;
这里为什么要给0?

可以发您整个project?

使用特权

评论回复
地板
willy_see| | 2012-7-11 20:05 | 只看该作者
等高手

使用特权

评论回复
5
zhangyp1987|  楼主 | 2012-7-11 21:29 | 只看该作者
PSoCStudy.rar (411.77 KB) 这是先解码NEC遥控器编码,再发射出去,发射部分验证过是正确的。解码时读到的地址码和数据码都是初始值0,0和1编码识别不出来,可是4.5ms的低电平和26us载波都能识别的话0和1为什么不行呢?高手帮忙看一下啊,是不是capture中断用的不对啊?非常感谢!!!

使用特权

评论回复
6
zhangyp1987|  楼主 | 2012-7-12 09:17 | 只看该作者
只能进一个if语句,而且就算
if(cap<300&&cap>900)//0信号
           {
             LED_On();
             tep=LearningData[j];
             if(i<7){tep=(tep>>1);}
             LearningData[j]=tep;
           }
LED也会亮,这很奇怪啊!麻烦大家了

使用特权

评论回复
7
zhangyp1987|  楼主 | 2012-8-7 16:16 | 只看该作者
换了个方法,问题解决了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

粉丝