在學習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部分。
有哪些地方沒說清楚的可以再補充,希望有人幫幫我呀,不勝感激!!!!!
|