|
本程序是《MSP430系列單片機(jī)系統(tǒng)工程設(shè)計(jì)與實(shí)踐》書里面的源碼,(包含工程文件 (例2.8.21)))完整例程下載:http://www.torrancerestoration.com/bbs/dpj-46245-1.html
‘
關(guān)于本程序的詳細(xì)解說大家可以下載電子書點(diǎn)擊上圖即可
- #include <msp430x42x.h>
- #include "LCD_Display.h"
- unsigned long int Freq;
- unsigned int TA_OverflowCnt; //TA溢出次數(shù)存放變量
- void main( void )
- {
- WDTCTL = WDTPW + WDTHOLD; // 停止看門狗
- FLL_CTL0 |= XCAP18PF; // 配置晶振負(fù)載電容
- P1DIR &=~BIT5; // P1.5(TACLK)作為輸入引腳
- P1SEL |= BIT5; // 允許第二功能,作為TACLK輸入
- BTCTL = BTDIV+BT_fCLK2_DIV128; // BasicTimer 設(shè)為1秒1次中斷
- IE2 |= BTIE; // 允許BasicTimer中斷
- LCD_Init();
- _EINT(); // 允許總中斷
- while(1)
- {
- LPM3; //休眠,等待被BasicTimer喚醒
- //-------------------------以下代碼每秒運(yùn)行一次------------------
- Freq=TA_OverflowCnt*65536 + TAR; // 讀取上次TA計(jì)數(shù)值及溢出次數(shù),計(jì)算頻率。
- TA_OverflowCnt=0; // 溢出次數(shù)清零
- TACTL = TASSEL_0 + MC_2 + TAIE + TACLR; // TA清零并重新開始計(jì)數(shù)
- LCD_DisplayLongNumber(Freq);
- }
- }
- #pragma vector = BASICTIMER_VECTOR
- __interrupt void BT_ISR(void) // 1秒一次中斷(由BasicTimer所產(chǎn)生)
- {
- __low_power_mode_off_on_exit(); // 喚醒CPU
- }
- #pragma vector=TIMERA1_VECTOR //為測(cè)量大于65536Hz頻率,計(jì)數(shù)溢出中斷
- __interrupt void TA_ISR(void)
- {
- switch( TAIV )
- {
- case 2: break;
- case 4: break;
- case 10: TA_OverflowCnt++; //TA每次溢出,溢出次數(shù)變量+1
- break;
- }
- }
復(fù)制代碼
|
|