找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2113|回復: 3
打印 上一主題 下一主題
收起左側

請教一個關于單片機C程序if(ADC_3>5.0)判斷的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:275095 發(fā)表于 2018-5-14 17:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
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()函數(即ADC檢測電壓)正常,即ADC_3,ADC_4,ADC_5的值會小于5.0
特殊情況:ADC_Convert()函數(即ADC檢測電壓)不正常,ADC_3,ADC_4,ADC_5的值會大于5.0,
                用一個if(ADC_3>5.0)來判斷,當大于5.0時就跳出,即table[3]保存應該是上次的值,
                但發(fā)現,符合if()判斷時,table[]的值會變?yōu)?。
這不得其解,求教各位???

評分

參與人數 2黑幣 +15 收起 理由
yzw1224 + 5 很給力!
cciejs12345 + 10 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 2018-5-15 09:27 | 只看該作者
當一個無符號字符型數據a=0;a--;那么a的值就是0xff。所以用一個if(ADC_3>5.0)來判斷,當大于5.0時就可以理解為if((ADC_3>5.0)||(ADC_3<0)),都是表示超出測量范圍,測量結果丟棄。
回復

使用道具 舉報

板凳
ID:330198 發(fā)表于 2018-5-15 10:46 | 只看該作者
你這個tab[]默認是空的,你在程序里沒有寫保存上一次的數據語句,所以不會保存的。
回復

使用道具 舉報

地板
ID:275095 發(fā)表于 2018-5-15 11:45 來自觸屏版 | 只看該作者
zhanghyg 發(fā)表于 2018-5-15 10:46
你這個tab[]默認是空的,你在程序里沒有寫保存上一次的數據語句,所以不會保存的。

如果想實現不滿足要求,就保存上次的值,改如何寫?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表