新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ATmega8的模拟比较器的总结

ATmega8的模拟比较器的总结

作者:时间:2012-08-02来源:网络收藏

1、当ACBG=1时,使用内部能隙(1.23V)做AIN0端的电压,ACME=0、ADEN=0时外界电压作AIN1端的电压。当外界电压小于1.23V时,红灯亮。否则,绿灯亮。段初始化程序设计:
void ac_init(void)
{
//{{WIZARD_MAP(Analog Comparator)
// Interrupt on Output Toggle
// Bandgap Enabled
// Multiplexer Disabled
ACSR = 0x48;
SFIOR |= 0x0;
//}}WIZARD_MAP(Analog Comparator)
}

ISR(SIG_COMPARATOR)
{
// TODO: Add your code here
if(ACSR _BV(ACO))
{
SET_RED_LED;
CLR_GRE_LED;
}
else
{
CLR_RED_LED;
SET_GRE_LED;
}
}

2、不使用内部的能隙的AIN0、AIN1两端口都直接接外界的电压,直接比较外部的两个电压的状况。当AIN0AIN1时,绿灯亮。否则,红灯亮。段初始化程序设计:
void ac_init(void)
{
//{{WIZARD_MAP(Analog Comparator)
// Interrupt on Output Toggle
// Bandgap Enabled
// Multiplexer Disabled
ACSR = 0x08;
SFIOR |= 0x0;
//}}WIZARD_MAP(Analog Comparator)
}

ISR(SIG_COMPARATOR)
{
// TODO: Add your code here
if(ACSR _BV(ACO))
{
SET_RED_LED;
CLR_GRE_LED;
}
else
{
CLR_RED_LED;
SET_GRE_LED;
}
}

3、模拟比较器的AIN0端接外部电压,AIN1端接模数转换的多路输入端,对两端口的状态的比较。模拟比较器负极输入使用参考表:

当AIN0AIN1时,绿灯亮。否则,红灯亮。模拟比较器段初始化程序设计:
void ac_init(void)
{
//{{WIZARD_MAP(Analog Comparator)
// Interrupt on Output Toggle
// Bandgap Enabled
// Multiplexer Disabled
ACSR = 0x08;
SFIOR |= 0x08;
ADCSRA=0x00;
ADMUX=0x00;
//}}WIZARD_MAP(Analog Comparator)
}

ISR(SIG_COMPARATOR)
{
// TODO: Add your code here
if(ACSR _BV(ACO))
{
SET_RED_LED;
CLR_GRE_LED;
}
else
{
CLR_RED_LED;
SET_GRE_LED;
}
}



评论


相关推荐

技术专区

关闭