基于SC92F7251开发的ADC代码,因为
,所以公式中的4096就是这么来的(2的12次方)
float VCC = 2.40;//这里要看烧录软件的选择而变动
enum Pin {AIN0=0,AIN1,AIN4=4,AIN5,AIN6,AIN7,AIN8,AIN9,VDD4=15};//枚举
void ADC_Init(uint Pin)
{
ADCCON = 0x80|Pin;
if(Pin<8)
{
ADCCFG0 = 1<<Pin; //设置Channel作为采样口
}
else
{
ADCCFG1 = 1<<(Pin-8); //设置Channel作为采样口
}
}
float ADC_Test(void)
{
float ADC_Sum = 0, ADC_Value = 0, Max = 0, Min = 5000;
uchar t=0;
for(t=0;t<10;t++) //转换10次
{
ADCCON |= 0x40; //开始转换
while(!(ADCCON&0x10)); //等待 ADC 转换完成
ADCCON &= ~(0x10); //清除标志位
// ADC_Value = ADCVH*16 + ADCVL/16; //与移位是一样的效果
ADC_Value = (ADCVH<<4) + (ADCVL>>4);
if(ADC_Value >= Max)Max = ADC_Value; //获取最大值
if(ADC_Value <= Min)Min = ADC_Value; //获取最小值
ADC_Sum = ADC_

本文介绍了基于SC92F7251微控制器进行ADC开发的经验,详细阐述了如何根据烧录软件的Vref设置(如2.4V或VDD)调整代码中的VCC参数,以确保被比较电压不超过限制。对于Vref设为2.4V的情况,代码中的电压上限为2.39V;若设为VDD(5.00V),则电压限制不同。

250

被折叠的 条评论
为什么被折叠?



