欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3569|回復: 0
收起左側

MSP430單片機 定時器TA計數 程序

[復制鏈接]
ID:108615 發表于 2016-3-14 18:55 | 顯示全部樓層 |閱讀模式
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件 (例2.8.21)))完整例程下載:http://www.raoushi.com/bbs/dpj-46245-1.html

關于本程序的詳細解說大家可以下載電子書點擊上圖即可
  1. #include <msp430x42x.h>
  2. #include "LCD_Display.h"
  3. unsigned long int Freq;
  4. unsigned int TA_OverflowCnt;              //TA溢出次數存放變量
  5. void main( void )
  6. {
  7.    WDTCTL = WDTPW + WDTHOLD;          // 停止看門狗
  8.    FLL_CTL0 |= XCAP18PF;              // 配置晶振負載電容
  9.    P1DIR &=~BIT5;                     // P1.5(TACLK)作為輸入引腳
  10.    P1SEL |= BIT5;                     // 允許第二功能,作為TACLK輸入
  11.    BTCTL = BTDIV+BT_fCLK2_DIV128;     // BasicTimer 設為1秒1次中斷
  12.    IE2 |= BTIE;                       // 允許BasicTimer中斷
  13.    LCD_Init();
  14.    _EINT();                           // 允許總中斷
  15.    while(1)
  16.    {
  17.      LPM3; //休眠,等待被BasicTimer喚醒
  18.      //-------------------------以下代碼每秒運行一次------------------   
  19.      Freq=TA_OverflowCnt*65536 + TAR;  // 讀取上次TA計數值及溢出次數,計算頻率。
  20.      TA_OverflowCnt=0;                             // 溢出次數清零
  21.      TACTL = TASSEL_0 + MC_2 + TAIE + TACLR; // TA清零并重新開始計數
  22.      LCD_DisplayLongNumber(Freq);
  23.    }
  24. }

  25. #pragma vector = BASICTIMER_VECTOR
  26. __interrupt void BT_ISR(void)             // 1秒一次中斷(由BasicTimer所產生)
  27. {
  28.    __low_power_mode_off_on_exit();        // 喚醒CPU
  29. }

  30. #pragma vector=TIMERA1_VECTOR             //為測量大于65536Hz頻率,計數溢出中斷
  31. __interrupt void TA_ISR(void)
  32. {
  33.   switch( TAIV )
  34.   {
  35.     case  2:   break;
  36.     case  4:   break;                          
  37.     case 10:  TA_OverflowCnt++;           //TA每次溢出,溢出次數變量+1
  38.                 break;
  39.   }
  40. }  
復制代碼



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表