📄 timea计数模式.txt
字号:
此例程已在MC430F11实验板上验证过
//利用MC430F11开发板实验的TimerA 增计数模式学习实验.
//编写:www.microcontrol.cn DC
#include <msp430x11x1.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止
P1DIR |= BIT0+BIT2+BIT3; // P1.0,P1.2,P1.3为输出
CCTL0 = CCIE; // CCR0中断允许
CCR0 = 8000; // 为CCR0写入初值
CCTL1 = CCIE;
CCR1 = 6000;
CCTL2 = CCIE;
CCR2 = 4000;
TACTL = TASSEL_1 + MC_2; // 设置TA工作模式
// 时钟源=ACLK,工作在连续计数模式
_EINT();
LPM0;
}
// Timer A0 中断服务程序, A0是指CCR0
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
P1OUT ^= BIT0; // MC430F11板上的D1 LED闪烁
CCR0 = CCR0+8000; //增加下一次相等的计数值
}
// Timer A3 中断服务程序, A3是指CCR1,CCR2,TAR
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A3(void)
{
switch( TAIV )
{
case 2: P1OUT ^= BIT2; // CCR1-CCIFG1
CCR1 = CCR1+6000; //增加下一次相等的计数值
break; // MC430F11板上的D2 LED闪烁
case 4: P1OUT ^= BIT3; // CCR2-CCIFG2
CCR2 = CCR2+4000; //增加下一次相等的计数值
break; // MC430F11板上的D3 LED闪烁
case 10: // TAR-TAIFG,TAR中断在此例程中未用上
break;
}
}
此例程已在MC430F11实验板上验证过
//利用MC430F11开发板实验的TimerA 增计数模式学习实验.
//作者:微控设计网 DC版主
#include <msp430x11x1.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止
P1DIR |= BIT0+BIT2+BIT3; // P1.0,P1.2,P1.3为输出
CCTL0 = CCIE; // CCR0中断允许
CCR0 = 8000; // 为CCR0写入初值
CCTL1 = CCIE; // 类同上...
CCR1 = 6000;
CCTL2 = CCIE; // 类同上...
CCR2 = 4000;
TACTL = TASSEL_1 + MC_1; // 设置TA工作模式
// 时钟源=ACLK,工作在增计数模式
_EINT(); //开总中断
LPM0; //进入低功耗模式0
}
//****************************************************************************
// Timer A0 中断服务程序, A0是指CCR0
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
P1OUT ^= BIT0; // MC430F11板上的D1 LED闪烁
}
//****************************************************************************
// Timer A3 中断服务程序, A3是指CCR1,CCR2,TAR
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A3(void)
{
switch( TAIV )
{
case 2: P1OUT ^= BIT2; // CCR1
break; // MC430F11板上的D2 LED闪烁
case 4: P1OUT ^= BIT3; // CCR2
break; // MC430F11板上的D3 LED闪烁
case 10: // TAR
break;
}
}
#i nclude <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗WDT
P1DIR |= 0x01; // 设置P1.0口方向为输出。
TACTL = TASSEL_2 + MC_2 + TAIE; // 时钟源选择为SMCLK,选择计数模式,定时器中断开
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断
}
// Timer_A3 中断向量(TAIV)处理
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV )
{
case 2: break; //CCR1不使用
case 4: break; //CCR2不使用
case 10: P1OUT ^= 0x01; //溢出
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -