新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430之Timer_A之典型應用——PWM

MSP430之Timer_A之典型應用——PWM

作者: 時間:2016-11-25 來源:網(wǎng)絡 收藏
程序一:
#include"msp430x14x.h"
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//關看門狗
TACTL=TASSEL0+TACLR+MC0;//ACLK為時鐘源,清TAR,增計數(shù)模
TACCR0=512-1;//設定PWM周期
TACCTL1=OUTMOD_7;//CCR1輸出為reset/set模式
TACCR1=384;//CCR1的PWM占空比設定
TACCTL2=OUTMOD_7;//CCR2輸出為reset/set模式
TACCR2=128;//CCR2的PWM占空比設定
P1DIR|=0X0c;//P1.2、P1.3輸出,對應TA1,TA2
P1SEL|=0X0c;//TA1,TA2輸出功能
while(1);
}
功能:P1.2,P1.3分別輸出TA1,TA2的pwm信號,通過杜邦線接兩個led,
可觀察到不同占空比的pwm效果。一個亮些,一個暗些。

程序二:

voidmain(void)
{
//Stopwatchdogtimertopreventtimeoutreset
WDTCTL=WDTPW+WDTHOLD;

TBCTL=TBSSEL_2+TBCLR+MC0;//SMCLK(800K),增模式
TBCCTL1=OUTMOD_3;//置位/復位模式
TBCCR0=8000;//PWM周期
TBCCR1=0;//PWM的低電平時間

P4DIR=0X02;//P4.1輸出,P4.1受TBCCR1控制
P4SEL=0X02;//P4.1作為定時器B的PWM輸出
P1DIR=0XFC;//P1.0P1.1輸入
P1IE=0X03;//允許中斷P1.1和P1.2
P1IES=0XFC;//上升沿中斷

_EINT();
while(1);
}

#pragmavector=PORT1_VECTOR
__interruptvoidPORT_INTERRUPT(void)
{
uinti;
for(i=8000;i>0;i--);//延時,去抖
if(P1IFG&BIT0)
{
if(TBCCR1>=8000)
{
TBCCR1=1000;
}
else
{
TBCCR1=TBCCR1+1000;
}
}
if(P1IFG&BIT1)
{
if(TBCCR1<1000)
{
TBCCR1=8000;
}
else
{
TBCCR1=TBCCR1-1000;
}
}
P1IFG=0X00;//消除按鍵中斷標志
}
功能:通過P4.1外接一個led燈
430板子的key1,key2調節(jié)亮度。一個增,一個減


關鍵詞: MSP430Timer_APW

評論


技術專區(qū)

關閉