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;
} wnagming 发表于 2024-7-7 11:25
你的ADC配置的是左对齐,最后4或6位恒定为0
谢谢!改成2F对了。
页:
[1]