標題:
MSP430單片機定時器TA計數(shù) 程序
[打印本頁]
作者:
51hei單片
時間:
2016-3-14 18:57
標題:
MSP430單片機定時器TA計數(shù) 程序
本程序是《MSP430系列單片機系統(tǒng)工程設計與實踐》書里面的源碼,(包含工程文件 (例2.8.22)))完整例程下載:
http://www.torrancerestoration.com/bbs/dpj-46245-1.html
#include <msp430x42x.h>
/********************************************************************
* 名 稱:Divider_SetDivFactor
* 功 能:設置分頻系數(shù)
* 入口參數(shù):Factor: 分頻系數(shù) (2~65535)
* 出口參數(shù):無
********************************************************************/
void Divider_SetDivFactor(unsigned int Factor) //設置分頻系數(shù)
{
TACCR0=Factor-1; // 分頻系數(shù)=計數(shù)器溢出周期
TACCR2=Factor/2; // 占空比=50%
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // 停止看門狗
FLL_CTL0 |= XCAP18PF; // 配置晶振負載電容
P1DIR &=~BIT5; // P1.5(TACLK)作為輸入引腳
P1SEL |= BIT5; // 允許其第二功能,作為TACLK輸入
P2DIR |= BIT0; // P2.0作為輸出
P2SEL |= BIT0; // 允許P2.0第二功能,作為TA2輸出
TACTL = TASSEL_0 + MC_1 ; // TA外部計數(shù),增計數(shù)模式
TACCTL2 = OUTMOD_7; // TA2作為輸出,模式7 (PWM模式)
Divider_SetDivFactor(100); // 100分頻
while(1)
{
//CPU可以繼續(xù)執(zhí)行其他任務
}
}
復制代碼
作者:
51hei單片
時間:
2016-3-14 18:57
#include <msp430x42x.h>
#include "LCD_Display.h"
unsigned long int PhotonCnt; // 光子計數(shù)結(jié)果存放變量
unsigned int TA_OverflowCnt; // TA溢出次數(shù)存放變量
unsigned int CntTime;
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中斷
_EINT(); // 允許總中斷
LCD_Init(); // LCD初始化
while(1)
{
TACTL = TASSEL_0 + MC_2 + TAIE + TACLR; // TA清零并開始計數(shù)
TA_OverflowCnt=0; // 溢出次數(shù)清零
CntTime=0; // 計時清零
while(1)
{
PhotonCnt = TA_OverflowCnt*65536 + TAR; //計算累計光子個數(shù)
if(PhotonCnt>100000) break; //直到100000個為止
}
LCD_DisplayNumber(CntTime); //顯示計滿所需時間
}
}
#pragma vector = BASICTIMER_VECTOR
__interrupt void BT_ISR(void) // 1秒一次中斷(由BasicTimer所產(chǎn)生)
{
CntTime++;
}
#pragma vector=TIMERA1_VECTOR //為測量大于65536Hz頻率,計數(shù)溢出中斷
__interrupt void TA_ISR(void)
{
switch( TAIV )
{
case 2: break;
case 4: break;
case 10: TA_OverflowCnt++; //TA每次溢出,溢出次數(shù)變量+1
break;
}
}
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1