ATmega128 A/D 学习
扫描二维码
随时随地手机看文章
#include
#include
#include //中断函数头文件
//函数声明
void Port_Init(void); //端口初始化配置
void Compare_Init(void);//模拟比较器初始化设置
int main(void)
{
Port_Init();
Compare_Init();
DDRA=0XFF;
PORTA=0X00;//设置低电平,让所有灯亮
sei(); //使能全局中断
while(1)
{
if(ACSR & (1 << ACO)) //判断ADC0的电压是否大于1.22V
{
PORTA = 0X01; //低于1.22V,D1点亮,
}
else
{
PORTA = 0X02; //高于1.22V,D2点亮,
}
}
}
//端口状态初始化设置函数
void Port_Init()
{
//PORTF = 0X00;
DDRF |= (1 << PF1) | (1 << PF0); //PF0、PF1(代表滑动变阻器)设置为输出
}
//模拟比较器初始化函数
void Compare_Init()
{
SFIOR |= (1 << ACME);//使用ADC多路复用器选择ADC的模拟输入端口
//作为模拟比较器反向输入端的信号源。
//同时选择ADC的ADC0作为输入端,并且关闭AD转换的使能
ACSR |= (1 << ACBG); //允许模拟比较器,AIN0设置为内部固定能隙参考电源1.22V
}