久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4091|回復: 1
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:108615 發表于 2016-3-14 18:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件 (例2.8.22)))完整例程下載:http://www.zg4o1577.cn/bbs/dpj-46245-1.html

  1. #include <msp430x42x.h>

  2. /********************************************************************
  3. * 名    稱:Divider_SetDivFactor
  4. * 功    能:設置分頻系數
  5. * 入口參數:Factor:                分頻系數        (2~65535)
  6. * 出口參數:無
  7. ********************************************************************/
  8. void Divider_SetDivFactor(unsigned int Factor) //設置分頻系數
  9. {
  10.   TACCR0=Factor-1;                      // 分頻系數=計數器溢出周期
  11.   TACCR2=Factor/2;                      // 占空比=50%
  12. }

  13. void main( void )
  14. {
  15.    WDTCTL = WDTPW + WDTHOLD;            // 停止看門狗
  16.    FLL_CTL0 |= XCAP18PF;                     // 配置晶振負載電容
  17.    P1DIR &=~BIT5;                             // P1.5(TACLK)作為輸入引腳
  18.    P1SEL |= BIT5;                             // 允許其第二功能,作為TACLK輸入
  19.    P2DIR |= BIT0;                       // P2.0作為輸出
  20.    P2SEL |= BIT0;                       // 允許P2.0第二功能,作為TA2輸出
  21.    TACTL = TASSEL_0 + MC_1 ;            // TA外部計數,增計數模式
  22.    TACCTL2 = OUTMOD_7;                  // TA2作為輸出,模式7 (PWM模式)
  23.    Divider_SetDivFactor(100);            // 100分頻  
  24.    while(1)
  25.    {
  26.       //CPU可以繼續執行其他任務   
  27.    }
  28. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:108615 發表于 2016-3-14 18:57 | 只看該作者
  1. #include <msp430x42x.h>
  2. #include "LCD_Display.h"
  3. unsigned long int PhotonCnt;              // 光子計數結果存放變量
  4. unsigned int TA_OverflowCnt;              // TA溢出次數存放變量
  5. unsigned int CntTime;
  6. void main( void )
  7. {
  8.    WDTCTL = WDTPW + WDTHOLD;            // 停止看門狗
  9.    FLL_CTL0 |= XCAP18PF;                     // 配置晶振負載電容
  10.    P1DIR &=~BIT5;                             // P1.5(TACLK)作為輸入引腳
  11.    P1SEL |= BIT5;                             // 允許其第二功能,作為TACLK輸入
  12.    BTCTL = BTDIV+BT_fCLK2_DIV128;            // BasicTimer 設為1秒1次中斷
  13.    IE2 |= BTIE;                                       // 允許BasicTimer中斷
  14.    _EINT();                                           // 允許總中斷
  15.    LCD_Init();                                        // LCD初始化
  16.    
  17.    while(1)
  18.    {
  19.      TACTL = TASSEL_0 + MC_2 + TAIE + TACLR; // TA清零并開始計數
  20.      TA_OverflowCnt=0;                       // 溢出次數清零
  21.      CntTime=0;                              // 計時清零
  22.      while(1)
  23.      {
  24.        PhotonCnt = TA_OverflowCnt*65536 + TAR; //計算累計光子個數
  25.        if(PhotonCnt>100000) break;             //直到100000個為止
  26.      }
  27.      LCD_DisplayNumber(CntTime);               //顯示計滿所需時間
  28.    }
  29. }

  30. #pragma vector = BASICTIMER_VECTOR
  31. __interrupt void BT_ISR(void)             // 1秒一次中斷(由BasicTimer所產生)
  32. {
  33.   CntTime++;
  34. }


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区在线视频 | 成人二区 | 亚洲欧美视频 | 色吧久久 | 午夜网站视频 | 日本a v在线播放 | 日韩av三区 | 在线a视频| 性生生活大片免费看视频 | 日韩有码一区 | 欧美成年网站 | 求毛片 | 日日碰狠狠躁久久躁96avv | 亚洲国产精品一区在线观看 | 国产精品成人一区二区三区 | 日韩av在线一区 | 亚洲国产第一页 | 亚洲一区二区三区欧美 | 成人在线视频免费播放 | 亚洲精品视频一区 | 成人国产一区二区三区精品麻豆 | 麻豆久久久久久 | 欧美日韩一区二区三区四区五区 | 欧美日韩久久精品 | 91精品国产色综合久久 | 日韩不卡一区二区三区 | 欧美在线一区二区三区 | 日韩欧美国产一区二区三区 | 成人午夜免费在线视频 | 国产在线二区 | 亚洲欧美激情四射 | 欧美精品一二三区 | 精品日韩欧美一区二区 | 色综合久| 成人性生交大免费 | 久久爱一区 | 免费在线观看91 | 亚洲午夜av久久乱码 | 亚洲高清一区二区三区 | 91在线视频免费观看 | 成人欧美一区二区三区在线观看 |