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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4028|回復: 1
打印 上一主題 下一主題
收起左側(cè)

MSP430單片機定時器TA捕獲程序

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

關(guān)于本程序的詳細解說大家可以下載電子書點擊上圖即可
  1. #include <msp430x42x.h>
  2. #include "LCD_Display.h"
  3. unsigned int TA_OverflowCnt;                // TA溢出次數(shù)存放變量
  4. unsigned long int Period;                // 脈寬測量結(jié)果存放變量
  5. unsigned int RiseCapVal;                // 上升沿時刻捕獲值存放變量
  6. unsigned char Edge=0;                   // 當前觸發(fā)沿
  7. #define RISE   0
  8. #define FALL   1
  9. void main( void )
  10. {
  11.   WDTCTL = WDTPW + WDTHOLD;               // 停止看門狗
  12.   FLL_CTL0 |= XCAP18PF;                         // 配置晶振負載電容
  13.   P1DIR &=~(BIT2);                               // P1.2(TA1)設(shè)為輸入(可省略)
  14.   P1SEL |=  BIT2;                                    // P1.2設(shè)為第二功能(TA1)
  15.   TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // TA連續(xù)計數(shù),開始計時,SMCLK,開中斷
  16.   TACCTL1 = CAP + CM_1 +  CCIS_1 + SCS + CCIE;
  17.   //捕獲模塊1啟動,選擇TA1(P1.2)引腳作為捕獲源,上升沿捕獲,同步模式,開啟捕獲中斷
  18.   BTCTL=0;
  19.   LCD_Init();
  20.   _EINT();                                     // 總中斷允許
  21.   LPM0;                                          // 進入低功耗模式3休眠,全部程序在中斷內(nèi)執(zhí)行
  22. }

  23. #pragma vector=TIMERA1_VECTOR
  24. __interrupt void TA_ISR(void)                     //Timer_A中斷
  25. {
  26.   switch( TAIV )
  27.   {
  28.     case  2:   //  比較/捕獲模塊1中斷
  29.                if(Edge==RISE)         //如果是上升沿的捕獲中斷
  30.                 {
  31.                   RiseCapVal=TACCR1;  //保存上升沿時刻捕獲值
  32.                   TACCTL1 = CAP +CM_2 +CCIS_1 +SCS +CCIE;//改為下降沿觸發(fā)
  33.                   Edge=FALL;          //觸發(fā)沿狀態(tài)標志
  34.                 }
  35.                 else                  //如果是下降沿的捕獲中斷
  36.                 {
  37.                   Period=TA_OverflowCnt*65536 + TACCR1 - RiseCapVal;//計算周期
  38.                   TA_OverflowCnt=0;              //溢出次數(shù)清零
  39.                   TACCTL1 = CAP +CM_2 +CCIS_1 +SCS +CCIE;//改為上升沿觸發(fā)
  40.                   Edge=FALL;                      //觸發(fā)沿狀態(tài)標志
  41.                   LCD_DisplayLongNumber(Period);  //顯示
  42.                 }            
  43.                break;
  44.     case  4:   break;                          
  45.     case 10:  TA_OverflowCnt++;                //TA每次溢出,溢出次數(shù)變量+1
  46.                 break;
  47.   }
  48. }
復制代碼



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

使用道具 舉報

沙發(fā)
ID:108615 發(fā)表于 2016-3-14 18:45 | 只看該作者
  1. #include <msp430x42x.h>
  2. #include "LCD_Display.h"
  3. unsigned int TA_OverflowCnt;                // TA溢出次數(shù)存放變量
  4. unsigned long int Period;                // 周期測量結(jié)果存放變量
  5. unsigned int PervCapVal;                // 前一次捕獲值存放變量
  6. void main( void )
  7. {
  8.   WDTCTL = WDTPW + WDTHOLD;               // 停止看門狗
  9.   FLL_CTL0 |= XCAP18PF;                         // 配置晶振負載電容
  10.   P1DIR &=~(BIT2);                               // P1.2(TA1)設(shè)為輸入(可省略)
  11.   P1SEL |=  BIT2;                                    // P1.2設(shè)為第二功能(TA1)
  12.   TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // TA連續(xù)計數(shù),開始計時,SMCLK,開中斷
  13.   TACCTL1 = CAP + CM_1 +  CCIS_1 + SCS + CCIE;
  14.   //捕獲模塊1啟動,選擇TA1(P1.2)引腳作為捕獲源,上升沿捕獲,同步模式,開啟捕獲中斷
  15.   BTCTL=0;
  16.   LCD_Init();
  17.   _EINT();                                     // 總中斷允許
  18.   LPM0;                                          // 進入低功耗模式3休眠,全部程序在中斷內(nèi)執(zhí)行
  19. }

  20. #pragma vector=TIMERA1_VECTOR
  21. __interrupt void TA_ISR(void)                     //計滿至65536溢出
  22. {
  23.   switch( TAIV )
  24.   {
  25.     case  2:   Period=TA_OverflowCnt*65536 + TACCR1 - PervCapVal;//計算周期
  26.                PervCapVal=TACCR1;             //保存捕獲值,供下一次使用
  27.                TA_OverflowCnt=0;              //溢出次數(shù)清零
  28.                LCD_DisplayLongNumber(Period); //顯示
  29.                break;
  30.     case  4:   break;                          
  31.     case 10:  TA_OverflowCnt++;                //TA每次溢出,溢出次數(shù)變量+1
  32.                 break;
  33.   }
  34. }
復制代碼
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区免费电影 | 91精品国产综合久久小仙女图片 | 久久91精品国产一区二区三区 | 午夜久久久久久久久久一区二区 | 黄色一级大片在线免费看产 | 在线观看你懂的网站 | 久久久久国色av免费观看性色 | 91精品国产91 | 欧美专区在线视频 | 免费在线观看av片 | 99re在线视频| 亚洲人va欧美va人人爽 | 中文字幕在线一区 | 超碰3 | 一区二区在线 | 天堂一区二区三区 | 97伊人| 国精产品一品二品国精在线观看 | 日韩一级精品视频在线观看 | 欧美日产国产成人免费图片 | 亚洲成人av在线 | 欧美性久久 | 久久久网| 国产精品久久久久无码av | 午夜国产 | 欧洲成人| 日韩中文字幕一区 | 九九99九九精彩46 | 黄色网址免费看 | 天天操 夜夜操 | 7777在线 | 特级一级黄色片 | 国产视频黄色 | 毛片一区二区三区 | 精品国产欧美 | 国产99久久精品一区二区永久免费 | 日韩欧美大片 | 日韩精品在线免费观看 | 精品无码久久久久国产 | 亚洲成av | 97超碰人人草 |