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

📄 adc.c

📁 包括力天电子MINI 16板的各项程序
💻 C
字号:
#include <avr/io.h>
#include <avr/interrupt.h>
#include "adc.h"
#include "key.h"

#define MaxAdcBufSize 9
#define AdcBufStep 3

static volatile unsigned int ADCBuffer[MaxAdcBufSize];

/********************************************************
ADC初始化
********************************************************/
void InitADC(void)
{ 
	ADMUX |= (1<<REFS1)|(1<<REFS0);
	ADCSRA |= (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
	//ADC使能;ADC开始转换;连续转换;中断使能;128分频
}

/********************************************************
读取ADC
********************************************************/
unsigned int ReadADC(void)
{ 
	return ADCBuffer[0];
}

/********************************************************
ADC转换完成中断
********************************************************/
SIGNAL(SIG_ADC)
{ 
	unsigned char i;
	unsigned int tmp,sum = 0;
	tmp = ADC;
	
	for(i=1;i<MaxAdcBufSize - 1;i++)
	{
		ADCBuffer[i] = ADCBuffer[i+1];
		sum += ADCBuffer[i];
	}
	ADCBuffer[MaxAdcBufSize - 1] = tmp;
	sum += ADCBuffer[MaxAdcBufSize - 1];
	ADCBuffer[0] = (sum >> AdcBufStep);
}

⌨️ 快捷键说明

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