找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2733|回復(fù): 1
收起左側(cè)

用MSP430F149做脈沖捕捉 但是一直不進入沿中斷 程序如下 求大佬幫忙看看程序有沒有...

[復(fù)制鏈接]
ID:222731 發(fā)表于 2017-7-27 11:37 | 顯示全部樓層 |閱讀模式
/****************主函數(shù)****************/
void main(void)
{  
    uint i;

    /*下面六行程序關(guān)閉所有的IO口*/
    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    P3DIR = 0XFF;P3OUT = 0XFF;
    P4DIR = 0XFF;P4OUT = 0XFF;
    P5DIR = 0XFF;P5OUT = 0XFF;
    P6DIR = 0XFF;P6OUT = 0XFF;

    WDTCTL = WDTPW + WDTHOLD;       //關(guān)閉看門狗
    P6DIR |= BIT2;P6OUT &= ~BIT2;   //打開電平轉(zhuǎn)換
    P2DIR |= BIT3;P2OUT &= ~BIT3;   //電平轉(zhuǎn)換方向3.3V--->5V
    P5DIR = 0xff;
    P5OUT = 0xff;


      /*------選擇系統(tǒng)主時鐘為8MHz-------*/
    BCSCTL1 &= ~XT2OFF;                 //打開XT2高頻晶體振蕩器
    do
    {
        IFG1 &= ~OFIFG;                 //清除晶振失敗標志
        for (i = 0xFF; i > 0; i--);     //等待8MHz晶體起振
    }
    while ((IFG1 & OFIFG));             //晶振失效標志仍然存在?
    BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK選擇高頻晶振
      /*------選擇系統(tǒng)主時鐘為8MHz-------*/   

    P3DIR |= 0X07;
    P4DIR |= 0XFF;
    LCD_init();

    set_pos(0,6);
    LCD_write_data('W');
    LCD_write_data('T');
    LCD_write_data('F');     

    P2DIR |= BIT0;                  //設(shè)置P2.0為輸出

    P1SEL |= BIT2; //設(shè)置P1.2端口為功能模塊使用
    P1DIR &=~ BIT2;  
    P1IFG = 0;

    TACTL = TASSEL1+TACLR+TAIE+MC1; //定時器A時鐘信號選擇SMCLK,同時設(shè)置定時器A計數(shù)模式為連續(xù)增計模式
    CCTL1 = MC0+SCS+CAP+CCIE; //輸入上升沿捕獲,CCI0A為捕獲信號源


    start = 1;
    disp_m = 1;
    end = 1;
    overflow = 0;
    show_falg = 0;


    _EINT();

    while(1)
   {

     P2OUT |= BIT0;
     delay(160);         //給Trig一個啟動脈沖
     P2OUT &=~ BIT0;

     while(show_falg); //等待 Echo的 下降沿

     show();             //更新顯示



   }
}

#pragma vector=TIMERA1_VECTOR //定時器A中斷處理

__interrupt void timer_a(void)

{

  switch(TAIV) //向量查詢

  { case 2: //捕獲中斷
    if(CCTL1&CM0) //上升沿
    {
      CCTL1=(CCTL1&(~CM0))|CM1; //更變設(shè)置為下降沿觸發(fā)
      start=TAR; //記錄初始時間
      overflow=0; //溢出計數(shù)變量復(fù)位

    }
    else if (CCTL1&CM1) //下降沿
    {
      CCTL1=(CCTL1&(~CM1))|CM0; //更變設(shè)置為上升沿觸發(fā)
      end=TAR; //用start,end,overflow計算脈沖寬度
      show_falg = 1;  //打開顯示計算處理程序
    }
    break;

  case 10: //定時器溢出中斷
    overflow++;
    break; //溢出計數(shù)加1

  default:break;
  }

}


回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2017-7-27 23:42 | 顯示全部樓層
是軟件仿真,還是硬件仿真呢?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表