maoningchuan 发表于 2013-7-20 11:41:48

求大神赐一个MSP430测脉宽的程序啊!

本帖最后由 maoningchuan 于 2013-7-20 11:45 编辑

RT,最好能用5110显示出来,小弟都弄了几天了,还没弄出来!谢谢了额!

附上程序,能帮忙看下么!我是根据论坛的程序来的,但是就是不现实!
#include<msp430x14x.h>
#include"nokia_5110.c"
#include"nokia_5110.h"
#include"hanzi.c"

#define u8 unsigned char
#define u16 unsigned int


u8 cc[]={0};
u16 dat;
u8 shuzi[] = {"0123456789."};

unsignedintwidth={0,0,0,0,0,0,0,0,0,0};
unsignedinti=0;

void conversion(unsigned long int num)
{
       
        cc = num /100000;
        num = num % 100000;       
        cc = num /10000;
        num = num % 10000;
        cc = num /1000;
        num = num % 1000;
        cc = num /100;
        num = num % 100;
        cc = num /10;
        num = num % 10;
        cc= num;
       
}
void main()
{
       
        unsigned int i;
        WDTCTL = WDTPW + WDTHOLD;               // Stop watchdog timer
        BCSCTL1&=~XT2OFF;                     //打开XT2振荡器   
    do
    {
    IFG1&=~OFIFG;                           //清除振荡器失效标志   
    for(i=256;i>0;i--);                           // 延时,等待XT2起振   
    }
   while((IFG1&OFIFG)!=0);                // 判断XT2是否起振   

   BCSCTL2=SELM_2+SELS;               //选择MCLK=SMCLK为XT2

   //-----------------------------   

   TBCCTL0&=~(CCIS1+CCIS0);             //捕获源为P4.0,即CCI0A(也是CCI0B)
   TBCCTL0|=CM_2+SCS+CAP;               //下降沿捕获,同步捕获,工作在捕获模式   
   TBCCTL0|=CCIE;                            //允许捕获比较模块提出中断请求   
   TBCTL|=ID_3;
   TBCTL|=TBSSEL_2;                         //选择时钟MCLK
   TBCTL|=TBCLR;                           //定时器清零,   
   //定时器开始计数(连续计数模式0~0xFFFF)   
   TBCTL|=MC_2;

   _EINT();
        LCD_Init();LCD_clear();//初始化液晶盒清屏
        while(1)
        {
                conversion(width);
                for(i=0;i<6;i++)
                {
                        display_char(i+2,0,shuzi]);
                }
        }
}

//―――――定时器TB的CCR0的中断:用于检测脉冲上升与下降沿――――
#pragmavector=TIMERB0_VECTOR            
__interruptvoidTimerB0(void)
{
    if(TBCCTL0&CM1)                                 //捕获到下降沿   
       {
          TBCTL|=TBCLR;
          TBCCTL0=(TBCCTL0&(~CM1))|CM0;   //改为上升沿捕获:CM1 置零,CM0置一

       }
    elseif(TBCCTL0&CM0)                           //捕获到上升沿   
       {
          width=TBCCR0;                        //记录下结束时间   
          TBCCTL0=(TBCCTL0&(~CM0))|CM1;    //改为下降沿捕获:CM0置零,CM1置一
          if(i==10)i=0;   
                     
       }

}



气球 发表于 2013-7-20 13:29:07

mark!!!!!!!!!!!!!

tjjack 发表于 2013-7-20 14:14:17

感觉像超声波测距的程序啊

ljc2012 发表于 2013-7-22 12:13:56

tjjack 发表于 2013-7-20 14:14 static/image/common/back.gif
感觉像超声波测距的程序啊

额超声波 也是要测脉宽的所以都差不多要用到捕获模块。。

divineliu 发表于 2013-7-24 19:43:32

粗看一下沒啥问题呀
页: [1]
查看完整版本: 求大神赐一个MSP430测脉宽的程序啊!