📄 adc._c
字号:
/******************************************/
/* 广州天河双龙电子公司 */
/* http://www.sl.com.cn */
/* ADC驱动程序 */
/* 作者:ntzwq@wx88.net */
/* 2002年5月11日 */
/* 目标MCU:MEGA8 晶振:外部(EXT) 8MHZ */
/******************************************/
#include<iom48v.h>
unsigned int adc_rel;//AD转换结果
unsigned char adc_mux;//AD通道
extern unsigned int adc_old;
/* 微秒级延时程序 */
void delay_us(int time)
{
do
{
time--;
}
while (time>1);
}
/* 毫秒级延时程序 */
void delay_ms(unsigned int time)
{
while(time!=0)
{
delay_us(1000);
time--;
}
}
//ADC初始化
void adc_init(void)
{
DDRC=0x00;
PORTC=0x00;
ADCSRA = 0x00;
ADMUX =(1<<REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准
ACSR =(1<<ACD);//关闭模拟比较器
ADCSRB=0;
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
}
//ADC完成中断
#pragma interrupt_handler adc_isr:22
void adc_isr(void)
{
static unsigned i;
adc_rel+=ADC&0x3ff;
ADMUX=(1<<REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准
ADCSRA|=(1<<ADSC);//启动AD转换
if (i<63)
i++;
else
{
adc_old=adc_rel/64;//64点平均滤波
i=0;
adc_rel=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -