Proteus 仿真pic18单片机 总提示adc 转换时间违反规定,单片机时钟设置为16M,adc转换相关代码如下,求大神指教,我自己检查没发现错误
//============AD初始化程序============
void AD_init()
{
//RA0设置为输入
TRISAbits.TRISA0=1;
PORTAbits.RA0=0;
//-- ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE —— ADON
//-- 1 0 0 0 0 0 0 1
//选择通道0(AN0),AD上电
ADCON0=0x81;
//-- ADFM ADCS2 —— —— PCFG3 PCFG2 PCFG1 PCFG0
//-- 1 0 0 0 1 1 1 0
//右对齐(ADRESH寄存器的高6位读作0),AN0为模拟输入位,参考正负电压分别为VDD和VSS
ADCON1 = 0xce;
}
//============AD转化程序============
unsigned int AD_Trs()
{
unsigned int adval;
float advalf;
ADGO = 1; //启动AD转化
while(ADGO); //说明AD转化完成
adval = ADRESH;
adval = adval<<8|ADRESL;
advalf = adval/1023.0*5.0; //因为参考电压为5伏
adval = advalf*1000; //转化为整数,以便显示
return (adval);
}
|