|
用16MHz晶振作MCLK和ACLK,Timer_3设为上升沿捕获,TA计数器分频系数为1(别分),时钟源为ACLK ,每次捕获用中断把CCR0的值保存在一个指针所指的数组中.连续捕获8个上升没后,求平均(移位).
捕获时禁止TA0以外的所有中断,精度......
unsigned short MyData[ 8 ] ;
__regvar unsigned short *pMyData @ __R4 //定义寄存器变量
#pragma vector = TIMERA0_VECTOR
__raw __interrupt void TimerInt( void ) //用__raw,complier不保存和恢复寄存器组的值.直接进入中断
{
*pMyData++ = CCR0 ;
if( pMyData >= MyData + 8 )
{
TACTL0 & = ~ CCIE ;
}
}
void main( void )
{
......
while( 1 )
{
CCTL0 =CCIE ;
while( pMyData < MyData + 8 ) ;
sum() ;
××erage() ;
display() ;
}
} |
|