新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430F149单片机的内部定时器A定时1秒钟实现LED闪烁

MSP430F149单片机的内部定时器A定时1秒钟实现LED闪烁

作者: 时间:2016-11-27 来源:网络 收藏
#include " msp430x14x.h"
//********************函数声明******************
void InitClock();
//********************主函数********************
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关看门狗
InitClock(); // 初始化时钟
P1DIR |= BIT0; // 设P1.0为输出
CCTL0 = CCIE; // 使能CCR0中断
CCR0 = 500;
TACTL = TASSEL_2 + MC_1; // 子系统时钟, 增计 数模
_BIS_SR(LPM0_bits + GIE); // 低功耗模式0/ 开总中断
}
//*******************************************
函数名称:InitClock
能:初始化时钟函数
数:无
返回值 :无
//********************************************
void InitClock()
{
unsigned int oscdly;
BCSCTL1 &= ~XT2OFF; //清OSCOFF/XT2,使XT2振荡器有效
do
{
IFG1 &=~OFIFG; //清OFIFG
oscdly=255;
while(oscdly--); //延时等待
}
while(IFG1 & OFIFG); //直到OFIFG=0为止
DCOCTL |= DCO0 + DCO1 + DCO2; // Max DCO
BCSCTL1 |= RSEL0 + RSEL1 + RSEL2; // XT2on, max RSEL
//这两句设置DCOCTL和BCSCTL1,设置DCO的频率
//一般来说,PUC复位之后,如果没有特定设置系统时钟MCLK,MCU将默
//认DCO振荡器产生的频率为系统时钟,不过如果设置BCSCTL2来选定
//MCLK的时钟源的话(如:BCSCTL2 |= SELM_2+SELS;)系统时钟就是由
//XT2振荡而来.
//-------------------------------------------------------------
BCSCTL2 |= SELM_2+SELS; //SMCLK and MCLK uses XT2
//这一句设置BCSCTL2,选定MCLK和SMCLK的时钟源
//注意:ACLK只能来源于LFXT1.可以在BCSCTL1里设置ACLK的分频。
//-------------------------------------------------------------
}
//*******************************************
函数名称:Timer_A
能:定时器A中断服务子函数
数:无
返回值 :无
//********************************************
#pragma vector=TIMERA0_VECTOR
__ interruptvoid Timer_A (void)
{
P1OUT ^= BIT0; // 取反P1.0
}


评论


技术专区

关闭