ATmega128 A/D 學(xué)習(xí)
#include
#include
#include //中斷函數(shù)頭文件
//函數(shù)聲明
void Port_Init(void); //端口初始化配置
void Compare_Init(void);//模擬比較器初始化設(shè)置
int main(void)
{
Port_Init();
Compare_Init();
DDRA=0XFF;
PORTA=0X00;//設(shè)置低電平,讓所有燈亮
sei(); //使能全局中斷
while(1)
{
if(ACSR & (1 << ACO)) //判斷ADC0的電壓是否大于1.22V
{
PORTA = 0X01; //低于1.22V,D1點(diǎn)亮,
}
else
{
PORTA = 0X02; //高于1.22V,D2點(diǎn)亮,
}
}
}
//端口狀態(tài)初始化設(shè)置函數(shù)
void Port_Init()
{
//PORTF = 0X00;
DDRF |= (1 << PF1) | (1 << PF0); //PF0、PF1(代表滑動(dòng)變阻器)設(shè)置為輸出
}
//模擬比較器初始化函數(shù)
void Compare_Init()
{
SFIOR |= (1 << ACME);//使用ADC多路復(fù)用器選擇ADC的模擬輸入端口
//作為模擬比較器反向輸入端的信號(hào)源。
//同時(shí)選擇ADC的ADC0作為輸入端,并且關(guān)閉AD轉(zhuǎn)換的使能
ACSR |= (1 << ACBG); //允許模擬比較器,AIN0設(shè)置為內(nèi)部固定能隙參考電源1.22V
}