void get_adc() //获取ADC采锋雀样值求平均
{
static int cnt = 0//用于计数
static int sum = 0
if(cnt==SET_CNT)
{
ADC_value = sum/cnt;
sum = 0
cnt = 0
}
else
{
start_ADC();//开始转换
tmp = read_ADC()//读取ADC采样值
tmp = tmp +tmp
cnt++
}
}
AMX0SL是一个寄存器,用尺慧槐来选择ADC转换的通道,而channel是函数传过来的通道号,ADC0INT是ADC0中断标志位,因为下边要用软件查询的方式进行判断转换完成,所以这里要清0。ADC0的软件启动方式有定时器启动和向ADC0BUSY位写1等方式启动,下边的就是等待ADC0转换结束,因为转换结束后ADC0INT会由硬件置1,当为0时,说明未完成转换,程序会一直执行while,直到转换结束后跳出,然后就是读取转换的结果了,c8051的ADC0是12位ad,所以转换的结果陵友会存到两个寄存器里边ADC0H存放高4位,ADC0L存放低8位。高4位乘碧蚂256加上低8位就是最终的转换结果,最后再把结果返回。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)