MSP430之Timer_A之典型应用——PWM 作者: 时间:2016-11-25 来源:网络 加入技术交流群 扫码加入和技术大咖面对面交流海量资料库查询 收藏 程序一:#include"msp430x14x.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,TA2P1SEL|=0X0c;//TA1,TA2输出功能while(1);}功能:P1.2,P1.3分别输出TA1,TA2的pwm信号,通过杜邦线接两个led,可观察到不同占空比的pwm效果。一个亮些,一个暗些。程序二:voidmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=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.2P1IES=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调节亮度。一个增,一个减
评论