#include"msp430g2553.h"
unsigned int a[32],b[8];
unsigned int i,j;
float v[8];
void main(void) {
WDTCTL=WDTPW+WDTHOLD;
// P1OUT=0;
ADC10CTL0|=ADC10ON+ADC10IE+REFON+REF2_5V+SREF_1+MSC+ADC10SHT_2;//取内部参考电压2.5V,使采样时间为16xADC10CLK,
//增大采样时间以保证采样的准确性;
ADC10CTL1|=INCH_7+CONSEQ_3;//最大采样通道为P1^7,采用序列多次采样的模式,INCH_X决定了采样通道为AX~A0;
ADC10DTC1|=0X20;//一共采样32次
ADC10AE0|=0XFF;//使能通道A7~A0;
// P1DIR=BIT0+BIT6;
while(1)
{
ADC10CTL0&=~ENC;//关闭采样使能
while(ADC10CTL1&ADC10BUSY);//判断是否有采样或转换动作
ADC10CTL0|=ADC10SC+ENC;//开始采样
ADC10SA=(unsigned int )a;//将组数a的首地址作为采样的起始地址,首先是对A7~A0依次采样放入数组a【0】~a[7]中,在循环对A7~A0依次采样,放入数组a【8】~a【15】
//中,以此类推,向下循环直到32次结束
__bis_SR_register(LPM0_bits+GIE);//关闭CPU,开启总中断
for(i=0;i<8;i++)
{
b
=0;
for(j=0;j<4;j++)
{
b+=a[i+j*8];
}
}
for(i=0;i<8;i++)
{
b=b/4;//取4次采样的平均
v=b*25;
v=(v/1023)/10;//转化为电压值
}
// if(v[6]>1)a
// P1OUT^=BIT6;
// else
// P1OUT^=BIT0;
}
}
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
LPM0_EXIT;//退出CPU中断
}
我的理解程序是这样对应的。
但是实测发现是这样对应的。
求指点一下 是不是程序问题?
此帖出自小平头技术问答
一周热门 更多>