2015-02-10 72 views
1

我是一位PIC編程新手,需要一些關於我是否正確使用我的代碼的建議。我正在寫一個函數,它從端口7讀取輸入值(0-5V)並返回基於(0-6.5V)的電壓值。PIC 16F1788讀電壓

這是我到目前爲止有:

float measure(void) { 

    do { 
     ADCON1= 0x00; // configure ports as AD 
     buffer.vol = ADC_Read(7); // reads value from port 7 
     Real = (buffer.vol/5)*6.5; // converts it to voltage between 0 -6.5v 
    } while(1); 
} 

這是否看起來是正確的?我需要改變什麼嗎?

+3

回覆帖子後,請不要刪除它的90%。留下它讓其他人可能受益。 – chux 2015-02-11 20:28:13

+2

sam brosteain,這是您的帖子在刪除大部分內容後第二次回滾。如果你想要做的不是模糊你自己的帖子,請留下評論。 – chux 2015-02-11 21:19:18

回答

1

您不需要重新配置循環內的引腳。啓動配置應在main開始時進行。

ADC_Read不返回浮點值;你需要自己轉換它。對於一個12位ADC,可以有

const float conversion_factor = 6.5f/((1 << 12) - 1); 

,然後做

​​

目前還不清楚是什麼buffer是。除非由於某種原因您需要保存未縮放的電壓,否則不要。

+0

我有一個問題,你不介意(1 << 12),因爲在圖片中有12個不同的I/O端口?謝謝 – 2015-02-10 15:35:28

+1

(1 << 12)是因爲它是一個12位的ADC。 – Robert 2015-02-10 16:17:07