找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

F5529定時器使用程序詳解

[復制鏈接]
跳轉到指定樓層
樓主
ID:89763 發(fā)表于 2015-9-12 20:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <msp430f5529.h>

void main(void)
{
   WDTCTL=WDTPW+WDTHOLD;
   P1DIR|=(BIT1+BIT2+BIT3+BIT4+BIT5);//P1.1-P1.5為輸出方向
   P1OUT=0x00;        //全部拉低,初始化LED全滅
   TA0CCTL1=CCIE;     //捕獲比較器1開啟CCIFG位中斷
   TA0CCR1=13107;        //置入要比較的數(shù)值0xff/5=13107
   TA0CCTL2=CCIE;     //捕獲比較器2開啟中斷
   TA0CCR2=26214;        //13107*2=26214
   TA0CCTL3=CCIE;     //捕獲比較器3開啟中斷

   TA0CCR3=39321;        //13107*3=39321
   TA0CCTL4=CCIE;     //捕獲比較器4開啟中斷
   TA0CCR4=52428;        //13107*4=52428
   TA0CTL|=TACLR+TAIE;      //開啟中斷并清零
   TA0CTL|=TASSEL_1+MC_2+TAIE;//選擇SCLK32.768KHZ作為時鐘,選用連續(xù)模式,并開啟中斷
   /*這樣的話,5個燈閃一遍的時間為0xffff/32768=2S*/
   __enable_interrupt();    //開啟總中斷
   while(1);
}
/*TIMER0_A0_VECTOR是計時器0的CCR0的中斷寄存器,TIMER0_A1_VECTOR是計時器0的CCR1-CCR4、TA的寄存器*/
/*同理定時器TA1也是分為兩個TIMER1_A0_VECTOR和TIMER1_A1_VECTOR*/
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TimerA(void)
{
   switch(__even_in_range(TA0IV,14))
   /* 這句話的意思是:只有在TA0IV的值是在0--14內的偶數(shù)時才會執(zhí)行switch函數(shù)內的語句
            其作用是提高switch語句的效率*/
   {
      case 2:P1OUT=BIT1;break; //TACCR1 CCIFG置位,表明計數(shù)值和設定的13107相等了,也就是說計了0.4S了
      case 4:P1OUT=BIT2;break; //TACCR2 CCIFG置位,表明計了0.8S了
      case 6:P1OUT=BIT3;break; //TACCR3 CCIFG置位,表明計了1.2S了
      case 8:P1OUT=BIT4;break; //TACCR4 CCIFG置位,表明計了1.6S了
      case 14:P1OUT=BIT5;break;   //TAIFG置位,表明計了2S了
      default:break;
   }
   
}


評分

參與人數(shù) 1黑幣 +5 收起 理由
daihx + 5 很給力!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:92785 發(fā)表于 2015-10-18 00:51 | 只看該作者
謝謝了
回復

使用道具 舉報

板凳
ID:113234 發(fā)表于 2016-4-10 10:50 | 只看該作者
不錯謝謝了~~~~~~~~~
回復

使用道具 舉報

地板
ID:134845 發(fā)表于 2016-7-24 18:38 | 只看該作者
謝謝!贊!
回復

使用道具 舉報

5#
ID:219685 發(fā)表于 2017-7-14 16:28 | 只看該作者
厲害
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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