2447|2

2

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助 为什么求超声波的距离不行,需要捕获两次 [复制链接]

#include "msp430g2553.h"
#include "clock.h"
#include "12864.h"

char edge_flag=1,shu=0;
unsigned long count=0,num=0,led;
float  time;
int    over=0;
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  ACLK_32K;
  DCO_16MHZ;
  // Configure the TA0CCR1 to do input capture
  TA0CCTL1 = CAP + CM_3 + CCIE + SCS + CCIS_0;
  TA0CTL |= TASSEL_1 + MC_2 + TACLR+TAIE;        // ACLK, Cont Mode; start timer
  P2DIR|=BIT3;
  P2OUT&=~BIT3;
  P1SEL|=BIT2;
  //P1OUT&=~0x01;
  Ini_Lcd();
  _BIS_SR(GIE);
  while(1){
    if(shu==1) P2OUT|=BIT3,delayus(30),P2OUT&=~BIT3,shu=0;//给超声波发trig
  }
  
// return 0;
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR (void){
  switch(__even_in_range(TA0IV,0x0A)){
  case TA0IV_TACCR1:{
    //P1OUT^=0x01;
    TA0CCTL1&=~CCIFG;//注意进入中断后 要手动清除标志
    if(edge_flag==1){
       count=TA0CCR1;//第一次捕获
       edge_flag=0;
    }else{//第二次捕获
       if(TA0CCR1-count>0)
         count=TA0CCR1-count;
       else
         count=65536+TA0CCR1-count;
       edge_flag=1;
       over=0;
      /*   led=count;
         lcd_set_xy(2,4);
         while(led){
           Disp_SZ(led%10);
           led/=10;
         }*/
       led=count/(float)32768*340/2;//计算时间
      // led=time;
       Clear_LCD();
       lcd_set_xy(2,4);
       Disp_SZ(led%10);
       led/=10;
       while(led){
          Disp_SZ(led%10);
          led/=10;
       }
     /*  time-=led;
       lcd_set_xy(3,4);
       Disp_SZ(led%10);
       led*=10;
       while(led<1000){
          Disp_SZ(led%10);
          led*=10;
       }*/
    }
    case TA0IV_TAIFG:
      TA0CTL&=~TAIE;
      if(edge_flag==0){
          over++;
      }
      shu++;
      break;              // Vector 10:  TAIFG
  }
  }
}

最新回复

描述清楚问题,才能下手帮你  详情 回复 发表于 2013-8-17 18:08
 
点赞 关注

回复
举报

96

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
描述清楚问题,才能下手帮你

点评

对不起呀 我的问题是 根本检测不到很小的频宽 还有就是有时候值特别的大 插上模块 没反应。。。  详情 回复 发表于 2013-8-18 11:21
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发干磨河 的帖子

对不起呀  我的问题是 根本检测不到很小的频宽  还有就是有时候值特别的大 插上模块 没反应。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表