您的位置 首页 培训

MSP430之Timer_A之典型使用——PWM

程序一:includemsp430x14xhvoidmain(void){WDTCTL=WDTPW+WDTHOLD;关看门狗TACTL=TASSEL0+TACLR+MC0;ACLK为时钟源,清TAR,

程序一:
#includemsp430x14x.h”
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
TACTL=TASSEL0+TACLR+MC0;//ACLK为时钟源,清TAR,增计数模
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调理亮度。一个增,一个减

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/259496.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部