📄 lab-05b.c
字号:
//******************************************************************************
// MSP430xG46x Demo - Timer_A, TACCR2 CAP mode. Mode ISR, DCO SMCLK
//
// Description: SMCLK provides clock source for TACLK.TACCR0 = 50000-1
// TACCR2 CAP the TACCR1 out , CCR1 += 5000;
// CPU is normally off and used only during TA_ISR.
// ACLK = 32.768kHz, MCLK = SMCLK = TACLK = Default DCO
//
// MSP430xG461x
// ---------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | P1.2|--> TA1
// | P2.0|--> TA2
//
// FengLF
// LSD SCIENCE& TECHNOLOGY CO.,LTD
// 2007.06
// Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************
#include <msp430xG46x.h>
unsigned int cap_data,data1,data2;
unsigned int j;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
TACTL = TASSEL1 + ID0 + TACLR; // 使用 SMCLK 信号, 清除 TAR
CCTL2 = CM0 + SCS + CAP + CCIE; // 上升沿捕获,同步捕获,使能 CCR2中断
CCR0 = 50000-1;
CCTL0 |= CCIE;
CCTL1 |= OUTMOD_7;
CCR1 = 0;
P1DIR |= BIT2; // P1.2输出
P1SEL |= BIT2; // P1.2 TA1
P2DIR &= ~BIT0; // P2.0 输入
P2SEL |= BIT0; // P2.0 TA2
TACTL |= MC0; // Timer_a 增计数模式
_EINT();
for (;;)
{
if (data2 > data1)
{
cap_data = data2-data1;
}
else
{
cap_data = data1-data2 + 65535 ;
}
_BIS_SR(CPUOFF);
_NOP();
}
}
//------------------------------------------------------------------------
// Timer A0 中断服务程序
//------------------------------------------------------------------------
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
if(CCR1 == 50000)
{
CCR1 = 0;
}
else
{
CCR1 += 500;
}
}
//------------------------------------------------------------------------
// Timer A1 中断服务程序
//------------------------------------------------------------------------
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{
switch(TAIV)
{
case 2: break;
case 4:
if(CCTL2 & CM0)
{
data1 = CCR2 ;
CCTL2 = (CCTL2 & (~CM0)) | CM1;
}
else if (CCTL2 & CM1)
{
data2 =CCR2 ;
CCTL2 = (CCTL2 & (~CM1)) | CM0;
}
break;
case 10: break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -