- 打卡等级:初来乍到
- 打卡总天数:8
- 最近打卡:2025-08-23 11:14:05
已绑定手机
注册会员
- 积分
- 67
|
void AdcSetRate(void) //100KSPS@12.000MHz
{
ADCCFG &= ~0x0f;
ADCCFG |= 0x01; //SPEED(1)
ADCTIM = 0x2e; //CSSETUP(0), CSHOLD(1), SMPDUTY(14)
}
void ADC_Init(void)
{
P3M0 &= ~0x08; P3M1 |= 0x08; //配置P3.3为高阻输入
AdcSetRate(); //初始化ADC速度
ADC_CONTR |= 0x80; //打开ADC电源
}
uint ADC_Read(uchar no)
{
uint adcvalue = 0;
ADC_CONTR &= 0xf0; //清除低四位
ADC_CONTR |= no; //配置ADC通道
ADC_CONTR |= 0x40; //启动ADC转换
_nop_();
_nop_();
while(!(ADC_CONTR & 0x20)); //等待标志位
ADC_CONTR &= ~0x20; //清除标准位
adcvalue = (((uint)ADC_RES << 8) | ADC_RESL) >> 6; //读取ADC的值
return adcvalue;
}
void main()
{
ADC_Init();
Delay_Ms(1);
while(1)
{
ADC_Read(3);
}
}
这是我的ADC配置,芯片是STC8G1K08A,在采集ADC数据时,采集的数据0x80左右,但示波器上看,P3.3的模拟电压大约在130mV,计算得出的ADC值在0x28作用,寻求大佬帮助
|
|