P6SEL = 0x7F //管脚功能选择成ADC
ADC12CTL0=ADC12ON+MSC+SHT0_2+REFON+REF2_5V//打开ADC内核/连续采样/采样率设置/打开内部参考电压源/选择2.5V参考电压
ADC12CTL1 = SHP+CONSEQ_1 //采样信号来自采样定时器/序列通道单次转换模式
ADC12MCTL0 = INCH_0+SREF_1 //通道0/参考电压源选择内部参考电压
ADC12MCTL1 = INCH_1+SREF_1
ADC12MCTL2 = INCH_2+SREF_1
ADC12MCTL3 = INCH_3+SREF_1
ADC12MCTL4 = INCH_4+SREF_1
ADC12MCTL5 = INCH_5+SREF_1
ADC12MCTL6 = INCH_6+SREF_1+EOS//EOS序让雀列转换结束
ADC12IE = 0x40 //使能ADC中断
ADC12CTL0 |= ENC//允许转换
ADC12CTL0 |= ADC12SC//消滑亮开始转换
_EINT() //全局中断使能 }
interrupt[ADC_VECTOR] void ADC12ISR (void)
{
results[0] = ADC12MEM0 //将通拿宽道0采样结果读出,赋给RESULTS数组
results[1] = ADC12MEM1
results[2] = ADC12MEM2
results[3] = ADC12MEM3
results[4] = ADC12MEM4
results[5] = ADC12MEM5
results[6] = ADC12MEM6
IE2|=UCA0RXIE//开接收使能这行 *** 作没变吗?可能性有几个,第一是你看寄存器值的时间不对,要在这条指令做完,也就是游标已经移到下一条指令时,才能看到IE2的变化;第二是,|= *** 作是只改埋扒败变UCA0RXIE对应位的此仔,只有相关的位改变,弯颤而如果原来就已经是这个值,它就不会发生改变。
OUT_7模式应该是到搏漏CCR1的时候复位然后到CCR0的时候置位触发中断。你的CCR1和CCRO只是差了1.不解。难道因为1就忽略不计了么?
所以周期是(1/375)*(1/32768).默认的32768HZ.
你的触发AD是不是孙枝在TB的中断函数里,
CCRO,CCR1是个值,程序运行后,TBR开则银敏始计数,增计数模式下到CCRO产生CCIFG0.然后CCRO计数到0,产生TBIFG,产生中断。书上是这么说的。所以不是计数到CCR1触发的中断。我的认为。
你的程序也没说是什么计数模式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)