新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > msp430定時器A中斷實例

        msp430定時器A中斷實例

        作者: 時間:2016-11-13 來源:網絡 收藏
        //例程描述:利用定時器定時功能,實現(xiàn)P1.0方波輸出。

        #include <msp430x14x.h>

        本文引用地址:http://www.104case.com/article/201611/316559.htm

        {

        WDTCTL = WDTPW + WDTHOLD; //停止看門狗WDT,不使用內部看門狗定時器。

        P1DIR |= 0x01; //設置P1.0口方向為輸出。

        CCTL0 = CCIE; //設置捕獲/比較控制寄存器中CCIE位為1,CCR0捕獲/比較功能中斷為允許。

        CCR0 = 50000;//捕獲/比較控制寄存器CCR0初值為5000。

        TACTL = TASSEL_2 + MC_2; //設置定時器A控制寄存器TACTL,使時鐘源選擇為SMCLK輔助時鐘。

        _BIS_SR(LPM0_bits + GIE); //進入低功耗模式LPM0和開中斷

        }

        //定時器A 中斷服務程序區(qū)

        #pragma vector=TIMERA0_VECTOR

        __interrupt void Timer_A (void)

        {

        P1OUT ^= 0x01; //P1.0取反輸出

        CCR0 += 50000; //重新載入CCR0捕獲/比較數據寄存器數據

        }

        //例程描述:利用定時器定時功能,實現(xiàn)P1.0方波輸出。

        // 需要注意的是定時器中斷程序,采用向量查詢方式。

        #include

        void main(void)

        {

        WDTCTL = WDTPW + WDTHOLD; // 停止看門狗WDT

        P1DIR |= 0x01; // 設置P1.0口方向為輸出。

        TACTL = TASSEL_2 + MC_2 + TAIE; // 時鐘源選擇為SMCLK,選擇計數模式,定時器中斷開

        _BIS_SR(LPM0_bits + GIE); //進入低功耗模式LPM0和開中斷

        }

        // Timer_A3 中斷向量(TAIV)處理

        #pragma vector=TIMERA1_VECTOR

        __interrupt void Timer_A(void)

        {

        switch( TAIV )

        {

        case 2: break; //CCR1不使用

        case 4: break; //CCR2不使用

        case 10: P1OUT ^= 0x01; //溢出

        break;

        }

        }



        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 新绛县| 宾阳县| 蓝山县| 宜宾市| 清涧县| 金湖县| 洛隆县| 巴林左旗| 得荣县| 彰化县| 丹棱县| 师宗县| 鸡泽县| 连州市| 韩城市| 遵化市| 苏尼特左旗| 手机| 米脂县| 忻城县| 武汉市| 罗田县| 永兴县| 海林市| 泊头市| 甘谷县| 武隆县| 金寨县| 望奎县| 元阳县| 瓦房店市| 湟中县| 莱西市| 崇州市| 大同县| 通化县| 鄂州市| 阳山县| 隆昌县| 镇康县| 甘孜县|