给你一个例子,直接调用delay(uint ms) 这个就可以了,你要做2ms的延时,写个delay(2);就ok了。
#include <msp430x14x.h>
#define uchar unsigned char
#define uint unsigned int
void init_clk()//时钟初始化
{
uchar i;
BCSCTL1 &=~XT2OFF;//(置TX2=0)使TX2有效,默认是关闭的
do
{
IFG1 &= ~OFIFG;//清振荡器失效标志
for(i=0xff;i>0;i--);
}while((IFG1 & OFIFG)!=0);//若振荡器失效标志有效
BCSCTL2|=SELM_2+SELS+DIVS_3; //使MCLK=XT2=8M,SMCLK=8/8=1M
}
///////////定时器延时,分辨率1ms////////////
void delay(uint ms)
{
uint i;
for(i=ms;i>0;i--)
{
TACCTL0 &=~CCIFG; //清除中断标志
TACTL |= TACLR + MC_1;//定时器清零,增计数模式
while((TACCTL0&CCIFG)==0);//等待定时器完成1ms的定时时间
TACTL &=~MC_1;//停止定时器A
}
}
void main()
{
WDTCTL = WDTPW + WDTHOLD;
init_clk();//时钟初始化
TACTL |= TASSEL_2;//定时器时钟源为SMCLK=8/8=1MHz
TACCR0=1000;//1ms(分辨率) (1MHz(1us))
P2DIR =0xff;
while(1)
{
P2OUT = 0x00;
delay(1000);//1000ms的延时
P2OUT = 0xff;
delay(1000);
}
}
追问1.请问能直接和您联系一下吗?比如QQ
2.我想用430f149定时器做一个2ms的定时,目的是time_A 定时2ms,从而达到没2ms中断一次,在中断子程序中,改变相应的值,使数码管显示能够避免用软延时产生的循环的问题
3.关于430f149定时器选取时钟,tar,和CCRX尤其是CCR0值的计算,我不是很理解,希望您能给我讲一下,就以每个2ms产生中断为例
追答我狠忙的!!!!以后再说吧