ATmega128 A/D 学习

来源:互联网 发布:nba 东西部实力 知乎 编辑:程序博客网 时间:2024/05/23 13:22
#include <avr/io.h>        
#include <util/delay.h>
#include <avr/interrupt.h>   //中断函数头文件

//函数声明
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
}
原创粉丝点击