pic 18f45k80 AD转换模块代码

void Adc_Init(void)
{
	TRISA |= 0x02;							// RA1设置为输入
	ANCON0bits.ANSEL1 = 1;					// RA1设置值模拟信号
	ADCON2bits.ADFM = 1;					// 右对齐
	ADCON2bits.ACQT = 1; 					// Acquisition time 7 = 20TAD 2 = 4TAD 1=2TAD
	ADCON2bits.ADCS = 2; 					// Clock conversion bits 6= FOSC/64 2=FOSC/32

	ADCON1bits.VCFG0 = 0; 					// Vref+ = AVdd
	ADCON1bits.VCFG1 = 0; 					// Vref+ = AVdd
	ADCON1bits.VNCFG = 0; 					// Vref- = AVss

	// Select ADC channel-1
	ADCON0bits.CHS0 = 1;
	ADCON0bits.CHS1 = 0;
	ADCON0bits.CHS2 = 0;
	ADCON0bits.CHS3 = 0;
	ADCON0bits.CHS4 = 0;
	
	ADCON0bits.ADON = 1; 						// Turn on ADC
}



u16 GetAdc_Value(void)
{
	u8 i;
	u16AdValueH1 = 0;


	ADCON0bits.GO_NOT_DONE = 1;									 GO/DONE =  1;
	while(ADCON0bits.GO_NOT_DONE);								/// 
	u16AdValueH = ADRESH;
	u16AdValueL = ADRESL;


	/// 移位运算易出现未知错误,用以下方式提取高位数据
	while(u16AdValueH > 0)
	{
		u16AdValueH1 += 256;
		u16AdValueH--;
	}
	
	u16AdValue = (u16AdValueH1 + u16AdValueL);
	return (u16AdValue);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值