标题:
MSP430单片机 定时器TA计数 程序
[打印本页]
作者:
51hei单片
时间:
2016-3-14 18:55
标题:
MSP430单片机 定时器TA计数 程序
本程序是《MSP430系列单片机系统工程设计与实践》书里面的源码,(包含工程文件 (例2.8.21)))完整例程下载:
http://www.51hei.com/bbs/dpj-46245-1.html
‘
关于本程序的详细解说大家可以下载电子书点击上图即可
#include <msp430x42x.h>
#include "LCD_Display.h"
unsigned long int Freq;
unsigned int TA_OverflowCnt; //TA溢出次数存放变量
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
FLL_CTL0 |= XCAP18PF; // 配置晶振负载电容
P1DIR &=~BIT5; // P1.5(TACLK)作为输入引脚
P1SEL |= BIT5; // 允许第二功能,作为TACLK输入
BTCTL = BTDIV+BT_fCLK2_DIV128; // BasicTimer 设为1秒1次中断
IE2 |= BTIE; // 允许BasicTimer中断
LCD_Init();
_EINT(); // 允许总中断
while(1)
{
LPM3; //休眠,等待被BasicTimer唤醒
//-------------------------以下代码每秒运行一次------------------
Freq=TA_OverflowCnt*65536 + TAR; // 读取上次TA计数值及溢出次数,计算频率。
TA_OverflowCnt=0; // 溢出次数清零
TACTL = TASSEL_0 + MC_2 + TAIE + TACLR; // TA清零并重新开始计数
LCD_DisplayLongNumber(Freq);
}
}
#pragma vector = BASICTIMER_VECTOR
__interrupt void BT_ISR(void) // 1秒一次中断(由BasicTimer所产生)
{
__low_power_mode_off_on_exit(); // 唤醒CPU
}
#pragma vector=TIMERA1_VECTOR //为测量大于65536Hz频率,计数溢出中断
__interrupt void TA_ISR(void)
{
switch( TAIV )
{
case 2: break;
case 4: break;
case 10: TA_OverflowCnt++; //TA每次溢出,溢出次数变量+1
break;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1