pic16f1829 c语言,PIC16F1829 ADC初始化及应用

//-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位数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值