测试代码如下,(包括三路ADC的初始化、三路ADC数据串口打印) //adc.c文件代码:
#include "bsp/adc.h"
//ADC转换完成标志位
bit AdcFlag = 0;
/*****************************************************
*函数名称:void ADC_Init(unsigned int Channel)
*函数功能:ADC初始化
*入口参数:Channel
*出口参数:void
*****************************************************/
void ADC_Init(unsigned int Channel)
{
ADCCON = 0X80|Channel;//开启ADC,ADC采样频率为2M ,选择Channel位ADC采样口
if(Channel<8)
{
ADCCFG0 = 1<<Channel; //设置Channel作为采样口
}
else
{
ADCCFG1 = 1<<(Channel-8); //设置Channel作为采样口
}
IE |= 0X40; //开启ADC中断
EA = 1;
}
/*****************************************************
*函数名称:unsigned int ADC_Read(void)
*函数功能:ADC读取数据
*入口参数:void
*出口参数:unsigned int
*****************************************************/
unsigned int ADC_Read(void)
{
ADCCON |= 0X40; //开始ADC转换
while(!AdcFlag); //等待 ADC转换完成;
AdcFlag = 0;
return (ADCVH<<4)+(ADCVL>>4);
}
/*****************************************************
*函数名称:ADC_Interrupt(void) interrupt 6
*函数功能:ADC中断函数
*入口参数:void
*出口参数:void
*****************************************************/
void ADC_Interrupt(void) interrupt 6
{
ADCCON &= ~(0X20); //清中断标志位
AdcFlag = 1;
}
|