📄 adc.c
字号:
#include <iom8v.h>
#include <macros.h>
#define Vref 4995//参考电压值
unsigned int adc_rel=0;//AD转换结果
unsigned char adc_mux=0;//AD通道,默认为0通道
void adc_init(void)//ADC初始化,并启动AD转换
{DDRC=0x00;
PORTC=0x00;
ADCSRA = 0x00;
//状态控制寄存器复位
ADMUX =(1<<REFS0)|(adc_mux&0x0f);
//选择内部AVCC为基准,并选取当前转换通道(转换为0~7)
ACSR =(1<<ACD);
//关闭模拟比较器(使用ADC时必须关断)
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;
//允许AD转换,启动AD转换,开启AD转换中断,64预分频
}
#pragma interrupt_handler adc_isr:iv_ADC //ADC完成中断
void adc_isr(void)
{adc_rel=ADC&0x3ff;
//摒除高位数据,10位转换
ADMUX=(1<<REFS0)|(adc_mux&0x0f);
//选择内部AVCC为基准,并选取当前转换通道(转换为0~7)
ADCSRA|=(1<<ADSC);
//启动AD转换
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -