自己写的,比较简单,不知道是否合你意
#include "ADC.h"
void FVR_Init(void)
{
FVRCON B7H; //使能固定参考电压
FVRCON B5H; //温度指示器使能
FVRCON B4H; //温度指示器范围选择位
FVRCON &=(0xFF<<2); //清零ADC参考电压
FVRCON |=FVR_4096; //配置ADC参考电压
while(!(FVRCON & 1<<6)); //等待参考电压稳定
}
void ADC_Init(void)
{
FVR_Init(); //内部参考电压初始化
TRISC B7H; //禁止端口输出驱动器
TRISC B6H;
ANSELC B7H; //禁止数字输入缓冲器
ANSELC B6H;
ADREF=VREF_VDD; //参考电压选择
ADCON0 B7H; //使能ADC
ADCON0 B4H; //由FRC专用振荡器提供时钟
ADCON0 B2H; //结果右对齐,即12位结果
}
void ADC_Start(unsigned char in)
{
ADPCH=in;
ADCON0 B0H; //启动转换
}
unsigned short ADC_Read(void)
{
unsigned short adc_data;
while(ADCON0&1); //等待转换完成,不用清零标志位
adc_data=ADRESH;
adc_data<<=8;
adc_data=adc_data+ADRESL;
return adc_data;
}
|