//EX14AVR ATmega8A 模拟比较器//author:QI小米粥//data:2018.3.17#include#includevoid init_io(void)
{
DDRB |=BIT(1);//设置为输出
DDRD &=~BIT(7);//AIN1设置为输入
PORTD |=BIT(7);//上拉电阻
DDRD &=~BIT(6);//AIN0设置为输入
PORTD |=BIT(6);//上拉电阻
SFIOR &=~BIT(2);
}
void init_ac(void)
{
SFIOR &=~BIT(3); //选择AIN1作为VIN-
ACSR &=~BIT(6); //选择内部的间隙电压源2.56V可能不是很准,0不用AIN0作为VIN+
ACSR &=~BIT(1); //比较中断产生在反转
ACSR &=~BIT(0);
ACSR &=~BIT(2);//AC和TC1的输入捕捉之间没有什么关系
ACSR |=BIT(3);//模拟比较器中断使能
ACSR &=~BIT(7);//模拟比较器供电
SREG |=BIT(7);//开全局中断
}
void main(void)
{
int a;
init_io();
init_ac();
while(1)
{
a=ACSR & BIT(5);//读ACO//两个&会让PORTB量
if(a)
{PORTB |=BIT(1);}
if(~a)
{PORTB &=~BIT(1);}
}
}
网友评论