[P]void main(void)
{ WDTCTL = WDTPW+WDTHOLD; //关闭看门狗 P6SEL |=0x01; //使能ADC通道 ADC12CTL0 = ADC12ON+SHT0_6+MSC; //打开ADC,设置采样时间,128个时钟周期 ADC12CTL1 = SHP+CONSEQ_2; //使用采样定时器 ADC12CTL1 |= ADC12SSEL_1; // select ACLK ADC12IE = 0x01; //使能ADC中断 ADC12CTL0 |=ENC; //使能转换 _EINT(); while (1) { ADC12CTL0 |=ADC12SC; //开始转换 _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }
}
///////
//函数名称: ADC12ISR
//功能: ADC中断服务函数,在这里用多次平均的方法计算P6.0口的模拟电压数值
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{ static int index = 0; results[index++] = ADC12MEM0; //move results if(index == Num_of_Results) { calc_cycle(results); index = 0; } _BIC_SR_IRQ(LPM0_bits);
}[/P][P]
以上是采集程序的一部分。[/P][P]采集保持时间为128个时钟周期,时钟为ACLK信号,再加上13个固定的转换时间,[/P][P]所以采样时间为(128+13)/32768=0.004s,[/P][P]大家帮我看看我计算的采样时间是不是正确。[/P][P]因为我得到的程序结果有些出入,所以我想确定一下采样周期是否正确,感谢大家![/P] |