微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430F149单片机的内部定时器A定时1秒钟实现LED闪烁

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

时间: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

__interrupt void Timer_A (void)

{

P1OUT ^= BIT0; // 取反P1.0

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top