本帖最后由 学习msp 于 2013-9-23 19:09 编辑
我用的是MSP430AFE253单片机,外接8M晶振,本来是利用定时器A定时1秒,但是程序执行下来将近50秒,求高人指点
#include "msp430afe253.h"
unsigned int i=0;
void TimerA_Init(void);
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = XT2OFF; //选择外部晶振
BCSCTL2=SELM_2; // MCLOK的时钟源为外部晶振
P1DIR=0x01;
P1OUT=0x01;
TimerA_Init();
_EINT(); //开总中断
while(1);
}
void TimerA_Init(void)
{
TACTL = TASSEL_2 + TACLR ; //MCLK=8MHz ,清除tar
CCTL0 = CCIE+SELM_3; //开定时器中断
CCR0 = 40000; // (1/8000000)*40000 =5 ms ??
TACTL |= MC0; //增计数
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
i++;
if(i>100)
{
i=0;
if(P1OUT&BIT0)
P1OUT&=~(BIT0);
else
P1OUT|=BIT0;
}
}
在线等》》》》 |