您的位置 首页 系统

MSP430F149 定时器

(1)利用定时器A的模式2(连续)实现的定时资料利用定时器A的模式2(连续)实现的定时资料在程序中对TACTL的控制,当TACTL为如下的赋值

(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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/254564.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部