基于MSP430F149定时器程序
- #include <msp430x14x.h>
- void main (void)
- {
- WDTCTL= WDTPW + WDTHOLD; //设置看门狗控制寄存器,关看门狗
-
- /* unsigned char j;//使用外部高频晶体振荡器
- BCSCTL1&=~XT2OFF;
- do{
- IFG1&=~OFIFG;
- for(j=0XFF;j>0;j--);
- }while((IFG1&OFIFG));
- BCSCTL2|=SELM_2; */
-
-
- //定时器A的
- TACTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器,
- // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK;
- // TACLR=0x0004,清除定时器A计数器
-
- CCR0 =32768; //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,周期相当于1s
-
- CCR1=16384; //占空比50%
- CCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
- //OUTMOD_7与之相反
- CCR2=8192; //占空比25%
- CCTL2=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
- //OUTMOD_7与之相反
- P1DIR |=BIT1+BIT2+BIT3; //P1.2为输出 TA1
- P1SEL |=BIT1+BIT2+BIT3;
-
-
-
- //定时器B的
- TBCTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器,
- // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK;
- // TACLR=0x0004,清除定时器A计数器
- TBCCR0 =16384; //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,周期相当于1s
-
- TBCCR1=8192; //占空比50%
- TBCCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
- //OUTMOD_7与之相反
- TBCCR2=4096; //占空比25%
- TBCCTL2=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- //增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
- //OUTMOD_7与之相反
- P4DIR |=BIT1+BIT2+BIT3; //P1.2为输出 TA1
- P4SEL |=BIT1+BIT2+BIT3;
-
- while(1) //无限次while循环
- {
- _NOP();
- }
- }
[color=rgb(51, 102, 153) !important]复制代码
|
感谢分享