- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2024-05-02 21:48:56
高级会员
- 积分
- 614
|
发表于 2024-11-19 19:56:58
|
显示全部楼层
以上是调试代码,试了其他时钟和ADC时序配置都一样,靠近DC-DC后出现偶发输出零值,IC地线连接可靠,增加电源和输入滤波调试没有改善.
========================
//启动ADC
P_SW2 |= 0x80;
ADC_CONTR = 0x80;
//ADCTIM = 0x2f;
ADCTIM = 0xff; //设置ADC内部时序
P_SW2 &= 0x7f;
ADCCFG = RES_FMT + ADC_SPEED;
//ADCCFG = 0x2f; //设置ADC时钟为系统时钟
========================
//读取ADC
int ADC_Read(u8 ch)
{
u16 adc_value[10],i;
for(i = 0 ; i < 10 ; i++)
{
ADC_CONTR = (ADC_CONTR & 0xf0) | 0x40 | ch ; //启动AD转换+通道
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20)); //查询ADC完成标志
ADC_CONTR &= ~0x20; //清完成标志
adc_value[i]= ((ADC_RES << 8) | ADC_RESL);
}
if(ch != 15)
{
for(i = 0 ; i < 10 ; i++)
{
uart_send(adc_value[i]+1);
SBUF = 0X2C ;
Delay10ms();
}
SBUF = 0X0D ;
Delay10ms();
SBUF = 0X0A ;
Delay10ms();
}
return(adc_value[7]);
}
|
|