国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

MSP430F149 定時器

發布時間:2008-11-3 22:31    發布者:MSP430
關鍵詞: 定時器
(1)利用定時器A的模式2(連續)實現的定時資料

利用定時器A的模式2(連續)實現的定時資料 在程序中對TACTL的控制,當TACTL為如下的賦值時

TACTL = TASSEL_2 + MC_2 + TAIE;           // SMCLK, contmode, interrupt

可以改變TASSEL_X來實現不同的定時,

當為TASSEL_1時選ACLK為定時時鐘,可以實現最短2S的定時,其次為2S的倍數的定時。

當為TASSEL_2時選 SMCLK為定時時鐘,定時取決于SMCLK的時鐘源,

1、SMCLK選 DCO = 800KHZ為時鐘源,最短定時時間 為 0.08S 的定時,其次為其倍數。
2、SMCLK選 XT2也即外部高頻晶振,此時定時取決于晶振頻率,及其對分頻的設置上。主要是設置BCSCTL1及     BCSCTS2.

   BCSCTL1 &=  ~XT2OFF;
  BCSCTL2 |= SELS + DIVS_3;

通過對上面兩句的不同設置,可實現不同的延時。

 

/******************************************************************************
//  MSP-FET430P140 Demo - Timer_A, Toggle P3.4, Overflow ISR, DCO SMCLK
//
//  Description: Toggle P3.4 using software and Timer_A overflow ISR.
//  In this example an ISR triggers when TA overflows. Inside the TA
//  overflow ISR P3.4 is toggled. Toggle rate is approximatlely 12Hz.
//  Proper use of the TAIV interrupt vector generator is demonstrated.
//  ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~800kHz
//
//           MSP430F149
//         ---------------
//     /||            XIN|-
//      | |               |
//      --|RST        XOUT|-
//        |               |
//        |           P3.4|-->LED
//
//  Dasheng
//  LiTian Electronic Inc.
//  Feb 2008
//  Built with IAR Embedded Workbench Version: 3.42A
功    能: 由定時器A,采用800KHz的DCO,來實現近一秒的定時中斷;
計算方法: T = 1/800,000 = 1.25uS so 根據連續計數模式,當計到0XFFFF時,發生溢出中斷
因此溢出一次的時間是: 65536*1.25 = 0.0819S,所以計時1秒需12次溢出。
******************************************************************************/

#include

typedef unsigned char uchar;
typedef unsigned int  uint;
uchar flag=0;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BCSCTL1 &=  ~XT2OFF;
  BCSCTL2 |= SELS + DIVS_3;

 3DIR |= BIT4;

  TACTL = TASSEL_2 + MC_2 + TAIE;           // SMCLK, contmode, interrupt
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt

}
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
 switch( TAIV )
 {
   case  2: break;                          // CCR1 not used
   case  4: break;                          // CCR2 not used
   case 10: P4OUT ^= BIT5;                  // overflow
            break;
 }
}

/*

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P4OUT ^= BIT5;                       // Toggle P3.4
}

*/

(2)利用定時器A的模式1(上升)實現的定時資料

此時要用到TACCTL0 及 TACCR0 ,根據設定的不同的TACCR0及不同的TASSEL_X即可實現不同的定時。

但此時的中斷程序要改變。

對定時器A的中斷的說明:

1、TIMERA1_VECTOR  的中斷地址為 0XFFEA, 此中斷入口地址包含3個中斷源,屬于多源中斷,通過TAIV的值,可以知道是哪個源的中斷,當TAIV 為0X02H時  中斷源為  TACCR1  CCR1IFG

                                      當TAIV 為0X04H時,中斷源為 TACCR2  CCR2IFG

                                      當TAIV 為0X0AH時,中斷源為 TA OVERFLOW TAIFG

2、TIMERA0_VECTOR  的中斷地址為 0XFFEC  為單源中斷,中斷源為TACCR0 CCR0IFG

 

對定時時間的說明:

當TASSEL_1時,選ACLK = 32.768KHZ,此時根據選取不同的TACCR0來實現不同的延時,

當TASSEL_2時,選SMCLK = DCO 時,~~~~~~~~~~~~~~~~~~~~~

                            選SMCLK = XT2時,~~~~~~~~~~~~~~~~

關鍵語句:

TACTL = TASSEL_X + MC_1;

TACCR0 = ~~~~~~~;

TACCTL0 = CCIE;

(3)、利用定時器A的比較模式,及輸出模式4和連續計數模式可實現同時實現4個獨立的定時間隔,或4種不同的頻率輸出。

在實驗的過程中,同時驅動數碼管的4個段。 

在比較模式下主要區分TACCR0 TACCR1 TACCR2 及TAIFG,的中斷向量及入口地址,及輸出模式(共8種)

 

其程序如下:

#include

typedef unsigned char uchar;
typedef unsigned int  uint;
uchar flag=0;
uchar table[] = {0x18,0x7e,0x51,0x52,0x36,0x92,0x90,0x5E,0x10,0x12}; //對應0---9的共陽極碼
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  //BCSCTL1 |=  XT2OFF;
  //BCSCTL2 |= SELS + DIVS_3;
  TACCTL0 = OUTMOD_4 +CCIE ;  //Enable interrupt
  TACCTL1 = OUTMOD_4 +CCIE ;
  TACCTL2 = OUTMOD_4 +CCIE ;

  TACCR1 = 0X8000;
  TACCR2 = 0X2000;
  TACCR0 = 0XF000;
  P3DIR |= BIT6 + BIT7;                            // P3.4 output
  P3OUT |= BIT6 + BIT7;
  P4DIR = 0XFF;
  P4OUT = 0XFF;
  TACTL = TASSEL_2 + MC_2 + TAIE;           // SMCLK, contmode, interrupt
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt

}
/**/
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
 switch( TAIV )
 {
   case  2: P4OUT ^= BIT5; TACCR1 += 0X8000;break;                          // CCR1 not used
   case  4: P4OUT ^= BIT3;TACCR2 += 0X2000;break;                          // CCR2 not used
   case 10: flag++;
   if(flag==12){P4OUT ^= BIT2; flag = 0;    }             // overflow
            break;//flag++;
 }
}

/**/
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer0_A (void)
{
  P4OUT ^= BIT4;                       // Toggle P3.4
  TACCR0 += 0XF000;
}
本文地址:http://m.qingdxww.cn/thread-2878-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎影院在线免费观看视频 | jizz日本老师 | 无人视频免费观看免费视频 | 四虎成人免费网站在线 | 国产成人精品福利站 | 国产欧美一区二区三区免费看 | 中文 日本 免费 高清 | 国产免费a视频 | 日韩一区二区三区在线观看 | 日韩一区二区三区在线 | 久久成人亚洲 | 中国一级毛片视频 | 天使萌一区二区三区免费观看 | 国产香蕉视频在线观看 | 亚洲欧美日韩一区成人 | 美女无遮挡拍拍拍免费视频 | 成 人 a v免费视频 | 日本不卡一区 | 手机看日韩 | 2022国内精品免费福利视频 | 欧美3p在线观看一区二区三区 | 日本不卡视频网站 | 欧美精品在线免费 | 欧美日韩乱妇高清免费 | 中文字幕手机在线播放 | 免费观看一级毛片 | 热灸灸这里只有精品 | 欧美色成人tv在线播放 | 逃离韩国动漫免费观看 | 天堂在线最新版资源www | 网www天堂资源在线 王者荣耀之白丝玉足榨精 王茜麻豆 | 国产91福利在线精品剧情尤物 | 久久8| 在线观看精品国产入口 | 国产精品黄在线观看免费 | aⅴ免费在线观看 | 日韩在线 中文字幕 | 久热精品6 | 国产香蕉在线视频 | 色偷偷91久久综合噜噜噜 | 香蕉久久高清国产精品免费 |