请问msp430这个定时器时间为什么是33ms

void Init_Timer_A(void) //初始化定时器
{
TACTL = TASSEL_2 + TACLR + ID1 + ID0; // MCLK, upmode 8 分频
TACCR0 = 65535; //定时 33ms
}
MCLK是8MHZ

TACTL = TASSEL_2 + TACLR + ID1 + ID0; 即

TACTL = 0000001011000100;
对照pdf可以看出,时钟是MCLK(800kHz),8分频,也就是时钟频率为100k,但是此处的定时器模式控制位选择的是停止,所以无法计算定时器的时间,也就是这个注释是有误的。
温馨提示:内容为网友见解,仅供参考
无其他回答

我想利用msp430定时器,每隔2ms产生一个中断就行,不知道如何设置初值...
CCTL0=CCIE;CCR0=20000;TACTL=TASSEL_2+TACLR+MC_1+ID_3;_EINT();设置msp430主频为8MHz,定时器使用MCLK,8分频,然后设置以上即可。你的情况可以在 pragma vector = TIMERA0_VECTOR __interrupt void Timer_A(void){ flag=1;} 中设置控制位,在主程序中设置循环。比如主程序中加入 while(1...

MSP430单片机两位数码管程序?
uint c;uchar b;void delay(uint x);void main(){ \/\/uint i;WDTCTL = WDTPW + WDTHOLD;\/\/ Stop watchdog timer to prevent time out reset P1DIR=0Xff;P2DIR=0xff;TACTL=TASSEL0+TACLR;\/\/定时器A采样方式0,TASSEL0=0x0100,选取子时钟,然后定时器清零 CCTL0=CCIE;\/\/中断使能端 CCR0=...

相似回答