在学习430AD采样的部分,在提供的学习代码上修改的,想要根据AD采样得到的电压值不同执行不同的操作。
while(1)
{
LPM1;
average = average * 3;
if(average>0x0003)
{
Trans_val(average,buffer);
buffer[3] = buffer[2];
buffer[2] = buffer[1];
buffer[1] = 0x2e - 0x30;
for(i = 0; i < 4; i++)
buffer[i] += 0x30;
PutString0("The analog value is: ");
PutString(buffer);
}
else
{
Hex2Dec(average,buffer);
for(i = 0; i < 4; i++)
buffer[i] += 0x30;
PutString0("The digital value is: ");
PutString(buffer);
}
}
/*******************************************
函数名称:ADC12ISR
功 能:ADC中断服务函数,在这里用多次平均的
计算P6.0口的模拟电压数值
参 数:无
返回值 :无
********************************************/
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
static uchar index = 0;
results[index++] = ADC12MEM0; // Move results
if(index == Num_of_Results)
{
uchar i;
average = 0;
for(i = 0; i < Num_of_Results; i++)
{
average += results[i];
}
average >>= 5; //除以32
index = 0;
tcnt++;
if(tcnt == 250) //主要是降低串口发送速度
{
LPM1_EXIT;
tcnt = 0;
}
}
}
前面就是一些初始化的东西,现在的问题是,不管采样得到的电压值是多少,都只会执行if语句的内容,不会执行else部分。
有哪些地方没说清楚的可以再补充,希望有人帮帮我呀,不胜感激!!!!!
|