新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430占空比可變的PWM波程序

        MSP430占空比可變的PWM波程序

        作者: 時間:2016-11-13 來源:網絡 收藏
        //*******************************************************************************

        // Description: 設定一個變量來選擇初始占空比,然后通過Timer_B定時1s,每隔一秒
        // 改變一次占空比,生成占空比可變的PWM波
        // ACLK= TACLK = 32768Hz, MCLK= SMCLK= default DCO ~ 800kHz
        // Daquan. Liu

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

        // China University of Geosciences(Wuhan)
        // 2010.12.27
        // Built with IAR Embedded Workbench Version: V3.42A
        //******************************************************************************

        #include <msp430x14x.h>

        unsigned char v=5;
        void Init_TIMER_B();
        void main(void)
        {

        WDTCTL = WDTPW + WDTHOLD; // Stop WDT

        P1DIR |= 0x0C; // P1.2 and P1.3 output
        P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options

        Init_TIMER_B();

        TACTL = TASSEL_2 + TACLR; // SMCLK, up mode

        CCR0 = 512-1; // PWM Period
        CCTL1 = OUTMOD_7 ; // CCR1 reset/set
        CCTL2 = OUTMOD_7 ; //CCR2 reset/set
        if(v==5)
        {
        CCR1 = 128; // CCR1 PWM duty cycle
        CCR2 = 384; // CCR2 PWM duty cycle
        }
        else if (v==12)
        {
        CCR1 = 384; // CCR1 PWM duty cycle
        CCR2 = 128; // CCR2 PWM duty cycle
        }
        else
        {
        CCR1 = 128; // CCR1 PWM duty cycle
        CCR2 = 384; // CCR2 PWM duty cycle
        }

        TACTL |= MC_1; // Start Timer_A in up mode
        TBCTL |= MC_1; // Start Timer_B in up mode

        _EINT(); //開全局中斷
        _BIS_SR(LPM0_bits); // Enter LPM0

        }


        void Init_TIMER_B()
        {
        TBCTL |= TBSSEL0 +TBCLR; //ACLK
        TBCCTL0 = CCIE;
        TBCCR0 =32768; //定時1s
        }

        // Timer B0 interrupt service routine
        #pragma vector=TIMERB0_VECTOR
        __interrupt void Timer_B (void)
        {
        if(CCR1 >511)
        CCR1 = 64;
        else CCR1 += 32; // 調整占空比

        if(CCR2 < 10)
        CCR2 = 448;
        else CCR2 -= 32;

        }

        //此程序不能用定時器A中斷定時



        關鍵詞: MSP430占空比PWM

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 洪泽县| 泌阳县| 陕西省| 安岳县| 卢氏县| 普陀区| 竹北市| 金山区| 梁河县| 马边| 临朐县| 云阳县| 民丰县| 合作市| 焉耆| 龙山县| 华亭县| 门源| 聂拉木县| 北京市| 思茅市| 玉林市| 福鼎市| 安仁县| 都昌县| 台东县| 当雄县| 高淳县| 班玛县| 石狮市| 杭锦后旗| 彭阳县| 鱼台县| 油尖旺区| 从化市| 富蕴县| 鄱阳县| 会泽县| 连南| 广德县| 政和县|