我是PIC编程的新手,需要一些关于我是否与我的代码走在正确轨道上的建议。我正在编写一个函数,从端口7读取输入值(0-5V)并返回一个基于(0-6.5V)的电压值。
这是我到目前为止所做的:
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);
}
这看起来是否正确?我需要改变什么吗?
答案 0 :(得分:1)
您无需在循环内重新配置引脚。启动配置应在main
的开头进行。
ADC_Read
不返回浮点值;你需要自己转换它。对于12位ADC,您可以
const float conversion_factor = 6.5f / ( ( 1 << 12 ) - 1 );
然后再做
Real = ADC_Read(7) * conversion_factor;
目前尚不清楚buffer
的用途。除非您出于某种原因需要保存未缩放的电压,否则不要。