wangyifan 发表于 2024-7-7 11:01:25

STC8051U的ADC是12位的我测的怎么是16位的,是不是程序有问题?

硬件是STC12LE5A48S2的,现在用STC8051U-34K64替换,ADC采集不对,数值感觉是16位的。
//================================
void    ADC_config(void)
{
    ADC_CONTR = 0xc0 | C_H;   //ADC on + channel
    ADCCFG = 0x0f;
    ADCTIM = 0x3f;
    EADC = 1;         //允许ADC中断
         
}
//========================================================================
// 函数: void ADC_ISR (void) interrupt ADC_VECTOR
// 描述: ADC中断函数
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2018-4-1
// 备注:
//========================================================================
void ADC_ISR (void) interrupt ADC_VECTOR
{
    ADC_FLAG=0;       //清除中断标志
    adc = (ADC_RES<<8)|ADC_RESL; //读取ADC值
    if(C_H==3)
                {
      ADC4=adc;
      ADC_RES = 0;
      ADC_RESL = 0;      
                        C_H=4;
                        
                }
          elseif(C_H==4)
    {
       adc_sum = adc;
       B_ADC_OK = 1;
       ADC_RES = 0;
       ADC_RESL = 0;                                       
       C_H=3;                        
      
    }
               ADC_CONTR = 0xc0 | C_H;
}

wangyifan 发表于 2024-7-7 12:14:30

wnagming 发表于 2024-7-7 11:25
你的ADC配置的是左对齐,最后4或6位恒定为0

谢谢!改成2F对了。
页: [1]
查看完整版本: STC8051U的ADC是12位的我测的怎么是16位的,是不是程序有问题?