专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

ATmega8的模拟比较器的总结

作者:佚名   来源:本站原创   点击数:  更新时间:2012年04月01日   【字体:

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两端口都直接接外界的电压,直接比较外部的两个电压的状况。当AIN0<AIN1时,绿灯亮。否则,红灯亮。模拟比较器段初始化程序设计:
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端接模数转换的多路输入端,对两端口的状态的比较。模拟比较器负极输入使用参考表:
 
当AIN0<AIN1时,绿灯亮。否则,红灯亮。模拟比较器段初始化程序设计:
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;
        }
}

关闭窗口

相关文章