標題: 請教一個關(guān)于單片機C程序if(ADC_3>5.0)判斷的問題 [打印本頁]

作者: yy005566    時間: 2018-5-14 17:40
標題: 請教一個關(guān)于單片機C程序if(ADC_3>5.0)判斷的問題
unsigned int table[];             //全局變量
float ADC_3,ADC_4,ADC_5;   //局部變量

for(value=3;value<6;value++)
     {
         switch(value)
         {        
             case 3:ADC_Channal(3); ADC_3=ADC_Convert(); if(ADC_3>5.0)break;table[3]=ADC_3*196.8/30.3;break;
             case 4:ADC_Channal(4); ADC_4=ADC_Convert(); if(ADC_3>5.0)break;table[4]=ADC_4*196.8/30.3;break;   
             case 5:ADC_Channal(5); ADC_5=ADC_Convert(); if(ADC_3>5.0)break;table[5]=ADC_5*196.8;break;      
         }
}

程序目的
通常情況:ADC_Convert()函數(shù)(即ADC檢測電壓)正常,即ADC_3,ADC_4,ADC_5的值會小于5.0
特殊情況:ADC_Convert()函數(shù)(即ADC檢測電壓)不正常,ADC_3,ADC_4,ADC_5的值會大于5.0,
                用一個if(ADC_3>5.0)來判斷,當大于5.0時就跳出,即table[3]保存應(yīng)該是上次的值,
                但發(fā)現(xiàn),符合if()判斷時,table[]的值會變?yōu)?。
這不得其解,求教各位???

作者: wulin    時間: 2018-5-15 09:27
當一個無符號字符型數(shù)據(jù)a=0;a--;那么a的值就是0xff。所以用一個if(ADC_3>5.0)來判斷,當大于5.0時就可以理解為if((ADC_3>5.0)||(ADC_3<0)),都是表示超出測量范圍,測量結(jié)果丟棄。
作者: zhanghyg    時間: 2018-5-15 10:46
你這個tab[]默認是空的,你在程序里沒有寫保存上一次的數(shù)據(jù)語句,所以不會保存的。
作者: yy005566    時間: 2018-5-15 11:45
zhanghyg 發(fā)表于 2018-5-15 10:46
你這個tab[]默認是空的,你在程序里沒有寫保存上一次的數(shù)據(jù)語句,所以不會保存的。

如果想實現(xiàn)不滿足要求,就保存上次的值,改如何寫?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1