////*****重庆三峡学院
电子与信息工程学院 创新实验室 唐老鸭*****////
#include "msp430g2553.h"
//p1.2输出50%方波,p2.1和2.4输出50%和25%波形
void main (void)
{
WDTCTL= WDTPW + WDTHOLD; //设置看门狗控制寄存器,关看门狗
//定时器A0的
TACTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器,
// TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK;
// TACLR=0x0004,清除定时器A计数器
CCR0 =12000; //设置捕获/比较寄存器,初始值为12000,对于12KHz的频率,周期相当于1s
CCR1=6000; //占空比50%
CCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
//增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
//OUTMOD_7与之相反
CCR2=3000; //占空比25%,错了,没有TA0.2
CCTL2=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
//增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
//OUTMOD_7与之相反
P1SEL |=BIT2;
P1DIR |=BIT2; //输出 TA0.1
//定时器A1的
TA1CTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器,
// TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK;
// TACLR=0x0004,清除定时器A计数器
TA1CCR0 =12000; //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,周期相当于1s
TA1CCR1=6000; //占空比50%
TA1CCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
//增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
//OUTMOD_7与之相反
TA1CCR2=3000; //占空比25%
TA1CCTL2=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
//增计数时相当于0到CCR1为低电平,ccr1到CCR0为高电平,
//OUTMOD_7与之相反
P2DIR |=BIT1+BIT4; //输出 TA2.1和TA2.2
P2SEL |=BIT1+BIT4;
while(1) //无限次while循环
{
_NOP();
}
}
4