⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.c

📁 基于c8051f020的应用
💻 C
字号:
//**************************************************************************************************************************
#include <c8051F020.h>
#include <stdio.h>
#include "HEAD.H"
//**************************************************************************************************************************
void ADC_Init(void)
{
	ADC0CN = 0xC0; 					// ADC0 Enable,正常跟踪模式, ,右对齐
	REF0CN = 0x02;                  // 基准电压由外部提供(2.5V),
    ADC0CF = (SYSCLK/2500000) << 3; // ADC转换时钟2.5MHz  
    ADC0CF &= ~0x07; 				// PGA增益 = 1
	//EIE2 |= 0x02;					// 使能ADC0中断
}
//**************************************************************************************************************************
unsigned int ADC_Average(unsigned char n) //返回采集n次ad的平均值,输入n为通道值,
{
   	xdata unsigned char i;
	xdata unsigned long temp_sum=0;

    if(n<10)
		AMX0SL = n;
	else
		AMX0SL = 0;
	
	AD0INT = 0;						//软件置零
	for(i = 0;i < 2;i++)
	{
		AD0BUSY = 1;					//启动转换,抛弃前5个数据	
	    while(AD0INT == 0);
		AD0INT = 0;
	}

	for(i = 0;i < SAM_NUM; i++)			//选用后20个数据
	{
		AD0BUSY = 1;
	    while(AD0INT == 0);
		temp_sum += (ADC0H*256+ADC0L);
		AD0INT = 0;

	}

	return temp_sum / SAM_NUM;
}
//**************************************************************************************************************************
void ADC_Work(void)
{
	xdata unsigned char i;
	xdata unsigned int ad[9];

	LED3_ON;

	for(i=0;i<9;i++)
	{
		ad[i]=ADC_Average(i);
		RTUaddress4[10+i*2]=ad[i]>>8;
		RTUaddress4[10+i*2+1]=ad[i];
	}
	
	LED3_OFF;
}
//**************************************************************************************************************************
// The End
//**************************************************************************************************************************



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -