//-AD模块时钟输入分频值-
#defineADCS_DIV2(0<<4)
#defineADCS_DIV8(1<<4)
#defineADCS_DIV32(2<<4)
#defineADCS_RC(3<<4)
#defineADCS_DIV4(4<<4)
#defineADCS_DIV16(5<<4)
#defineADCS_DIV64(6<<4)
#defineADCS_RC2(7<<4)
//--AD通道选择------
#defineADC_Chanel0(0x00<<2)
#defineADC_Chanel1(0x01<<2)
#defineADC_Chanel2(0x02<<2)
#defineADC_Chanel3(0x03<<2)
#defineADC_Chanel4(0x04<<2)
#defineADC_Chanel5(0x05<<2)
#defineADC_Chanel6(0x06<<2)
#defineADC_Chanel7(0x07<<2)
#defineADC_Chanel8(0x08<<2)
#defineADC_Chanel9(0x09<<2)
#defineADC_Chanel10(0x0A<<2)
#defineADC_Chanel11(0x0B<<2)
//*************************************
// 函数名称:PicAd_Init
// 函数功能:ad初始化
// 入口参数:AD模块时钟输入分频值
// 出口参数:无
//
//***************************************
void PicAd_Init(uint8 Prsc)
{
ADCON0 = 0X71 ;//启动AD电路 不接任何通道
ADCON1 = Prsc ;//转换结果左对齐 V-到GND V+到VDD
}
//*************************************
// 函数名称:AdcSwitch
// 函数功能:转换某一通道的AD值
// 入口参数:AD通道选择
// 出口参数:无
//***************************************
void AdcSwitch(uint8 Chanal)
{
ADCON0 = (ADCON0 & 0x83) | Chanal ;
asm("nop");asm("nop");asm("nop");asm("nop");
asm("nop");asm("nop");asm("nop");asm("nop");
GO_nDONE = 1 ; //启动转换
while((ADCON0 & 0x02) != 0) ;
}
//----应用实例----------------------------
// ADC模块初始化
PicAd_Init(ADCS_DIV32) ;//AD模块时钟输入频率 数据左对齐
//转换通道0
AdcSwitch(ADC_Chanel0) ;//ADRESH ADRESL
Tmp = ADRESH ; //提取高8位数据