MPLAB X IDE 环境,编译器用xc8
pic12f675 芯片
GP1用作ADC输入,下面的程序调了3天没调通,返回的数据总是0或者0xffff,不知道问题在哪了
unsigned int ADCRead()
{
unsigned int temp;
ADON=1;
GO_nDONE=1; //adc start
while(GO_nDONE);
temp=ADRESH<<8+ADRESL;
return(temp);
}
void ADCInit()
{
TRISIO1=1;//ADC //GP1输入
ADCON0=0b10000100; //右对齐,AN0
ANSEL =0b00010010; //Fosc/8
}
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
首先这句:temp=ADRESH<<8+ADRESL;要强制转换成int格式的
我给个例程吧(这是PIC16F887的):
/*---------------------------------------------
函数名: uint16_t adc10_conv(uint8_t ad_ch)
描述: AD转换函数(10位结果)
输入: 要进行转换的通道
输出: 转换后的数据
---------------------------------------------*/
uint16_t adc10_conv(uint8_t ad_ch)
{
uint16_t ad_value;
ADFM = 1; //结果右对齐
ADCON0 = ad_ch; //
ADON = 1; //打开AD模块
delay_5us;
GO = 1; //启动转换
while(GO) ; //等待转换完成
GO = 1; //启动转换
while(GO) ; //等待转换完成
ADON = 0; //关闭AD模块
ad_value = (uint16_t)(ADRESL | (ADRESH << 8)); //注意是10位的转换精度 value、temph应为unsigned int 变量
return(ad_value);
}
一周热门 更多>